实验二
任务一:
用debug将一段程序段写入内存,逐条执行,根据情况填空
1.使用e命令修改要求写入的内存单元,并用d命令查看写入情况

成功向内存单元中写入数据
2.使用a命令输入任务给出的汇编指令

成功写入汇编指令
3.使用t命令分步调试程序
由于cs:ip初始状态下已经为我们所需执行汇编指令的地址,所以不需要进行cs:ip的改动
分步调试如下
①查看寄存器初始值

②开始分步调试


| 1 | mov ax,0021 | 0021 | 0000 | 073F | 0100 |
| 2 | mov ds,ax | 0021 | 0000 | 073F | 0100 |
| 3 | mov ax,2200 | 2200 | 0000 | 073F | 0100 |
| 4 | mov ss,ax | 2200 | 0000 | 2200 | 0100 |
| 5 | mov sp,0100 | 2200 | 0000 | 2200 | 0100 |
| 6 | mov ax,[0] | 3130 | 0000 | 2200 | 0100 |
| 7 | add ax,[2] | 6462 | 0000 | 2200 | 0100 |
| 8 | mov bx,[4] | 6462 | 3534 | 2200 | 0100 |
| 9 | add bx,[6] | 6462 | 6C6A | 2200 | 0100 |
| 10 | push ax | 6462 | 6C6A | 2200 | 00FE |
| 11 | push bx | 6462 | 6C6A | 2200 | 00FC |
| 12 | pop ax | 6C6A | 6C6A | 2200 | 00FE |
| 13 | pop bx | 6C6A | 6462 | 2200 | 0100 |
| 14 | push [4] | 6C6A | 6462 | 2200 | 00FE |
| 15 | push [6] | 6C6A | 6462 | 2200 | 00FC |
任务二:
按照要求进行操作,思考2000:0~2000:f中内容变化的原因
1.用a命令输入汇编指令,用e命令修改2000:0~2000:f的值,用d命令进行查看修改后的内存单元值

可以看到,我们已经成功将2000:0~2000:f的值修改为了0.
2.进行两步编译后查看内存单元值是否发生改变

实验总结
中断机制很有意思,栈空间分配和c语言很像
浙公网安备 33010602011771号