汇编笔记[05][流程转移与子程序]

汇编笔记[05][流程转移与子程序]

1 导学-流程转移与子程序

  1. "转移"综述
  2. 操作符offset
  3. jmp指令
  4. 其他转移指令
  5. call指令和ret指令
  6. call和ret的配合使用
  7. mul指令
  8. 汇编语言的模块化程序设计
  9. 寄存器冲突的问题
  10. 标志寄存器
  11. 带进(借)位的加减法
  12. cmp和条件转移指令
  13. 条件转移指令应用
  14. DF标志和串传送指令

2 "转移"综述

2.1 转移综述

  • 2.1.1 背景
一般情况下指令是顺序地逐条执行的,而在实际中,常需要改变程序的执行流程。

转移指令,
	可以控制CPU执行内存中某处代码的指令
	可以修改IP,或同事修改CS和IP的指令

转移指令的分类
	按转移行为
		段内转移:只修改IP,如jmp ax
		段间转移:同时修改CS和IP,如jmp 1000:0
	根据指令对IP修改的范围不同
		段内短转移:IP修改范围为-128~127 【8位】
		段内近转移:IP修改范围为-32768~32767 【16位,2个字节】
	按转移指令
		无条件转移指令(如:jmp)
		条件转移指令(如:jcxz)【j:跳转 cx:计数器 z:是否为0】
		循环指令(如:loop)
		过程
		中断

3 操作符offset

4 jmp指令

链接: 视频连接

4.1 jmp指令–无条件转移

jmp指令的功能
	无条件转移,可以只修改IP,也可以同时修改CS和IP
jmp指令要给出两种信息
	转移的目的地址
	转移的距离
		- 段间转移(远转移):jmp 2000:1000
		- 段内短转移:jmp short 标号;IP的修改范围为-128~127,8位的位移
		- 段内近转移:jmp near ptr 标号;IP的修改范围为-32768~32767,16位的位移

4.2 jmp指令:依据位移进行转移

引子:常见指令中的立即书均在机器指令中有提现

问题:jmp short指令中,转移到了哪里?
	相对位移
	jmp short 的机器指令中,包含的是跳转到指令的相对位置,而不是转移的目标地址

在这里插入图片描述

在这里插入图片描述

4.3 两种段内转移

在这里插入图片描述

4.4 远转移:jmp far ptr 标号

在这里插入图片描述

4.5 转移地址在寄存器中的jmp指令

在这里插入图片描述

4.6 转移地址在内存中的jmp指令

在这里插入图片描述

4.7 jmp指令小结

在这里插入图片描述

5 其他转移指令

5.1 jcxz指令

在这里插入图片描述

9 汇编语言的模块化程序设计

9.1 用内存单元批量传递参数

在这里插入图片描述

9.2 用栈传递参数

在这里插入图片描述

9.3 程序的执行过程中栈的变化

在这里插入图片描述

10 寄存器冲突问题

10.1 引子

在这里插入图片描述

10.2 代码:编程将data段中的字符串转化为大写

在这里插入图片描述

10.3 寄存器冲突问题的解决

在这里插入图片描述

10.4 寄存器冲突问题的解决示例

在这里插入图片描述

11 标志寄存器

11.1 标志寄存器

在这里插入图片描述

11.2 认识标志寄存器的特殊之处

在这里插入图片描述

11.3 ZF-零标志(Zero Flag)

在这里插入图片描述

11.4 PF-奇偶标志(Parity Flag)

在这里插入图片描述

11.5 SF-符号标志(Sign Flag)

在这里插入图片描述

11.6 CF-进位标志(CarryFlag)

在这里插入图片描述

11.7 OF-溢出标志(Overflow Flag)

在这里插入图片描述

11.8 综合:一条指令会带来多个标志寄存器的变化

在这里插入图片描述

12 带进(借)位的加减法

12.1 adc-带进位加法指令

在这里插入图片描述

12.2 adc指令应用:大数相加

在这里插入图片描述

12.3 128位数据相加

在这里插入图片描述

12.4 sbb指令

在这里插入图片描述

13 cmp与条件转移指令

13.1 cmp指令

在这里插入图片描述

13.2 无符号数比较与标志位取值

在这里插入图片描述

13.3 有符号数比较与标志位取值

在这里插入图片描述

13.4 条件转移指令

在这里插入图片描述

13.5 条件转移指令的使用

在这里插入图片描述

14 条件转移指令应用

14.1 条件转移指令

在这里插入图片描述

14.2 应用示例

在这里插入图片描述

14.3 应用示例

在这里插入图片描述

14.4 应用示例

在这里插入图片描述

15 DF标志和串传发送指令

DF标志:方向标志位

15.1 问题提出

在这里插入图片描述

15.2 DF标志和串传送指令

在这里插入图片描述

15.3 rep指令

在这里插入图片描述

15.4 应用实例

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值