首页 > 编程知识 正文

汇编指令表,汇编开发工具

时间:2023-05-05 21:27:27 阅读:130619 作者:3898

一.汇编标志位:

CF:进位标志CF主要用于反映运算是否会发生进位或借位。 如果运算结果的最高位发生进位或借位,则值为1,否则为0。 使用该标志位时,有多字(字节)数的加减运算、无符号数的大小比较运算、移位操作、字)字节间移位、特别改变CF值的命令等。 PF:奇偶校验标志PF用于反映运算结果中“1”个数的奇偶校验。 如果“1”的个数为偶数,则PF的值为1,否则值为0。 可以利用PF进行奇偶校验检查,也可以生成奇偶校验位。 在数据传输过程中,如果采用奇偶校验方法来提供传输可靠性,则可以使用此标志位。 在以下情况下,AF:辅助进位标志将辅助进位标志AF的值设为1,否则将该值设为0。 (1)、字操作时,发生低字节向高字节进位或借位时; ) 2、字节操作时发生从后4位到前4位的进位或借位时。 ZF:零标志零标志ZF用于反映运算结果是否为0。 如果运算结果为0,则该值为1,否则该值为0。 此标志位可用于确定运算结果是否为0。 SF:符号标记标志SF是用于反映运算结果的符号位,与运算结果的最高位相同。 在微机系统中,由于符号数采用补数表示法,SF也反映运算结果的符号。 如果运算结果为正,则SF的值为0,否则值为1。 OF:溢出标志OF用于反映符号数的加减运算结果是否溢出。 如果运算结果超出了当前运算位数所能表示的范围,则称为溢出,OF的值设定为1,否则OF的值清除为0。 当TF:跟踪标志跟踪标志TF被设置为1时,CPU进入单步执行模式,即,每当执行指令时产生单步中断请求。 这种方式主要用于程序的调试。 当IF:中断允许标志(1)和IF=1时,CPU可以响应由CPU外部的可屏蔽中断导致的中断请求; ) 2、IF=0时,CPU不响应CPU外部的可屏蔽中断引起的中断请求DF:方向标志方向标志DF,确定执行串行操作命令时指针寄存器调整发生的方向。 二.常见寄存器

寄存器16位32位64位累积寄存器AXEAXRAX基地址寄存器BXEBXRBX计数器寄存器CXECXRCX数据寄存器DXEDXRDX基于堆栈指针BPEBPRBP索引寄存器SIESIRSI堆栈

(1)数据传输命令。

1 .通用数据传输指令: MOV格式: MOV DEST、SRC功能: 1字节,将字或双字从源操作数SRC传输到目标操作数DEST。 2 .扩展传输指令: MOV SX、MOV ZX格式: MOV SX DEST、SRC MOV ZX DEST、SRC功能:将源操作数扩展为8位到16位的目标操作数或16位到32位的目标操作数MOV SX用有符号数扩展MOV ZX用无符号数扩展。 无符号数或正数的高位将扩展为0,负数的所有高位将扩展为“1”。 例: MOV BL,80H; -128 MOV SX AX、BL; 将80H扩展为FF80H并发送到AX。 MOV BL,80H; 128 MOV ZX AX、BL; 将80H扩展到0080H并发送到ax3.交换命令: XCHG BSWAP格式: XCHG OPR1、OPR2 BSWAP REG功能: XCHG :交换操作数OPR1和OPR2,操作数数据类型为字节、字或双字bswap :交换32位通用寄存器中的第1字节和第4字节,交换第2字节和第3字节。 4 .堆栈指令:推送推送格式:推送src功能:将源操作数推送到堆栈,允许源操作数为16位或32位通用寄存器、内存和即时数以及16位段寄存器操作数的数据类型为字型时,通过推送操作SP值减少2; 数据类型为双字型时,推送操作会使SP值减少4。 PUSHA将16位通用寄存器推入堆栈,堆栈顺序为AX、CX、DX、BX、SP、BP、SI、DI。 PUSHAD将32位通用寄存器推入堆栈,堆栈顺序为EAX、ECX、EDX、EBX、ESP、EBP、ESI、EDI。 5 .堆栈命令: POP POPA POPAD格式: POP DEST功能:从堆栈顶部提取操作数并将其送入所需的操作数。 POPA从堆栈移动16字节数据,POPAD从堆栈移动32字节的数据6 .地址传送命令: LEA格式: LEA REG,MEM功能:将源操作数的有效地址传送到通用寄存器, 7 .查找表指令: XLAT8.扩展指令CBW CWD CWDE CDQ格式: cbw:al中具有8位CWD:ax中的16位带符号数,将带符号扩展到32位的cwde:ax中的16位带符号数,带符号330 cdq :将EAX中的32位有符号数据扩展到64位,并发送到EDX和EAX中。 低位32比特发送到EAX,高位32比特发送到EDX。 (2)算术运算命令。

