汇编语言指令集.docx

上传人:scccc 文档编号:13261981 上传时间:2021-12-20 格式:DOCX 页数:18 大小:35.34KB
返回 下载 相关 举报
汇编语言指令集.docx_第1页
第1页 / 共18页
汇编语言指令集.docx_第2页
第2页 / 共18页
汇编语言指令集.docx_第3页
第3页 / 共18页
汇编语言指令集.docx_第4页
第4页 / 共18页
汇编语言指令集.docx_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《汇编语言指令集.docx》由会员分享,可在线阅读,更多相关《汇编语言指令集.docx(18页珍藏版)》请在三一文库上搜索。

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 m PUSHF,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标志位: C CLD,STD功能: 设定方向标志语法: CLD STD标志位: D CLI,STI功能: 设定中断标

6、志语法: CLI 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寄存器的值为0(ZERO)时成立 E: EQUAL,当Z=1时成立 G: GREATER(大于),当Z=0且S=0时成立 L: LESS(小于),当S不为零时成立 N: NOT(相反条件),需和其它符号配合使用 O:

7、 OVERFLOW,O=1时成立 P: PARITY,P=1时成立 PE: PARITY EVEN,P=1时成立 PO: PARITY ODD,P=0时成立 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时则会将堆栈中的标志值弹回寄存器 字

8、符串操作指令集MOVSB,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 指令

9、S标志位: 依指令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)逻辑指令:对字或字节执行逻辑运算。 逻辑指令类型 指 令说明逻辑运算指令 AND(逻辑与)、OR(逻辑或)、

11、NOT(逻辑非)、XOR(异或)、TEST(测试)移动指令 SHL(逻辑左移)、SAL(算术左移)、SHR(逻辑右移)、SAR(算术右移)、ROL(循环左移)、ROR(循环右移)、RCL(带进位循环左移)、RCR(带进位右移) 4)串处理指令:处理存放存储器里的数据串。 串处理指令类型 指令说明指 令 MOVS(串传送)、CMPS(串比较)、SCAS(串扫描)、LODS(从串取)、STOS(存入串) 5)控制转移指令:用来控制程序的执行流程。 控制转移指令类型 指 令 说明无条件转移指令 JMP(段间和段内转移)条件转移指令 JZ(结果为0(或相等)则转移)、JS(结果为负则转移)、JNS(结

12、果为正则转移)、JO(溢出则转移)、JNO(不溢出则转移)、JP(奇偶位为1则转移)、JNP(奇偶位为0则转移)循环指令 LOOP(循环指令)、LOOPPZ/LOOPE(当为0或相等时循环指令)、LOOPNZ/LOOPNE(当不为0或不相等时循环指令)子程序指令 CALL(调用指令)、RET(返回指令)中断指令 INT(中断)、INTO(如溢出则中断)、RIET(从中断返回) 6)处理机控制指令: 处理机控制指令类型 指令说明 标志处理指令 CLC(进位位置0指令)、CMC(进位位求反指令)、STC(进位位置为1指令)、CLD(方向标志置1指令)、STD(方向标志位置1指令)、CLI(中断标志

13、置0指令)、STI(中断标志置1指令)其他处理机控制指令 NOP(无操作)、HLT(停机)、WAIT(等待)、ESC(换码)、LOCK(封锁)单片机教程,五系列(55讲)电子书全集下载 论坛精选: 单片机c语言,10小时学会C 语言 (一)第一章 C 语言简介与Turbo C 的使用 单片机c语言,10小时学会C 语言 (二)第二章 C 程序的结构 单片机c语言,10小时学会C 语言 (三)第三章 常数与变数 单片机c语言,10小时学会C 语言 (四)第四章 基本输出入函式 单片机c语言,10小时学会C 语言 (五)第五章 流程图与抉择指令 单片机c语言,10小时学会C 语言 (六)第六章 循

14、环与自动重复 单片机c语言,10小时学会C 语言 (七)第七章 数组与指针 单片机c语言,10小时学会C 语言 (八)第八章 函数与呼叫 单片机c语言,10小时学会C 语言 (九)第九章 档案存取1 楼 提交者:华胄斑竹 在 2008-5-26 14:55:57 汇编语言指令 指令系统确定了CPU所能完成的功能,是用汇编语言进行程序设计的最基本部分。如果不熟悉汇编指令的功能及其有关规定,那么,肯定不能灵活运用汇编语言。所以,本章的内容是学习本课程的重点和难点。 5.1 汇编语言指令格式 为了介绍指令系统中指令的功能,先要清楚汇编语言是如何书写指令的,这就象在学习高级语言程序设计时,要清楚高级语

