您好,欢迎访问三七文档
汇编指令集汇编指令小结指令系统分为以下6组:1、数据传送指令;2、算术指令;3、逻辑指令;4、串处理指令;5、控制转移指令;6、处理机控制指令一、数据传送指令⑴通用数据传送指令MOV传送PUSH进栈POP出栈XCHG交换⑵累加器专用传送指令IN输入OUT输出XLAT换码⑶地址传送指令LEA有效地址送寄存器LDS指针送寄存器和DSLES指针送寄存器和ES⑷标志寄存器传送指令LAHF标志送AHSAHFAH送标志寄存器PUSHF标志进栈POPF标志出栈对于IBMPC机它有它的指令系统,其中包括:数据传送指令、串处理指令、算术指令、控制移动指令、逻辑指令、处理机控制指令。这里将简单介绍其指令类型及指令说明,如有要求给具体的指令格式及应用,请与amay联系,amay加以更新。1)数据传送指令:负责把数据、地址或立即数传送到寄存器或存储单元中。数据传送指令类型指令说明通用数据传送指令MOV(传送)、PUSH(进栈)、POP(出栈)、XCHG(交换)累加器专用传送指令IN(输入指令)、OUT(输入指令)地址传送指令LEA(有效地址送寄存器)、LDS(指针送寄存器和DS)、LES(指针送寄存器和ES)标志寄存器传送指令LAHF(标志送AH)、SAHF(AH送标志寄存器)、PUSHF(标志进栈)、POPF(标志出栈)2)算术指令:用来执行算术运算。算术指令类型指令说明加法指令ADD(加法)、ADC(带进位加法)、INC(加1)减法指令SUB(减法)、SBB(带借位减法)、DEC(减1)、NEG(求补)、CMP(比较)乘法指令MUL(无符号数乘法)、IMUL(带符号数乘法)除法指令DIV(无符号数除法)、IDIV(带符号数除法)、CBW(字节转换为字)、CWD(字转换为双字)3)逻辑指令:对字或字节执行逻辑运算。逻辑指令类型指令说明逻辑运算指令AND(逻辑与)、OR(逻辑或)、NOT(逻辑非)、XOR(异或)、TEST(测试)移动指令SHL(逻辑左移)、SAL(算术左移)、SHR(逻辑右移)、SAR(算术右移)、ROL(循环左移)、ROR(循环右移)、RCL(带进位循环左移)、RCR(带进位右移)4)串处理指令:处理存放存储器里的数据串。串处理指令类型指令说明指令MOVS(串传送)、CMPS(串比较)、SCAS(串扫描)、LODS(从串取)、STOS(存入串)5)控制转移指令:用来控制程序的执行流程。控制转移指令类型指令说明无条件转移指令JMP(段间和段内转移)条件转移指令JZ(结果为0(或相等)则转移)、JS(结果为负则转移)、JNS(结果为正则转移)、JO(溢出则转移)、JNO(不溢出则转移)、JP(奇偶位为1则转移)、JNP(奇偶位为0则转移)循环指令LOOP(循环指令)、LOOPPZ/LOOPE(当为0或相等时循环指令)、LOOPNZ/LOOPNE(当不为0或不相等时循环指令)子程序指令CALL(调用指令)、RET(返回指令)中断指令INT(中断)、INTO(如溢出则中断)、RIET(从中断返回)汇编语言指令汇总一、数据传输指令1.通用数据传送指令.MOV(MOVe)传送字或字节.MOVS(MOVeString)串传送指令MOVSX先符号扩展,再传送.MOVZX先零扩展,再传送.PUSH把字压入堆栈.POP把字弹出堆栈.PUSHA把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈.POPA把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈.PUSHAD把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次压入堆栈.POPAD把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次弹出堆栈.BSWAP交换32位寄存器里字节的顺序XCHG(eXCHanG)交换字或字节.(至少有一个操作数为寄存器,段寄存器不可作为操作数)CMPXCHG比较并交换操作数.(第二个操作数必须为累加器AL/AX/EAX)XADD先交换再累加.(结果在第一个操作数里)XLAT(TRANSLATE)字节查表转换.──BX指向一张256字节的表的起点,AL为表的索引值(0-255,即0-FFH);返回AL为查表结果.([BX+AL]-AL)2.输入输出端口传送指令.INI/O端口输入.(语法:IN累加器,{端口号│DX})OUTI/O端口输出.(语法:OUT{端口号│DX},累加器)输入输出端口由立即方式指定时,其范围是0-255;由寄存器DX指定时,其范围是0-65535.3.目的地址传送指令.LEA(LoadEffectiveAddress)装入有效地址.例:LEADX,string;把偏移地址存到DX.LDS(LoadDSwithpointer)传送目标指针,把指针内容装入DS.例:LDSSI,string;把段地址:偏移地址存到DS:SI.LES(LoadESwithpointer)传送目标指针,把指针内容装入ES.例:LESDI,string;把段地址:偏移地址存到ES:DI.LFS传送目标指针,把指针内容装入FS.例:LFSDI,string;把段地址:偏移地址存到FS:DI.LGS传送目标指针,把指针内容装入GS.例:LGSDI,string;把段地址:偏移地址存到GS:DI.LSS传送目标指针,把指针内容装入SS.例:LSSDI,string;把段地址:偏移地址存到SS:DI.4.标志传送指令.LAHF(LoadAHwithFlags)标志寄存器传送,把标志装入AH.SAHF(StoreAHintoFlgs)标志寄存器传送,把AH内容装入标志寄存器.PUSHF(PUSHtheFlags)标志入栈.POPF(POPtheFlags)标志出栈.PUSHD32位标志入栈.POPD32位标志出栈.二、算术运算指令───────────────────────────────────────ADD加法.ADC带进位加法.INC加1.AAA加法的ASCII码调整.非压缩的BCD码加法十进制调整指令DAA加法的十进制调整.压缩的BCD码加法十进制调整指令SUB(SUBtract)减法.SBB(SuVtrachwithborrow)带借位减法.DEC(DECrement)减1.NEC(NEGate)求反(以0减之).CMP(CoMPare)比较.(两操作数作减法,仅修改标志位,不回送结果).AAS减法的ASCII码调整.非压缩的BCD码加法十进制调整指令DAS减法的十进制调整.压缩的BCD码减法十进制调整指令MUL(unsingedMULtiple)无符号乘法.IMUL(sIgnedMULtiple)整数乘法.以上两条,结果回送AH和AL(字节运算),或DX和AX(字运算),AAM乘法的ASCII码调整.DIV(unsignedDIVide)无符号除法.IDIV(sIgnedDIVide)整数除法.以上两条,结果回送:商回送AL,余数回送AH,(字节运算);或商回送AX,余数回送DX,(字运算).AAD除法的ASCII码调整.CBW(CountBytetoWord)字节转换为字.(把AL中字节的符号扩展到AH中去)CWD(CountWordtoDobleword)字转换为双字.(把AX中的字的符号扩展到DX中去)CWDE字转换为双字.(把AX中的字符号扩展到EAX中去)CDQ双字扩展.(把EAX中的字的符号扩展到EDX中去)三、逻辑运算指令───────────────────────────────────────AND与运算.or或运算.XOR异或运算.NOT取反.TEST测试.(两操作数作与运算,仅修改标志位,不回送结果).SHL(SHiftlogicalLetf)逻辑左移.SAL算术左移.(=SHL)SHR(SHiftlogicalRight)逻辑右移.SAR算术右移.(=SHR)ROL(RotateLeft)循环左移.ROR(RotateRight)循环右移.RCL(RotateLeftthroughCarry)通过进位的循环左移.RCR(RotateRightthroughCarry)通过进位的循环右移.以上八种移位指令,其移位次数可达255次.移位一次时,可直接用操作码.如SHLAX,1.移位1次时,则由寄存器CL给出移位次数.如MOVCL,04SHLAX,CL四、串指令───────────────────────────────────────DS:SI源串段寄存器:源串变址.ES:DI目标串段寄存器:目标串变址.CX重复次数计数器.AL/AX扫描值.D标志0表示重复操作中SI和DI应自动增量;1表示应自动减量.Z标志用来控制扫描或比较操作的结束.MOVS串传送.(MOVSB传送字符.MOVSW传送字.MOVSD传送双字.)CMPS(CoMPareString)串比较.(CMPSB比较字符.CMPSW比较字.)SCAS(SCAnString)串扫描指令.把AL或AX的内容与目标串作比较,比较结果反映在标志位.LODS装入串.把源串中的元素(字或字节)逐一装入AL或AX中.(LODSB传送字符.LODSW传送字.LODSD传送双字.)STOS(STOreintoString)保存串.是LODS的逆过程.REP(REPeat)当CX/ECX0时重复.REPE/REPZ(REPeatwhileEqual/Zero)当ZF=1或比较结果相等,且CX/ECX0时重复.REPNE/REPNZ(REPeatwhileNotEqual/Zero)当ZF=0或比较结果不相等,CX/ECX0时重复.REPC当CF=1且CX/ECX0时重复.REPNC当CF=0且CX/ECX0时重复.五、程序转移指令───────────────────────────────────────1无条件转移指令(长转移)JMP无条件转移指令CALL过程调用RET/RETF过程返回.2条件转移指令(短转移,-128到+127的距离内)(当且仅当(SFXOROF)=1时,OP1OP2)JA/JNBE不小于或不等于时转移.JAE/JNB大于或等于转移.JB/JNAE小于转移.JBE/JNA小于或等于转移.以上四条,测试无符号整数运算的结果(标志C和Z).JG/JNLE大于转移.JGE/JNL大于或等于转移.JL/JNGE小于转移.JLE/JNG小于或等于转移.以上四条,测试带符号整数运算的结果(标志S,O和Z).JE/JZ等于转移.JNE/JNZ不等于时转移.JC有进位时转移.JNC无进位时转移.JNO不溢出时转移.JNP/JPO奇偶性为奇数时转移.JNS符号位为0时转移.JO溢出转移.JP/JPE奇偶性为偶数时转移.JS符号位为1时转移.3循环控制指令(短转移)LOOPCX不为零时循环.LOOPE/LOOPZCX不为零且标志Z=1时循环.LOOPNE/LOOPNZCX不为零且标志Z=0时循环.JCXZCX为零时转移.JECXZECX为零时转移.4中断指令INT中断指令INTO溢出中断IRET中断返回5处理器控制指令HLT处理器暂停,直到出现中断或复位信号才继续.WAIT当芯片引线TEST为高电平时使CPU进入等待状态.ESC转换到外处理器.LOCK封锁总线.NOP空操作.STC置进位标志位.CLC清进位标志位.CMC进位标志取反.STD(SeTDirectionflag)置方向标志位.CLD(CLearDirectionflag)清方向标志位.STI置中断允许位.CLI清中断允许位.六、伪指令───────────────────────────────────────DW定义字(2字节).PROC定义过程.ENDP过程结束.SEGMENT定义段.ASSUME建立段寄存器寻址.ENDS段结束.END程序结束.8088汇编跳转cmpa,b比较a与bmova,b把b的值送给aret返回主程序nop无作用,英文“nooperation”的简写,意思是“donothing”call调用子程序je或jz若相等
本文标题:汇编语言指令集
链接地址:https://www.777doc.com/doc-3973837 .html