实验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到复制代码长度这一段内存空间,结果如下所示: