李超

cc编程笔记本。

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

1. TEST reg/mem, reg/mem/imm - 检测位指令
受影响标志位:CF(0),OF(0),PF,SF和ZF
功能:检测位指令会将源操作数和目标操作数进行逻辑与操作,根据运算结果设置标志位,但是并不保存运算结果到源操作数,只是设置标志位。该指令执行后通常是一条JE,JNE,JZ或JNZ等条件转移指令。

2. 循环指令
循环指令的执行本身并不影响任何标志位,以CX或ECX做为计数器。
LOOP/LOOPW/LOOPD 标号
LOOP: 在实地址模式下使用CX寄存器而不是ECX寄存器。
LOOPW:在任何模式下都会使用CX寄存器作为计数器。
LOOPD:在任何模式下都会使用ECX寄存器作为计数器。

3. 转移指令
转移指令是汇编语言程序员经常使用的一组指令。在高级语言中,时常有“尽量不要使用转移语句”的劝告,但如果在汇编语言的程序中也尽量不用转移语句,那么该程序要么无法编写,要么没有多少功能,所以,在汇编语言中,不但要使用转移指令,而且还要灵活运用,因为指令系统中有大量的转移指令。

转移指令分无条件转移指令和有条件转移指令两大类。

无条件转移指令:包括JMP指令,子程序的调用和返回,中断的调用和返回。

JMP 标号/reg/mem
JMP指令是从程序当前执行的地方无条件转移到另外一个地方执行,这种执行可以是一个短(short)转移(偏移量在-128到127范围内),近(near)转移(偏移量在正负32K范围内),或者远(FAR)转移(在不同的代码段内跳转。)

短转移和近转移只是代码段内的转移,仅仅需要把偏移量入栈,远转移需要把要跳转的代码段的地址和偏移量入栈。

转移指令本身不影响标志位。

posted on 2008-02-16 11:07  coderlee  阅读(1043)  评论(0编辑  收藏  举报