汇编语言笔记——控制转移指令

控制转移指令

JMP label无条件转移指令使程序转移到指定的目标地址处,从目标地址处开始执行指令
JCC label;有条件转移指令条件满足,发生转移;条件不满足,顺序执行
  • 直接寻址:转移地址像立即数一样,直接在指令的机器代码中
  • 间接寻址:转移地址在寄存器或主存单元中

JCC的三种应用

判断单个标志位状态

  • JZ/JE和JNZ/JNE:利用零标志ZF,判断结果是否为0或相等
  • JS和JNS,利用符号标志SF,判断结果为正还是负
  • JO和JNO,利用溢出标志OF,判断结果是否溢出
  • JP/JPE和JNP/JPO,利用奇偶标志PF,判断结果中1的个数为奇还是偶
  • JC/JB/JNAE和JNC/JNB/JAE,利用进位标志CF,判断结果是否进位或借位

比较无符号数的高低

利用CF确定高低,利用ZF确定相等。

  • 低于 JB
  • 不低于 JNB
  • 低于等于 JBE
  • 不低于等于 JNBE

比较有符号数大小

利用OF和SF组合确定大小,利用ZF确定相等。

  • 小于 JL
  • 不小于 JNL
  • 小于等于 JLE
  • 不小于等于 JNLE

循环指令

循环指令默认使用CX作为计数器。

LOOP labelCX!=0,循环到label
LOOPZ labelCX!=0,ZF=1,循环到label
LOOPNZ labelCX!=0,ZF=0,循环到label

子程序指令

主程序需要调用子程序时,采用CALL转移到子程序的起始位置,采用RET返回主程序继续执行。
proc用于声明子程序,格式如下:
子程序名 proc
在这里插入图片描述

中断指令

改变程序执行顺序的一种方法。
INT i8

系统功能调用

21H中断是DOS提供给用户的用于调用系统功能的中断。

使用步骤:

  1. AH设置系统功能调用号
  2. 在指定寄存器设置入口参数
  3. 执行指令INT 21H
  4. 根据出口参数分析功能调用执行情况
AH=02H;DL=字符的ASCII码在显示器当前光标位置显示给定的字符07H响铃,08H退格,0DH回车,0AH换行
AH=09H;DX=欲显示字符串首地址,以$结尾在显示器输出给定字符串回车、换行
AH=01H;AL=输入字符的ASCII码获得按键的ASCII码
AH=0AH;DS:DX=缓冲区首地址字符串输入
AH=3CH;DX=ASCIIZ串地址 CX=文件属性;建立文件,成功返回AX=文件代号
AH=3EH;BX=文件代号关闭文件
AH=3FH;BX=文件代号;DX=数据缓冲区地址;CX=读取的字节数读取成功:AX=实际读入的字节数读取文件
AH=40H;参数同上写文件
//输入字符串
buffer db 81//最多接收字符个数
	db 0//存放实际输入的字符数
	db 81 dup(0)//存放输入的字符串

	mov dx,offset bbuffer
	mov ah,0ah//0AH字符串输入功能
	int 21h

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值