1 .加法指令: ADD互加指令: XADD格式: ADD DEST、SRC XADD DEST、REG功能: ADD将源操作数和目标操作数相加,并将结果传递给目标操作数。 2 .减法命令: SUB格式: SUB DEST,SRC功能: SUB

将目的操作数减源操作数,结果送目的操作数。3. 自增自减指令:INC DEC格式:INC DEST DEC DEST功能:INC指令将目的操作数加1,结果送目的操作数。 DEC指令将目的操作数减1,结果送目的操作数。4. 比较指令:CMP 格式:CMP DEST,SRC功能:目的操作数减源操作数,结果不回送。结果:两个正数比较,使用SF标志位判断。    SF=0,则AX>BX,若ZF=1,则AX=BX    SF=1,则AX<BX 两个无符号数比较,使用CF标志位判断。    CF=0,则AX>BX,若ZF=1,则AX=BX    CF=1,则AX<BX 两个负数比较,使用SF标志位判断。    SF=0,则AX>BX,若ZF=1,则AX=BX    SF=1,则AX<BX 两个异符号数比较。    如果OF=0,仍可用SF标志判断大小。    如果OF=1,说明结果的符号位发生错误,所以         SF=0,则AX<BX         SF=1,则AX>BX5. 求补指令:NEG 格式:NEG DEST功能:对目的操作数求补,用零减去目的操作数,结果送目的操作数。6. 乘法指令:MUL IMUL格式:MUL SRC IMUL SRC功能:MUL为无符号数乘法指令,IMUL为带符号数乘法指令。目的操作数缺省存放在ACC(AL,AX,EAX)中,乘积存AX,DX:AX,EDX:EAX中。格式:IMUL DEST,SRC功能:将目的操作数乘以源操作数,结果送目的操作数。格式:IMUL DEST,SRC1,SRC2功能:将源操作数SRC1与源操作数SRC2相乘,结果送目的操作数。 7. 除法指令:DIV IDIV 格式:DIV SRC      IDIV SRC功能:DIV为无符号数除法,IDIV为带符号数除法。被除数缺省在目的操作数AX,DX:AX,EDX:EAX中。8. BCD算术运算 DAA DAS格式:DAA功能:将存放在AL中的二进制和数,调整为压缩格式的BCD码表示形式。格式:DAS功能:将存放在AL中的二进制差数,调整为压缩的BCD码表示形式。例:  SUB AL,BL  DAS9. ASCII算术运算AAA:将存放在AL中的二进制和数,调整为ASCII码表示的结果。AAS:将存放在AL中的二进制差数,调整为ASCII码表示形式AAM:将存放在AL中的二进制积数,调整为ASCII码表示形式。AAD:将AX中两位非压缩BCD码(一个字节存放一位BCD码),转换为二进制数的表示形式。

(3) 逻辑运算指令。

