《汇编语言的所有指令》由会员分享,可在线阅读,更多相关《汇编语言的所有指令(16页珍藏版)》请在金锄头文库上搜索。
1、汇编语言的所有指令数据传送指令集MOV功能: 把源操作数送给目的操作数语法: MOV 目的操作数,源操作数格式: MOV r1,r2MOV r,mMOV m,rMOV r,dataXCHG功能: 交换两个操作数的数据语法: XCHG格式: XCHG r1,r2 XCHG m,r XCHG r,mPUSH,POP功能: 把操作数压入或取出堆栈语法: PUSH 操作数 POP 操作数格式: PUSH r PUSH M PUSH data POP r POP mPUSHF,POPF,PUSHA,POPA功能: 堆栈指令群格式: PUSHF POPF PUSHA POPALEA,LDS,LES功能:
2、取地址至寄存器语法: LEA r,m LDS r,m LES r,mXLAT(XLATB)功能: 查表指令 语法: XLAT XLAT m算数运算指令ADD,ADC功能: 加法指令语法: ADD OP1,OP2 ADC OP1,OP2格式: ADD r1,r2 ADD r,m ADD m,r ADD r,data影响标志: C,P,A,Z,S,OSUB,SBB功能:减法指令语法: SUB OP1,OP2 SBB OP1,OP2格式: SUB r1,r2 SUB r,m SUB m,r SUB r,data SUB m,data影响标志: C,P,A,Z,S,OINC,DEC功能:把OP的值加一
3、或减一语法: INC OP DEC OP格式: INC r/m DEC r/m影响标志: P,A,Z,S,ONEG功能:将OP的符号反相(取二进制补码)语法: NEG OP格式: NEG r/m影响标志: C,P,A,Z,S,OMUL,IMUL功能: 乘法指令语法: MUL OP IMUL OP格式: MUL r/m IMUL r/m影响标志:C,P,A,Z,S,O(仅IMUL会影响S标志)DIV,IDIV功能:除法指令语法: DIV OP IDIV OP格式: DIV r/m IDIV r/mCBW,CWD功能: 有符号数扩展指令语法: CBW CWDAAA,AAS,AAM,AAD功能: 非
4、压 BCD 码运算调整指令语法: AAA AAS AAM AAD影响标志: A,C(AAA,AAS) S,Z,P(AAM,AAD)DAA,DAS功能: 压缩 BCD 码调整指令语法: DAA DAS影响标志: C,P,A,Z,S位运算指令集AND,OR,XOR,NOT,TEST功能:执行BIT与BIT之间的逻辑运算语法: AND r/m,r/m/data OR r/m,r/m/data XOR r/m,r/m/data TEST r/m,r/m/data NOT r/m影响标志:C,O,P,Z,S(其中C与O两个标志会被设为0) NOT指令不影响任何标志位SHR,SHL,SAR,SAL功能:
5、移位指令语法: SHR r/m,data/CL SHL r/m,data/CL SAR r/m,data/CL SAL r/m,data/CL影响标志: C,P,Z,S,OROR,ROL,RCR,RCL功能: 循环移位指令语法: ROR r/m,data/CL ROL r/m,data/CL RCR r/m,data/CL RCL r/m,data/CL影响标志: C,P,Z,S,O程序流程控制指令集CLC,STC,CMC功能: 设定进位标志语法: CLC STC CMC标志位: CCLD,STD功能: 设定方向标志语法: CLD STD标志位: DCLI,STI功能: 设定中断标志语法: C
6、LI STI标志位: ICMP功能: 比较 OP1 与 OP2 的值语法: CMP r/m,r/m/data标志位: C,P,A,Z,OJMP功能: 跳往指定地址执行语法: JMP 地址JXX功能: 当特定条件成立则跳往指定地址执行语法: JXX 地址注:A: ABOVE,当 C=0,Z=0 时成立B: BELOW,当C=1时成立C: CARRY,当弁时成立CXZ: CX寄存器的值为O(ZERO)时成立E: EQUAL,当Z=1时成立G: GREATER(大于),当Z=0且S=0时成立L: LESS(小于),当S不为零时成立N: NOT(相反条件),需和其它符号配合使用O: OVERFLOW,
7、O=1 时成立P: PARITY,P=1 时成立PE: PARITY EVEN,P=1 时成立PO: PARITY ODD,P=O 时成立S: SIGN,S=1 时成立Z: ZERO,Z=1 时成立LOOP功能: 循环指令集语法: LOOP 地址LOOPE(Z)地址 LOOPNE(Z) 地址标志位: 无CALL,RET功能: 子程序调用,返回指令语法: CALL 地址 RET RET n标志位: 无INT,IRET功能: 中断调用及返回指令语法: INT n IRET标志位:在执行INT时,CPU会自动将标志寄存器的值入栈,在执行IRET时则会将堆栈中的标志值弹回寄存器字符串操作指令集MOVS
8、B,MOVSW,MOVSD功能: 字符串传送指令语法: MOVSB MOVSW MOVSD标志位: 无CMPSB,CMPSW,CMPSD功能: 字符串比较指令语法: CMPSB CMPSW CMPSD标志位: C,P,Z,S,OSCASB,SCASW功能: 字符串搜索指令语法: SCASB SCASW标志位: C,P,Z,S,OLODSB,LODSW,STOSB,STOSW功能: 字符串载入或存贮指令语法: LODSB LODSW STOSB STOSW标志位: 无REP,REPE,REPNE功能: 重复前缀指令集语法: REP 指令 S REPE 指令 S REPNE 指令 S标志位: 依指
9、令 S 而定对于 IBM PC 机它有它的指令系统,其中包括:数据传送指令、串处理指令、算术指令、控制移动指令、 逻辑指令、处理机控制指令。这里将简单介绍其指令类型及指令说明,如有要求给具体的指令格式及应用,请与amay联系,amay加以 更新。1)数据传送指令:负责把数据、地址或立即数传送到寄存器或存储单元中。数据传送指令类型 指 令 说 明通用数据传送指令MOV (传送)、PUSH (进栈)、POP (出栈)、XCHG (交换)累加器专用传送指令IN (输入指令)、OUT (输入指令)地址传送指令LEA (有效地址送寄存器)、LDS (指针送寄存器和DS)、LES (指针送寄存器和ES)标
10、志寄存器传送指令LAHF (标志送AH)、SAHF (AH送标志寄存器)、PUSHF (标志进栈)、POPF (标 志出栈)2)算术指令:用来执行算术运算。算术指令类型 指 令 说 明加法指令ADD (加法)、ADC (带进位加法)、INC (加1)减法指令SUB (减法)、SBB (带借位减法)、DEC (减1)、NEG (求补)、CMP (比较)乘法指令MUL (无符号数乘法)、IMUL (带符号数乘法)除法指令DIV (无符号数除法)、IDIV (带符号数除法)、CBW (字节转换为字)、CWD (字转换为双字)3)逻辑指令:对字或字节执行逻辑运算。逻辑指令类型 指 令 说 明逻辑运算指
11、令AND (逻辑与)、OR (逻辑或)、NOT (逻辑非)、XOR (异或)、TEST (测试)移动指令SHL (逻辑左移)、SAL (算术左移)、SHR (逻辑右移)、SAR (算术右移)、ROL (循环左移)、ROR (循环右移)、RCL (带进位循环左移)、RCR (带进位右移)4)串处理指令:处理存放存储器里的数据串。串处理指令类型 指 令 说 明指 令MOVS (串传送)、CMPS (串比较)、SCAS (串扫描)、LODS (从串取)、STOS (存入串)5)控制转移指令:用来控制程序的执行流程。控制转移指令类型 指 令 说 明无条件转移指令JMP (段间和段内转移)条件转移指令J
12、Z (结果为0 (或相等)则转移)、JS (结果为负则转移)、JNS (结果为正则转移)、JO (溢出则转移)、JNO (不溢出则转移)、JP (奇偶位为1则转移)、JNP (奇偶位为0则转移)循环指令LOOP (循环指令)、LOOPPZ/LOOPE (当为0或相等时循环指令)、LOOPNZ/LOOPNE (当不为 0 或不相等时循环指令)子程序指令CALL (调用指令)、RET (返回指令)中断指令INT (中断)、INTO (如溢出则中断)、RIET (从中断返回)6)处理机控制指令:处理机控制指令类型 指 令 说 明标志处理指令CLC (进位位置0指令)、CMC (进位位求反指令)、ST
13、C (进位位置为1指令)、CLD (方向标志置1指令)、STD (方向标志位置1指令)、CLI (中断标志置0指令)、STI (中断标志置1指令)其他处理机控制指令NOP (无操作)、HLT (停机)、WAIT (等待)、ESC (换码)、LOCK (封锁)汇编语言程序格式汇编语言源程序用语句书写,MASM中可利用的语句分成两类,他们是指令性语句和伪指令语句1指令性语句:指令性语句与机械指令相对应,汇编程序将他翻译成目标代码(机械指令代码)。语句格为:标号:指令助记符 操作数,操作数;注释标号表示指令语句的符号地址,标号后面必需紧跟“:”。标号能够省略,他 常常作为转移指令或CALL指令的一个
14、操作数,用以表示地址的转移。指令助记符是该语句的指令名称的代表号码,他指出操作的类型,汇编程序将 其翻译成机械指令。不可省略。操作数表示参加本指令的运算数据,依照指令的操作类型,操作数不同,中间 必需用“,”隔开。注释指明一条指令的功能,能够省略。2伪指令语句伪指令语句没有对应的机械指令。汇编程序汇编源程序时对伪指令进行处置, 他能够完成数据概念,存储区分派,段概念,段分派,指示程序终止功能。伪指 令语句的格式为:名字伪指令指示符操作数,操作数;注释名字时给伪指令取得名称,他用符号地址表示。伪指令中的名字一般是变量名, 段名,进程名、符号名等。伪指令指示符是汇编程序MASM规定的符号。操作数是
15、依照伪指令的具体要求来得。3数据项汇编语言中利用的操作数,能够是常数、寄放器、存储器、变量、标号活表达 式,其中藏书、变量和标号是三种大体数据项。常数必需是固定的值,没有属性,是确信的数据。变量在程序运行中是能够修改的。所有的变量具有三种属性段值(SEGMENT):指明变量所在段的基址 段内偏移地址(OFFSET):指变量所在地址与段首地址之间的偏移字节数。 类型(TYPE):变量的类型属性指变量中每一个单元所包括的字节数,类 型有:字节变量(BYTE)、字变量(WORD)、双字变量(DOUBLE WORD)标号:标号是指可执行指令语句的地址的符号表示,他可作为转移指令和挪 用指令的目标操作数,以确信程序转换的目标地址,他具有三个属性。 段值(SEGMENT):指明标号所在段的基址。 段内偏移地址(OFFS