实验1 8086汇编指令编码和调试

2、实验任务二

(1)使用d命令查看生产时期,结果如下所示:

 

 

(2)使用e命令修改生产时期所在的内存单元,修改后,再次使用d命令查看,结果如下所示:

 

结论:ROM是只读存储器,无法改写其内容,e命令无法修改电脑内存中的生产日期数据。

 

3、实验三

(1)使用e命令修改内存单元的命令,结果如下所示:

 

(2)给出在debug中使用f命令批量填充内存单元的命令,结果如下所示:

 

(3)尝试修改内存单元或数据,结果如下所示:

 

 

4、实验四

(1)问题一:栈顶逻辑地址:0020:0030;物理地址:00230H。

(2)问题二:单步执行命令,得到结果如下所示:

 

(3)问题三: d命令 d 20:0 7 查看pop [0] 指令执行结束后数据空间内的数据变化,发现数据没有发生变化。得到结果如下所示:

 

(4)问题四:更改指令顺序,数据发生了变化,结果如下所示:

 

 

5、实验五:

(1)问题一:没有直接暂停,而是执行完后,指向下一条指令的地址。后面的指令mov sp, 30将在下一次使用 t 命令时执行。

(2)问题二:数据push入栈之前,栈空间存放的内容是下一条指令地址,在数据入栈后,下一条指令的地址仍然存放在栈中,随着数据的入栈,存放下一条指令的地址不断向栈顶偏移。

 

6、实验六

(1)问题一:新建task6.asm文件,使用masm、link对程序汇编链接,运行可执行程序task5.exe,结果如下所示:

(2)问题二:给出在debug中查看task5.exe的程序段前缀PSP的截图,结果如下所示:

 

 

7、实验七

(1)问题一:

补全代码:

assume cs:code
code segment
    mov ax, cs
    mov ds, ax
    mov ax, 0020h
    mov es, ax
    mov bx, 0
    mov cx, 17h
s: mov al, [bx]
    mov es:[bx], al
    inc bx
    loop s
    mov ax, 4c00h
    int 21h

code ends
end

 

答:第一个空填cs,表示cs:ip指向将要执行的指令。第二个空填17h,表示task7.asm中line3-line12的代码占据了17h的内存单元。

(2)问题二:给出使用g命令运行到指定点和使用u命令反汇编0:200到复制代码长度这一段内存空间,结果如下所示:

 

 

 

posted @ 2021-10-25 20:07  LBJHG  阅读(29)  评论(2编辑  收藏  举报