码迷,mamicode.com
首页 > 其他好文 > 详细

实验 2 用机器指令和汇编指令编程

时间:2018-10-27 22:09:53      阅读:269      评论:0      收藏:0      [点我收藏+]

标签:操作   寄存器   基本操作   调试   体会   指令   pop   汇编   bubuko   

实验结论

实验任务(1)

1.使用 e 命令修改 0021:0~0021:f 数据,及修改后查看是否正确写入的操作

技术分享图片

2.使用 a 命令输入指令

技术分享图片

3.每一行指令单步调试

技术分享图片技术分享图片技术分享图片

4.指令执行后各个寄存器存值情况

mov ax,[0];             ax=3130H

add ax,[2];              ax=6462H

mov bx[4];              bx=3534H

add bx,[6];              bx=6C6AH

push ax;                 sp=00FEH;修改的内存单元的地址是2200:FE,内容为3130H

push bx;                 sp=00FCH;修改的内存单元的地址是2200:FC,内容为6462H

pop ax;                   sp=00FEH;ax=6C6AH

pop bx;                   sp=0100H;bx=6462H

push [4];                 sp=00FEH;修改的内存单元的地址是2200:FE,内容为3534H

push [6];                 sp=00FCH;修改的内存单元的地址是2200:FC,内容为6C6AH

5.发现:在执行"mov ss,ax"后,直接执行了“mov ax,[0]”,跳过了“mov sp,0100”。

 原因:Debug的T命令在执行修改寄存器SS的指令时,下一条指令也紧接着被执行。

 

实验任务(2)

1.使用 a命令输入7行指令,使用 e 命令修改 2000:0~2000:f 的值,查看修改后的部分

技术分享图片

mov ax,2000;    将数字2000H存入寄存器ax中

mov ss,ax;         将存在寄存器ax中的数字2000H存入栈段寄存器ss中

mov sp,10;         将数字10H存入栈地址寄存器sp中

初始栈顶为2000:0010,初始栈底为2000:0010。

2.单步调试每一行汇编指令,且每一条指令单步调试后,都使用 d 命令查看2000:0~2000:f 的值

技术分享图片技术分享图片技术分享图片

执行“mov ss,ax”后,内存2000:0到2000:f中的值变了后9个,之后每执行一条指令,内存2000:0到2000:f中的值变化量增加一个。

 

总结与体会

  通过本次实验,我基本了解了栈的原理和基本操作。同时,我还发现了:Debug的T命令在执行修改寄存器SS的指令时,下一条指令也紧接着被执行。

 

实验 2 用机器指令和汇编指令编程

标签:操作   寄存器   基本操作   调试   体会   指令   pop   汇编   bubuko   

原文地址:https://www.cnblogs.com/yangpengassembly/p/9863577.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!