15、言语句的语义、语法及其相关规定一样。 5.1.1 指令格式 汇编语言的指令格式如下: 指令助忆符 操作数1 , 操作数2 , 操作数3;注释 指令助忆符体现该指令的功能,它对应一条二进制编码的机器指令。指令的操作数个数由该指令的确定,可以没有操作数,也可以有一个、二个或三个操作数。绝大多数指令的操作数要显式的写出来,但也有指令的操作数是隐含的,不需要在指令中写出。 当指令含有操作数,并要求在指令中显式地写出来时,则在书写时必须遵守: 指令助忆符和操作数之间要有分隔符,分隔符可以是若干个空格或TAB键; 如果指令含有多个操作数,那么,操作数之间要用逗号","分开。 指令后面还

16、可以书写注释内容,不过,要在注释之前书写分号";"。 5.1.2 了解指令的几个方面 在学习汇编指令时,指令的功能无疑是我们学习和掌握的重点,但要准确、有效地运用这些指令,我们还要熟悉系统对每条指令的一些规定或约束。 归纳起来,对指令还要掌握以下几个方面内容: 、要求指令操作数的寻址方式; 、指令对标志位的影响、标志位对指令的影响; 、指令的执行时间,对可完成同样功能的指令,要选用执行时间短的指令汇编指令系统 指令系统是CPU指令的集合,CPU除了具有计算功能的指令外,还有实现其它功能的指令,也有为某种特殊的应用而增设的指令。 通常,把指令按其功能分成以下几大类: 数据传送

17、指令 标志位操作指令 算术运算指令 逻辑运算指令 移位操作指令 位操作指令 比较运算指令 下面,我们逐一介绍每类指令中的指令。循环指令 转移指令 条件设置字节指令 字符串操作指令 ASCII-BCD码运算调整指令 处理器指令 5.2.1 数据传送指令 数据传送指令又分为:传送指令、交换指令、地址传送指令、堆栈操作指令、转换指令和I/O指令等。 除了标志位操作指令SAHF和POPF指令外,本类的其它指令都不影响标志位。 1、传送指令MOV(Move Instruction) 传送指令是使用最频繁的指令,它相对于高级语言里的赋值语句。指令的格式如下: MOV Reg/Mem, Reg/Mem/Im

18、m 其中:RegRegister(寄存器),MemMemory(存储器),ImmImmediate(立即数),它们可以是8位、16位或32位(特别指出其位数的除外)。在本网络课件的网页中,都将采用上述缩写,此后不再说明。 指令的功能是把源操作数(第二操作数)的值传给目的操作数(第一操作数)。指令执行后,目的操作数的值被改变,而源操作数的值不变。在存储单元是该指令的一个操作数时,该操作数的寻址方式可以是任意一种存储单元寻址方式。 下面列举几组正确的指令例子: 源操作数是寄存器 MOV CH, ALMOV BP, SPMOV ECX, EBX MOV DS, AXMOV BX, CHMOV BX+

19、SI, AX 源操作数是存储单元 MOV AL, 100HMOV BX, ES:DIMOV EDX, BX MOV BX, VARWMOV AX, BX+SIMOV CH, BX+DI+100H 其中:VARW是字类型内存变量(下同)。 源操作数是立即数 MOV AL, 89HMOV BX, -100HMOV EDX, 12345678H MOV VARW, 200HMOV BX, 2345HMOV BX+DI, 1234H 在汇编语言中,主要的数据传送方式如图所示。虽然一条MOV指令能实现其中大多数的数据传送方式,但也存在MOV指令不能实现的传送方式。 图5.1 MOV指令数据传送示意图 对

20、MOV指令有以下几条具体规定,其中有些规定对其它指令也同样有效。 1)、两个操作数的数据类型要相同,要同为8位、16位或32位;如:MOV BL, AX等是不正确的; 2)、两个操作数不能同时为段寄存器,如:MOV ES, DS等; 3)、代码段寄存器CS不能为目的操作数,但可作为源操作数,如:指令MOV CS, AX等不正确,但指令MOV AX, CS等是正确的; 4)、立即数不能直接传给段寄存器,如:MOV DS, 100H等; 5)、立即数不能作为目的操作数,如:MOV 100H, AX等; 6)、指令指针IP,不能作为MOV指令的操作数; 7)、两个操作数不能同时为存储单元,如:MOV

