1、汇编语言指令21. 逻辑运算指令 2. 移位指令移位规则 左移: 高位 低位 右移: 高位 低位 移出位进入CF标志 对移位指令,移出CF标志后丢失 逻辑左移、算术左移的结果相同 逻辑右移,新移入的信息以0填入 算术右移,保持最高有效位原来的值(符号为不变)3. 循环移位指令 移位规则 左移: 高位 低位 右移: 高位 低位 移出位进入CF标志 对循环移位指令,改变各位的位置,信息不丢失 带进位循环移位,CF标志参加循环移位注意事项: SHL AL, 1 SHR AL, CL ROL BX, 1 RCR AL, CL源操作数为移位的次数目的操作数类型决定操作类型对标志位的影响移位指令:据结果设
2、置CF、SF、ZF、PF,对AF无定义OF只在移位次数为1时有效,其他无定义 移位后,最高有效位发生变化,则OF=1,否则为0对循环移位指令:据移位结果设置CF,对其他标志无影响OF标志与移位指令同控制转移指令 1)无条件转移指令JMP 格式 JMP 目标地址 执行操作 无条件转移到目标地址处2)条件转移指令 格式 Jcc 符号地址 测试条件的助记符 执行 当转移条件满足,转向目标地址去执行。 当、不满足,执行Jcc后的下一条指令。 转移方式 只允许段内直接短方式,跳转范围在-128127按转移条件不同,条件转移指令可以分为四大类: 以单个状态标志作为转移条件 以CX的值为0作为转移条件 以两
3、个无符号数比较的结果作为转移条件 以两个带符号数比较的结果作为转移条件3) 循环指令 格式 LOOPxx符号地址 执行 (CX) (CX)- 1 此操作不影响标志 检查转移条件,满足,转向目标地址去执行; 不满足,执行LOOPxx后一条指令转移方式 只允许段内直接短方式,跳转范围-128127循环指令说明: LOOP退出循环条件是(CX)= 0 LOOPZ和LOOPNZ提供了提前结束循环的可能, 不一定要等到(CX)= 0才退出循环。4) 调用和返回指令 调用指令CALL 段内直接调用 格式 CALL 符号地址 ;NEAR属性 执行 (SP) (SP)- 2 (SS:SP) (IP) (IP)
4、 符号地址的偏址 段间直接调用格式 CALL 符号地址 ;FAR属性执行(SP) (SP)- 2(SS:SP) (CS) (SP) (SP)- 2(SS:SP) (IP) (IP) 符号地址的偏址(CS) 符号地址的段址返回指令RET 段内返回 格式 RET 执行 (IP) (SS:SP) (SP) (SP)+ 2 段间返回格式 RET 或 RETF执行 (IP) (SS:SP) (SP) (SP)+ 2 (CS) (SS:SP) (SP) (SP)+ 2注意: 在调用、返回指令中, 利用堆栈保存、恢复返回地址。 对堆栈的操作应有目的性, 不乱用堆栈操作,不随意修改堆栈内容, 否则易造成死机。
5、5) 中断调用、中断返回指令中断子程以类型号 N来区分 共有256个类型号(0FFH, 即 0255)类型号0 处理除0错误的中断子程类型号4H 处理溢出时的中断子程类型号9H 处理键盘操作的中断子程类型号21H 与DOS系统功能相关的中断子程中断调用指令INT格式 INT N ;其中 N=0 FFH 即0255入栈保存PSW执行 (SP) (SP)- 2 保存现场 (SS:SP) (PSW) IF 0 清IF标志 TF 0 清TF标志入栈保存CS (SP) (SP)- 2 (SS:SP) (CS) 入栈保存IP (SP) (SP)- 2 (SS:SP) (IP)取中断子程入口地址 (IP) (0: N 4) (CS) (0: N4 + 2) 中断返回指令IRET 格式 IRET 执行 (IP) (SS:SP) (SP) (SP)+ 2 (CS) (SS:SP) (SP) (SP)+ 2 (PSW) (SS:SP) (SP) (SP)+ 2 溢出中断调用INTO格式 INTO执行 OF为1时,执行 INT 4; OF为0时,执行INTO下一条执行。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1