1. 逻辑与指令:AND 格式:AND DEST,SRC功能:目的操作数和源操作数按位进行逻辑与运算,结果存目的操作数中。2. 逻辑或指令:OR 格式:OR DEST,SRC功能:目的操作数和源操作数按位进行逻辑或运算,结果存目的操作数中。3. 逻辑异或指令:XOR 格式:XOR DEST,SRC功能:目的操作数和源操作数按位进行逻辑异或运算,结果送目的操作数。4. 逻辑非指令:NOT 格式:NOT DEST功能:对目的操作数按位取反,结果回送目的操作数。目的操作数可以为通用寄存器或存储器。5. 测试指令:TEST 格式:TEST DEST,SRC功能:目的操作数和源操作数按位进行逻辑与操作,结果不回送目的操作数。 TEST指令常用于测试操作数中某位是否为1,而且不会影响目的操作数。如果测试某位的状态,对某位进行逻辑与1的运算,其它位逻辑与0,然后判断标志位。运算结果为0,ZF=1,表示被测试位为0;否则ZF=0,表示被测试位为1。6. 算术/逻辑左移指令:格式:SAL DEST,OPRD      SHL DEST,OPRD功能:按照操作数OPRD规定的移位位数,对目的操作数进行左移操作,最高位移入CF中。每移动一位,右边补一位0。7. 算术右移指令:SAR 格式:SAR DEST,OPRD功能:按照操作数OPRD规定的移位次数,对目的操作数进行右移操作,最低位移至CF中,最高位(即符号位)保持不变。 8. 逻辑右移指令:SHR 格式:SHR DEST,SRC ROR DEST,OPRD功能:按照操作数OPRD规定的移位位数,对目的操作数进行右移操作,最低位移至CF中。每移动一位,左边补一位0。9. 循环移位指令:ROL ROR 格式:ROL DEST,OPRD功能:循环左移指令ROL,目的操作数左移,每移位一次,其最高位移入最低位 循环右移指令 ROR,目的操作数右移,每移位一次,其最低位移入最高位,10. 双精度移位指令格式:SHLD DEST,SRC,OPRD SHRD DEST,SRC,OPRD功能:对于由目的操作数DEST和源操作数SRC构成的双精度数,按照操作数OPRD给出的移位位数,进行移位。SHLD是对目的操作数进行左移,SHRD是对目的操作数进行右移

(4) 串操作指令。
串操作允许程序对连续存放大的数据块进行操作。

1. 字符串传送指令 MOVSB MOVSW MOVSD格式:MOVS DESTS, SRCS功能:将规定的源串元素复制到规定的目的串单元中2. 字符串比较指令 CMPSB,CMPSW,CMPSD格式:CMPS DESTS, SRCS功能:由规定的源串元素减去指出的目的串元素,结果不回送,仅影响标志位CF,AF,PF,OF,ZF,SF。3. 字符串搜索指令 SCASB,SCASW格式:SCAS DESTS功能:由AL,AX或EAX的内容减去规定的目的串元素,结果不回送,仅影响标志位CF,AF,PF,SF,OF,ZF。

(5) 控制转移指令。
计算机执行程序一般是顺序地逐条执行指令。但经常须要根据不同条件做不同的处理,有时需要跳过几条指令,有时需要重复执行某段程序,或者转移到另一个程序段去执行。用于控制程序流程的指令包括转移、循环、过程调用和中断调用。

1. 无条件转移指令:JMP格式:JMP TARGET功能:使程序无条件地转移到指令规定的目的地址TARGET去执行指令。2. 单标志位条件转移指令格式:JZ NEXT;功能:若标志ZF=1则转移到标号NEXT处执行。(结果为0(或相等)则转移)3. 无符号数比较条件转移格式:JA NEXT;功能:无符号数A与B比较,若A>B则转移到标号NEXT处执行程序4. 带符号数比较条件转移格式: JG NEXT;功能:若A>B则转移到标号NEXT。5. JS(结果为负则转移) 6. JNS(结果为正则转移)7. JP(奇偶位为1则转移)8. JNP(奇偶位为0则转移)9. 循环指令集格式: LOOP 地址功能: 循环指令集10. CALL,RET格式:CALL 地址 RET RET n功能: 子程序调用,返回指令

(6) 处理器控制指令。

1. 空操作:NOP功能:空操作,除使IP/EIP增1外,不做任何工作。该指令不影响标志位。2. 处理器等待指令:WAIT功能:检查BUSY引脚状态,等待协处理器完成当前工作。3. 处理器暂停指令:HLT功能:暂停程序的执行。当产生一个外部中断或非屏蔽中断时,才继续执行下一条指令。4. 中断指令:INT 格式:INT n功能:功能:产生中断类型码为n的软中断,该指令包含中断操作码和中断类型码两部分,中断类型码n为8位,取值范围为0~255(00H~FFH)。

(7) 保护方式指令。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。