21、 VARA, VARB等,其中VARA和VARB是同数据类型的内存变量。 对于规定2、4和7,我们可以用通用寄存器作为中转来达到最终目的。表列举一个可行的解决方案,尽供参考。读者可考虑用其它办法来完成同样的功能。 表5.1 MOV指令的变通方法 功能描述不正确的指令可选的解决方法 把DS的值传送给ESMOV ES, DSMOV AX, DS MOV ES, AX 把100H传给DSMOV DS, 100HMOV AX, 100H MOV DS, AX 把字变量VARB的值传送给字变量VARAMOV VARA, VARBMOV AX, VARB MOV VARA, AX 对于情况1:不同位数数据

22、之间的传送问题,在80386及其以后的CPU中,增加一组新的指令传送-填充指令,它可把位数少的源操作数传送给位数多的目的操作数,多出的部分按指令的规定进行填充。3 楼 提交者:华胄斑竹 在 2008-5-26 14:58:04 传送填充指令(Move-and-Fill Instruction) 2、传送填充指令(Move-and-Fill Instruction) 传送填充指令是把位数短的源操作数传送给位数长的目的操作数。指令格式如下: MOVSX/MOVZX Reg/Mem, Reg/Mem/Imm;80386+ 其中:80386+表示80386及其之后的CPU,其它类似符号含义类同,不再说

23、明。 指令的主要功能和限制与MOV指令类似,不同之处是:在传送时,对目的操作数的高位进行填充。根据其填充方式,又分为:符号填充和零填充。 传送填充指令的功能如图所示。 (a). MOVSX的执行效果 (b). MOVZX的执行效果 图5.2 传送填充指令执行过程示意图 、符号填充指令MOVSX(Move with Sign-Extend) MOVSX的填充方式是:用源操作数的符号位来填充目的操作数的高位数据位。 、零填充指令MOVZX(Move with Zero-Extend) MOVZX的填充方式是:恒用0来填充目的操作数的高位数据位。 例5.1 已知:AL=87H,指令MOVSX CX,

24、 AL,MOVZX DX, AL执行后,问CX和DX的值是什么? 解:根据传送-填充指令的填充方式可知: 指令MOVSX CX, AL执行后,(CX)=0FF87H,指令MOVZX DX, AL执行后,(DX)=0087H。 从上例可看出,两条指令的源操作数完全一样,但因为它们的填充方式不同,所得到的结果而就不同。 试比较下列指令,分析它们执行结果的相同和不同之处: MOVAX, 87HMOVSXAX, 87HMOVZXAX, 87H 3、交换指令XCHG(Exchange Instruction) 交换指令XCHG是两个寄存器,寄存器和内存变量之间内容的交换指令,两个操作数的数据类型要相同。

25、其指令格式如下: XCHG Reg/Mem, Reg/Mem 该指令的功能和MOV指令不同,后者是一个操作数的内容被修改,而前者是两个操作数都会发生改变。寄存器不能是段寄存器,两个操作数也不能同时为内存变量。 XCHG指令的功能如图所示。 图5.3 XCHG指令的执行功能示意图 例5.2 已知:AX=5678H,BX=1234H,指令XCHG AX, BX执行后,AX和BX的值是什么? 解:这是两个寄存器内容进行交换,指令执行后,有:(AX)=1234H,(BX)=5678H。4 楼 提交者:华胄斑竹 在 2008-5-26 14:58:36 协议状态码的含义 "100"

26、: Continue "101" : witching Protocols "200" : OK "201" : Created "202" : Accepted "203" : Non-Authoritative Information "204" : No Content "205" : Reset Content "206" : Partial Content "300" : Multiple Choices

27、"301" : Moved Permanently "302" : Found "303" : See Other "304" : Not Modified "305" : Use Proxy "307" : Temporary Redirect "400" : Bad Request "401" : Unauthorized "402" : Payment Required "403" : Fo

28、rbidden "404" : Not Found "405" : Method Not Allowed "406" : Not Acceptable "407" : Proxy Authentication Required "408" : Request Time-out "409" : Conflict "410" : Gone "411" : Length Required "412" : Precondit

29、ion Failed "413" : Request Entity Too Large "414" : Request-URI Too Large "415" : Unsupported Media Type "416" : Requested range not satisfiable "417" : Expectation Failed "500" : Internal Server Error "501" : Not Implemented &quo

