1、汇编指令英文全称:1.通用数据传送指令MOVm ovedest,rc;destsrcMOV指令把一个字节或字的操作数从源地址src传送至目的地址dest。MOVSXextndem ovewithsigndatZ-extndem oveithzerodatPUSHpushO-po进栈出栈指令PUSHApushalO-poalPUSHADpushaldatO-poaldatBSWAPbyteswapXCHG-exchange交换指令用来将源操作数和目的操作数内容交换,操作数可以是字、也可以是字节,可以在通用寄存器与通用寄存器或存储器之间对换数据,但不能在存储器与存储器之间对换数据。m ovax,1
2、234h;ax=1234hm ovbx,5678h;bx5678hxchgax,b;ax=5678h,bx=1234hxchgah,l;ax7856hCMPXCHGcom pareandchangeXADexchangeandadXLATtranslate换码指令用于将BX指定的缓冲区中、AL指定的位移处的数据取出赋给AL。2.输入输出端口传送指令INinputOUT-outpt3.目的地址传送指令LEAloadefctiveadres有效地址传送指令m ovbx,040hm ovsi,3chleabx,bx+si0f62h;BX=139EH这里BX得到的是主存单元的有效地址,不是物理地址,也
3、不是该单元的内容。LDSloadDSE-loadELFSloadFSLGSloadGS-load4.标志传送指令LAHFloadAHfrom flagS-savetoflagPUHFpushflagO-poflagPUSHDpushdflagO-podflag二、算术运算指令ADad加法指令m oval,0fbh;al=0fbhadal,07h;al=02hADCadwithcaryIN-increase1AasciadwithadjustD-decim aladithadjustSUBsubstract-substractwithborwDECdecrase1N-negativeCMPcom
4、 pareAS-asciadjustonsubstractDdecim aladjustonsubstractMUL-m ultiplicationI integrm ultiplicationAM-asciadjustonm ultiplicationDIVdivideII-integrdivdeADasciadjustondivdeCBW-changebytetowordDchangewordtodublewordCWE-changeordtodubleordwithsigntoEAXDQchangedoublewordtoquadrateord三、逻辑运算指令ANDandor-orXOR
5、xorNT-notTESTtestHL-shiftleftSAarithm aticshiftleftHR-shiftrightSAarithm aticshiftrightROL-rotaelftrotaerightRCL-rotaelftwithcaryrotaerightithcary四、串指令MOVSm ovestringCP-com parestringSASscanstringLOD-loadstringSTSstorestringREP-repatrepatwhenqualREPZ-repathenzeroflagNErepatwhenotequalREPZ-repathenze
6、roflagCrepatwhencaryflagREPN-repathenotcaryflag五、程序转移指令1无条件转移指令(长转移)JMPjum pCAL-calRETreturnF-returnfar2条件转移指令(短转移,-128到+127的距离内)JAEjum pwhenaboveorequalJNB-jum phenotbelowJjum pwhenbelowJNAE-jum phenotaboveorequalJBjum pwhenbeloworequalJNA-jum phenotaboveJGjum pwhengreatrJNLE-jum phenotlesorequalJG
7、Ejum pwhengreatrorequalJNL-jum phenotlesJjum pwhenlesJNGE-jum phenotgreatrorequalJLjum pwhenlesorequalJNG-jum phenotgreatrJEjum pwhenqualJZ-jum phenhaszeroflagJNEjum pwhenotequalJZ-jum phenothaszeroflagJCjum pwhenhascaryflagJN-jum phenothascaryflagJOjum pwhenothasoverflowflagJNP-jum phenothasparityf
8、lagJOjum pwhenparityflagisodJNS-jum phenothasignflagJOjum pwhenhasoverflowflagJP-jum phenhasparityflagJEjum pwhenparityflagisevnJS-jum phenhasignflag3循环控制指令(短转移)LOPlopE-lopequalLOPZlopzeroNE-lopnotequalLOPZlopnotzeroJCX-jum pwhenCXiszeroJEZjum phenEiszero4中断指令INTinteruptIO-overflowinteruptIRETinteru
9、ptreturn5处理器控制指令HLThaltWAI-waitESCescapeLOK-lockNPnoperationSTCsetcaryL-clearcaryCMcarym akechangeSTD-setdirectionCLcleardirectionSTI-setinteruptCLIclearinterupt六、伪指令DWdefinwordPROC-procedureENDPendofprocedureSGMENTsegm ntAU-asum eENDSendsegm nt-end汇编指令中文释义数据传输指令它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据.1.通用数据传送指
10、令.MOV传送字或字节.SX先符号扩展,再传送.MOVZ先零扩展,再传送.PUSH把字压入堆栈.O把字弹出堆栈.PUSHA把AX,C,DX,B,SP,B,SI,DI依次压入堆栈.O把DI,SI,BP,S,DX,C,AX依次弹出堆栈.PUSHA把EAX,ECX,E,EB,ESP,EBP,ESI,EDI依次压入堆栈.OD把DI,SI,BP,SP,X,DX,CX,AX依次弹出堆栈.BSWAP交换32位寄存器里字节的顺序XCHG交换字或字节.(至少有一个操作数为寄存器,段寄存器不可作为操作数)MPXCHG比较并交换操作数.(第二个操作数必须为累加器AL/X/EAX)XAD先交换再累加.(结果在第一个操
11、作数里)LT字节查表转换.BX指向一张256字节的表的起点,AL为表的索引值(0-25,即0-FH);返回AL为查表结果.(BX+-)2.输入输出端口传送指令.INI/O端口输入.(语法:IN累加器,端口号DX)UTI/端口输出.(语法:OUT端口号,累加器)输入输出端口由立即方式指定时,其范围是0-25;由寄存器DX指定时,其范围是0-6535.3.目的地址传送指令.LEA装入有效地址.例:LEADX,string;把偏移地址存到DX.DS传送目标指针,把指针内容装入S.例:LSI,string;把段地址:偏移地址存到DS:I.ES传送目标指针,把指针内容装入ES.例:LDI,string;
12、把段地址:偏移地址存到ES:DI.FS传送目标指针,把指针内容装入FS.例:LDI,string;把段地址:偏移地址存到FS:DI.GS传送目标指针,把指针内容装入GS.例:LDI,string;把段地址:偏移地址存到GS:DI.S传送目标指针,把指针内容装入S.例:LSDI,string;把段地址:偏移地址存到S:DI.4.标志传送指令.LAHF标志寄存器传送,把标志装入AH.S标志寄存器传送,把AH内容装入标志寄存器.PUHF标志入栈.O标志出栈.PUSHD32位标志入栈.O32位标志出栈.二、算术运算指令AD加法.C带进位加法.IN加1.A加法的ASCI码调整.D加法的十进制调整.SUB
13、减法.带借位减法.DEC减1.N求反(以0减之).CMP比较.(两操作数作减法,仅修改标志位,不回送结果).AS减法的ASCI码调整.D减法的十进制调整.MUL无符号乘法.I整数乘法.以上两条,结果回送AH和AL(字节运算),或DX和AX(字运算),AM乘法的ASCI码调整.DIV无符号除法.II整数除法.以上两条,结果回送:商回送AL,余数回送AH,(字节运算);或商回送X,余数回送DX,(字运算).AD除法的ASCI码调整.CBW字节转换为字.(把AL中字节的符号扩展到AH中去)CWD字转换为双字.(把AX中的字的符号扩展到DX中去)E字转换为双字.(把中的字符号扩展到EA中去)CDQ双字
14、扩展.(把EAX中的字的符号扩展到DX中去)三、逻辑运算指令AND与运算.or或运算.XOR异或运算.NT取反.ES测试.(两操作数作与运算,仅修改标志位,不回送结果).HL逻辑左移.SA算术左移.(=SHL)HR逻辑右移.SA算术右移.(=SHR)当值为负时,高位补1;当值为正时,高位补0ROL循环左移.循环右移.RCL通过进位的循环左移.通过进位的循环右移.以上八种移位指令,其移位次数可达25次.移位一次时,可直接用操作码.如SHLAX,1.移位1次时,则由寄存器CL给出移位次数.如MOVCL,04SHLAX,四、串指令DS:I源串段寄存器:源串变址.E:I目标串段寄存器:目标串变址.CX
15、重复次数计数器.AL/扫描值.D标志0表示重复操作中SI和DI应自动增量;1表示应自动减量.Z标志用来控制扫描或比较操作的结束.MOVS串传送.( B传送字符.MOVSW传送字.MOVSD传送双字.)CMPS串比较.( B比较字符.CMPSW比较字.)SCAS串扫描.把L或AX的内容与目标串作比较,比较结果反映在标志位.LODS装入串.把源串中的元素(字或字节)逐一装入AL或AX中.(LODSB传送字符.LODSW传送字.ODS传送双字.)ST保存串.是LODS的逆过程.REP当CX/ECX0时重复.REPN/ N当0或比较结果不相等,且/ECX0时重复.REPN当0且/ 0时重复.五、程序转
16、移指令1无条件转移指令(长转移)JMP无条件转移指令CAL过程调用RET/RETF过程返回.2条件转移指令(短转移,-128到+127的距离内)(当且仅当(SFXORF)=1时,OP1JA/JNBE不小于或不等于时转移.JAE/JNB大于或等于转移.JB/JAE小于转移.JE/JN小于或等于转移.以上四条,测试无符号整数运算的结果(标志C和Z).JG/JNLE大于转移.JE/J大于或等于转移.JL/JNGE小于转移.JE/J小于或等于转移.以上四条,测试带符号整数运算的结果(标志S,O和Z).JE/JZ等于转移.JN/JN不等于时转移.JC有进位时转移.JN无进位时转移.JO不溢出时转移.JN
17、P/J奇偶性为奇数时转移.JS符号位为“0时转移.JO溢出转移.JP/JE奇偶性为偶数时转移.JS符号位为“1时转移.3循环控制指令(短转移)LOPCX不为零时循环.E/LOPZCX不为零且标志Z=1时循环.LOPN/ N不为零且标志0时循环.JCXZCX为零时转移.JEE为零时转移.4中断指令INT中断指令IO溢出中断IRET中断返回5处理器控制指令HLT处理器暂停,直到出现中断或复位信号才继续.WAI当芯片引线TEST为高电平时使CPU进入等待状态.ESC转换到外处理器.LOK封锁总线.NP空操作.STC置进位标志位.L清进位标志位.CM进位标志取反.STD置方向标志位.CL清方向标志位.
18、STI置中断允许位.CLI清中断允许位.六、伪指令DW定义字(2字节).PROC定义过程.ENDP过程结束.SGMENT定义段.AU建立段寄存器寻址.ENDS段结束.程序结束.汇编语言中常用寄存器的英文缩写:AH& LAX(acum lator):累加寄存器 B&B(base):基址寄存器 CH& LCX(count):计数寄存器D&D(dat):数据寄存器 SP(StackPointer):堆栈指针寄存器B(Baseointer):基址指针寄存器 SI(SourceIndex):源变址寄存器DI(DestinationIdex):目的变址寄存器 IP(InstructionPointer):
19、指令指针寄存器 CS(CodeSegm nt)代码段寄存器D(Dategm nt):数据段寄存器S(StackSegm nt):堆栈段寄存器 E(Extraegm nt):附加段寄存器OFoverflowflag溢出标志操作数超出机器能表示的范围表示溢出,溢出时为1.SsignFlag符号标志记录运算结果的符号,结果负时为1. ZFzeroflag零标志运算结果等于0时为1,否则为0.CFcaryflag进位标志最高有效位产生进位时为1,否则为0. Aauxilarycaryflag辅助进位标志运算时,第3位向第4位产生进位时为1,否则为0. PFparityflag奇偶标志运算结果操作数位为1的个数为偶数个时为1,否则为0. Ddirecionflag方向标志用于串处理.DF=1时,每次操作后使SI和DI减小.DF=0时则增大.IFinteruptflag中断标志IF=1时,允许CPU响应可屏蔽中断,否则关闭中断. Ttrapflag陷阱标志用于调试单步操作.