汇编语言--实验二

 实验名称:用机器指令和汇编指令编程

目录

 实验名称:用机器指令和汇编指令编程

一:实验目的

二:实验内容、步骤与结果

内容(1)

步骤(1)

结果(1)

代码(1)

内容(2)

步骤与结果(2)

三:实验过程中出现的问题及解决方法

四:实验总结


一:实验目的

  1. D命令的深入学习
  2. 在E、A、U命令中使用段寄存器

二:实验内容、步骤与结果

内容(1):

步骤(1):

1)、用A命令将指令写入内存

2)用t命令逐条执行

结果(1):

代码:

mov ax,[0] ax=C0EA

add ax,[2] ax=COFC

mov bx,[4] bx=30F0

add bx,[6] bx=6021

push ax sp=00FE   2200:00FE   C0FC

push bx sp=00FC   2200:00FC    6021

pop ax sp=00FE,ax=6021

pop bx sp=0100,bx=COFC

push [4] sp=00FE   2200:00FE,30F0

push [6] sp=00FC,   2200:00FC,2F31

内容(2):

步骤与结果(2

执行mov ss,ax 时其后边的指令将立即被执行(这是MOV SS,**指令特点)。这也是为什么强调mov ss,ax 后边必须跟上mov sp,10的原因。这么规定是便于控制栈段大小,防止特别是在有子程序调用时出错。至于这两条指令执行后靠近栈顶的10个字节中值立即有了变化,是对定义栈段时部分运行环境变量进行暂存,靠近栈顶的10个字节中的暂存数据分别是SS、IP、 CS 等的值。

为什么会修改栈里面的内容 (栈里面有 IP CS 的内容)

DEBUG是用CPU的陷阱【中断】(每执行一条指令就触发一次这个中断)实现单步中断的。(中断使 CPU硬件自动将SS、ESP、EFLAGS、CS、IP这5个寄存器的数值按照这个顺序压入进程0的内核栈。)

中断会把CS和IP的值弄到栈里。处理中断需要调用另外的程序,调用其他的程序的时候(上下文切换),需要先将寄存器里面的内容压入栈当中。

三:实验过程中出现的问题及解决方法

问题:经常敲错命令

解决方法:多练习

四:实验总结

通过此次实验我学习到Debug相关指令,学会到不同指令和寄存器配合使用,以及一些相关知识点,如:Debug的T命令在执行修改寄存器SS的指令时,下一条指令也紧接着被执行;Debug靠一段程序来执行D命令且由CPU来执行这段程序;Debug执行命令时,CPU访问内存单元是从段寄存器中得到内存单元的段地址。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值