实验二

任务一:

用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语言很像

posted @ 2018-10-28 22:51  林木胖胖  阅读(128)  评论(2)    收藏  举报