微机原理——第六章 程序与处理器控制指令

6.1 关于程序控制类指令说明

在这里插入图片描述
仅修改IP会使得程序改变在当前代码段中的执行顺序,修改CS和IP会使得程序走向另一个代码段执行
在这里插入图片描述
在这里插入图片描述

6.2 无条件转移指令

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
WORD PTR表示16位
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
DWORD=double word=32位=4个字节——>4个单元;CS指向高地址单元
在这里插入图片描述
在这里插入图片描述

  • 第一行:SI=1122H
  • 第二行:将立即数0120H写入到内存数据段偏移地址是1122H所指向的单元中
  • 第三行:SI+2
  • 第四行:将0122H写入到内存数据段偏移地址是1122H+2=1124H所指向的单元中
  • 第五行:JMP WORD PTR[SI]——JMP后为16位存储器操作数则说明是段内转移,转移地址放到了内存中;则是段内间接转移,转移目标地址在当前SI所指向的1124H中存放,故IP的值为0122H
  • 第五行:JMP DWORD PTR[SI-2]——>DWORD类型存储器操作数4字节的(SI-2=1124-2=1122),故转移的目标地址在1122所指向的这四个单元中低地址单元的内容是转移目标的偏移地址IP为0120,高地址目标的内容是转移目标的段基地址CS为0122。

6.3 条件转移指令

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

JC是CF=1转移,JNC是CF=0时转移
而JP和JPE都是PF=1转移
JNP和JPO都是PF=0转移

在这里插入图片描述
JCXZ是当CX=0时实现转移
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

  • 前四句是清零相应要存放统计值的单元,然后LEA取首地址以及后一句取串长
  • LODSB进行串装入操作将原数据串的一个单元的内容写入AL,因为前面没有前缀故写完后自动实现SI+1后停止。
  • OR AL ,AL:按位相或后原数据没有改变而标志位改变可知数的正负性。
  • 使用JS指令查看SF为1还是0,若为1表示是负数,则控制程序转向X1的方向执行,MINUS单元会+1(存负数单元)
  • JS不为0转向下一条指令JZ,据ZF的值判断是否要跳到X2
  • 不跳到X2则顺序执行PLUS单元加1指令
  • LODSB已经实现指针的修改,我们还需要实现修改CX的值,判断CX是否为0(是否统计结束)若没有统计完则继续回去JMP NEXT CX-1的位置
  • 前面有DEC CX指令,DEC指令会影响到ZF,执行后若ZF=0则会继续跳转到CHECK;若CX=0,则ZF=1,故直接判断ZF状态就知道CX是否减到0

6.4 循环控制指令

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 初始化先取首地址和长度
  • 按串操作指令则需要先设定它的方向
  • 利用LODSW将首地址第一个字单元的内容放入AX
  • 分别将它赋给MAX和MIN单元
  • 计数值-1
  • 取第二个字并且和MAX及MIN比较
  • 第二次再循环到LODSW,LODSW会自动读取一个数并且修改指针,此时已经+2修改过指针了可以继续读取下一个字节

6.5 过程调用指令

在这里插入图片描述
断点是调用指令的下一条指令的地址

在这里插入图片描述
近地址调用要记住偏移地址,远地址调用要记住段基地址和偏移地址
参数保护压入到堆栈保护
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
先压入段基地址再压入偏移地址
在这里插入图片描述
在这里插入图片描述

6.6 中断指令

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
n×4和n×4+1存放的是入口的偏移地址
n×4+2和n×4+3存放的是入口的段地址
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • SP=1200H
  • 中断指令,类型码是21H
  • 断点地址为:6200H:0112H
    在这里插入图片描述
    中断子程序的入口地址:CS=(21H×4)+2;IP=21H×4
    在这里插入图片描述

6.7 处理器控制指令

在这里插入图片描述
在这里插入图片描述

6.8 指令系统小结

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值