30、t;502" : Bad Gateway "503" : Service Unavailable "504" : Gateway Time-out "505" : Version not supported5 楼 提交者:华胄斑竹 在 2008-5-26 15:01:04 汇编语言指令集 一、数据传输指令 1. 通用数据传送指令. MOV (MOVe) 传送字或字节.MOVS (MOVe String) 串传送指令MOVSX 先符号扩展,再传送.MOVZX 先零扩展,再传送.PUSH 把字压入堆栈.POP 把字弹出堆栈.PU

31、SHA 把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 先交换再累加.( 结果在第一个操作数里 )XLA

32、T (TRANSLATE) 字节查表转换. BX 指向一张 256 字节的表的起点, AL 为表的索引值 (0-255,即0-FFH); 返回 AL 为查表结果. ( BX+AL->AL ) 2. 输入输出端口传送指令. IN I/O端口输入. ( 语法: IN 累加器, 端口号DX )OUT I/O端口输出. ( 语法: OUT 端口号DX,累加器 ) 输入输出端口由立即方式指定时, 其范围是 0-255; 由寄存器 DX 指定时,其范围是 0-65535. 3. 目的地址传送指令. LEA (Load Effective Address)装入有效地址. 例: LEA DX,strin

33、g ;把偏移地址存到DX.LDS (Load DS with pointer)传送目标指针,把指针内容装入DS. 例: LDS SI,string ;把段地址:偏移地址存到DS:SI.LES (Load ES with pointer)传送目标指针,把指针内容装入ES. 例: LES DI,string ;把段地址:偏移地址存到ES:DI.LFS 传送目标指针,把指针内容装入FS. 例: LFS DI,string ;把段地址:偏移地址存到FS:DI.LGS 传送目标指针,把指针内容装入GS. 例: LGS DI,string ;把段地址:偏移地址存到GS:DI.LSS 传送目标指针,把指针内

34、容装入SS. 例: LSS DI,string ;把段地址:偏移地址存到SS:DI. 4. 标志传送指令. LAHF (Load AH with Flags)标志寄存器传送,把标志装入AH.SAHF (Store AH into Flgs)标志寄存器传送,把AH内容装入标志寄存器.PUSHF (PUSH the Flags)标志入栈.POPF (POP the Flags)标志出栈.PUSHD 32位标志入栈.POPD 32位标志出栈. 二、算术运算指令ADD 加法.ADC 带进位加法.INC 加 1.AAA 加法的ASCII码调整.非压缩的BCD码加法十进制调整指令DAA 加法的十进制调整.

35、压缩的BCD码加法十进制调整指令SUB (SUBtract)减法.SBB (SuVtrach with borrow)带借位减法.DEC (DECrement)减 1.NEC (NEGate)求反(以 0 减之).CMP (CoMPare)比较.(两操作数作减法,仅修改标志位,不回送结果).AAS 减法的ASCII码调整.非压缩的BCD码加法十进制调整指令DAS 减法的十进制调整.压缩的BCD码减法十进制调整指令MUL (unsinged MULtiple)无符号乘法.IMUL (sIgned MUL tiple)整数乘法. 以上两条,结果回送AH和AL(字节运算),或DX和AX(字运算),A

36、AM 乘法的ASCII码调整.DIV (unsigned DIVide)无符号除法.IDIV (sIgned DIVide)整数除法. 以上两条,结果回送:商回送AL,余数回送AH, (字节运算);或 商回送AX,余数回送DX, (字运算).AAD 除法的ASCII码调整.CBW (Count Byte to Word)字节转换为字. (把AL中字节的符号扩展到AH中去)CWD (Count Word to Doble word)字转换为双字. (把AX中的字的符号扩展到DX中去)CWDE 字转换为双字. (把AX中的字符号扩展到EAX中去)CDQ 双字扩展. (把EAX中的字的符号扩展到ED

37、X中去) 三、逻辑运算指令AND 与运算.or 或运算.XOR 异或运算.NOT 取反.TEST 测试.(两操作数作与运算,仅修改标志位,不回送结果).SHL (SHift logical Letf)逻辑左移.SAL 算术左移.(=SHL)SHR (SHift logical Right)逻辑右移.SAR 算术右移.(=SHR)ROL (Rotate Left )循环左移.ROR (Rotate Right)循环右移.RCL (Rotate Left through Carry)通过进位的循环左移.RCR (Rotate Right through Carry)通过进位的循环右移. 以上八种移

