实验1 8086汇编指令编码和调试
1.实验任务2
使用d命令后的截图:

使用e修改生产日期所在的存储单元后,再次用d命令查看:

使用后发现,存放生产日期的内存单元并没有发生改变,所以无法修改存放生产日期的内存单元。因为该段内存在ROM中,为只读存储器,无法进行修改。
2.实验任务3
第一步命令效果截图如下:

第二步命令效果截图如下:

修改内存单元或数据的效果截图如下:

3.实验任务4

填空结果如下: 022eh 022ch 022ah 0228h 022ah 022ch 022eh 0230h
问题一:栈顶逻辑地址:0020:0030 ;逻辑地址:00230h
问题二:

问题三:

问题四:

4.实验任务5
问题一:不是。指令mov sp, 30是紧跟着指令mov ss, ax执行的。
问题二:00220h~0022fh内存单元值的变化,说明CS和IP的值存在该内存单元内。
5.实验任务6
效果截图如下:

运用debug工具调试task6.exe后,效果截图:

前两个字节是CD 20。
6.实验任务7
补全后的完整代码
assume cs:code code segment mov ax, cs mov ds, ax mov ax, 0020h mov es, ax mov bx, 0 mov cx, 23 s: mov al, [bx] mov es:[bx], al inc bx loop s mov ax, 4c00h int 21h code ends end
第一空,因为将把 mov ax, 4c00h 之前的指令复制到内存0:200开始的 连续的内存单元,所以将代码段cs首地址存入寄存器ax中,所以第一空填入cs。
第二空,是代码段的长度。先暂时填入一个数运行代码,在debug中查看代码段长度,如下:

得知mov ax, 4c00h之前的代码长度为17h,转化为十进制为23,所以将23填入第二空中。
debug中g命令执行后效果截图如下:

使用u命令后效果截图如下:

7.实验总结
(1)在debug中,可以通过不同的命令来对内存单元进行操作,但对于只读存储器内的内容无法对其中的内存单元进行修改。
(2)寄存器cx中存储着代码段的长度。
(3)可以通过masm、link来对程序编译链接,从而运行;运用debug观察程序内存状态。
浙公网安备 33010602011771号