38、位指令,其移位次数可达255次. 移位一次时, 可直接用操作码. 如 SHL AX,1. 移位>1次时, 则由寄存器CL给出移位次数. 如 MOV CL,04 SHL AX,CL 四、串指令DS:SI 源串段寄存器 :源串变址.ES:DI 目标串段寄存器:目标串变址.CX 重复次数计数器.AL/AX 扫描值.D标志 0表示重复操作中SI和DI应自动增量; 1表示应自动减量.Z标志 用来控制扫描或比较操作的结束.MOVS 串传送.( MOVSB 传送字符. MOVSW 传送字. MOVSD 传送双字. )CMPS (CoMPare String)串比较.( CMPSB 比较字符. CMPS

39、W 比较字. )SCAS (SCAn String)串扫描指令.把AL或AX的内容与目标串作比较,比较结果反映在标志位.LODS 装入串.把源串中的元素(字或字节)逐一装入AL或AX中.( LODSB 传送字符. LODSW 传送字. LODSD 传送双字. )STOS (STOre into String)保存串.是LODS的逆过程.REP (REPeat)当CX/ECX<>0时重复.REPE/REPZ (REPeat while Equal/Zero)当ZF=1或比较结果相等,且CX/ECX<>0时重复.REPNE/REPNZ (REPeat while Not E

40、qual/Zero)当ZF=0或比较结果不相等,CX/ECX<>0时重复.REPC 当CF=1且CX/ECX<>0时重复.REPNC 当CF=0且CX/ECX<>0时重复. 五、程序转移指令1>无条件转移指令 (长转移)JMP 无条件转移指令CALL 过程调用RET/RETF过程返回. 2>条件转移指令 (短转移,-128到+127的距离内)( 当且仅当(SF XOR OF)=1时,OP1JA/JNBE 不小于或不等于时转移.JAE/JNB 大于或等于转移.JB/JNAE 小于转移.JBE/JNA 小于或等于转移.以上四条,测试无符号整数运算的结

41、果(标志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>循环控制指令(短转移)LOOP CX不为零时循环.LOOPE/LOOPZ CX不为零且标志Z

42、=1时循环.LOOPNE/LOOPNZ CX不为零且标志Z=0时循环.JCXZ CX为零时转移.JECXZ ECX为零时转移. 4>中断指令INT 中断指令INTO 溢出中断IRET 中断返回 5>处理器控制指令HLT 处理器暂停, 直到出现中断或复位信号才继续.WAIT 当芯片引线TEST为高电平时使CPU进入等待状态.ESC 转换到外处理器.LOCK 封锁总线.NOP 空操作.STC 置进位标志位.CLC 清进位标志位.CMC 进位标志取反.STD (SeT Direction flag)置方向标志位.CLD (CLear Direction flag)清方向标志位.STI 置

43、中断允许位.CLI 清中断允许位. 六、伪指令DW 定义字(2字节).PROC 定义过程.ENDP 过程结束.SEGMENT 定义段.ASSUME 建立段寄存器寻址.ENDS 段结束.END 程序结束.8088 汇编跳转 cmp a,b 比较a与b mov a,b 把b的值送给a ret 返回主程序 nop 无作用,英文“no operation”的简写,意思是“do nothing” call 调用子程序 je 或jz 若相等则跳 jne或jnz 若不相等则跳 jmp 无条件跳 jb 若小于则跳 ja 若大于则跳 jg 若大于则跳 jge 若大于等于则跳 jl 若小于则跳 jle 若小于等于

44、则跳 pop 出栈 push 压栈 MOV 功能: 把源操作数送给目的操作数 语法: MOV 目的操作数,源操作数 格式: MOV r1,r2 MOV r,m MOV m,r MOV r,data XCHG 功能: 交换两个操作数的数据 语法: XCHG 格式: XCHG r1,r2 XCHG m,r XCHG r,m PUSH,POP 功能: 把操作数压入或取出堆栈 语法: PUSH 操作数 POP 操作数 格式: PUSH r PUSH M PUSH data POP r POP m PUSHF,POPF,PUSHA,POPA 功能: 堆栈指令群 格式: PUSHF POPF PUSHA

45、POPA LEA,LDS,LES 功能: 取地址至寄存器 语法: LEA r,m LDS r,m LES r,m XLAT(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,O SUB,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,O INC,DEC 功能: 把OP的值加一或减一 语法: INC OP DEC OP 格式

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1