文档库 最新最全的文档下载
当前位置:文档库 › 汇编语言指令

汇编语言指令

汇编语言指令
汇编语言指令

汇编语言指令集

数据传送指令集

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 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

格式: INC r/m DEC r/m

影响标志: P,A,Z,S,O

NEG

功能: 将OP的符号反相(取二进制补码)

语法: NEG OP

格式: NEG r/m

影响标志: C,P,A,Z,S,O

MUL,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/m

CBW,CWD

功能: 有符号数扩展指令

语法: CBW CWD

AAA,AAS,AAM,AAD

功能: 非压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

功能: 移位指令

语法: SHR r/m,data/CL SHL r/m,data/CL SAR r/m,data/CL SAL r/m,data/CL

影响标志: C,P,Z,S,O

ROR,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

功能: 设定中断标志

语法: CLI STI

标志位: I

CMP

功能: 比较OP1与OP2的值

语法: CMP r/m,r/m/data

标志位: C,P,A,Z,O

JMP

功能: 跳往指定地址执行

语法: 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: 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时则会将堆栈中的标志值弹回寄存器

字符串操作指令集

MOVSB,MOVSW,MOVSD

功能: 字符串传送指令

语法: MOVSB MOVSW MOVSD

标志位: 无

CMPSB,CMPSW,CMPSD

功能: 字符串比较指令

语法: CMPSB CMPSW CMPSD

标志位: C,P,Z,S,O

SCASB,SCASW

功能: 字符串搜索指令

语法: SCASB SCASW

标志位: C,P,Z,S,O

LODSB,LODSW,STOSB,STOSW

功能: 字符串载入或存贮指令

语法: LODSB LODSW STOSB STOSW

标志位: 无

REP,REPE,REPNE

功能: 重复前缀指令集

语法: REP 指令S REPE 指令S REPNE 指令S

标志位: 依指令S而定

对于IBM PC机它有它的指令系统,其中包括:数据传送指令、串处理指令、算术指令、控制移动指令、逻辑指令、处理机控制指令。

这里将简单介绍其指令类型及指令说明,如有要求给具体的指令格式及应用,请与a may联系,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(字节转换为字)、CW D(字转换为双字)

3)逻辑指令:对字或字节执行逻辑运算。

逻辑指令类型指令说明

逻辑运算指令AND(逻辑与)、OR(逻辑或)、NOT(逻辑非)、XOR(异或)、TE ST(测试)

移动指令SHL(逻辑左移)、SAL(算术左移)、SHR(逻辑右移)、SAR(算术右移)、ROL(循环左移)、ROR(循环右移)、RCL(带进位循环左移)、RCR(带进位右移)

4)串处理指令:处理存放存储器里的数据串。

串处理指令类型指令说明

指令MOVS(串传送)、CMPS(串比较)、SCAS(串扫描)、LODS(从串取)、STOS(存入串)

5)控制转移指令:用来控制程序的执行流程。

控制转移指令类型指令说明

无条件转移指令JMP(段间和段内转移)

条件转移指令JZ(结果为0(或相等)则转移)、JS(结果为负则转移)、JNS(结果为正则转移)、JO(溢出则转移)、JNO(不溢出则转移)、JP(奇偶位为1则转移)、J NP(奇偶位为0则转移)

循环指令LOOP(循环指令)、LOOPPZ/LOOPE(当为0或相等时循环指令)、LOOP NZ/LOOPNE(当不为0或不相等时循环指令)

子程序指令CALL(调用指令)、RET(返回指令)

中断指令INT(中断)、INTO(如溢出则中断)、RIET(从中断返回)

6)处理机控制指令:

处理机控制指令类型指令说明

标志处理指令CLC(进位位置0指令)、CMC(进位位求反指令)、STC(进位位置为1指令)、CLD(方向标志置1指令)、STD(方向标志位置1指令)、CLI(中断标志置0指令)、STI(中断标志置1指令)

其他处理机控制指令NOP(无操作)、HLT(停机)、WAIT(等待)、ESC(换码)、LOCK(封锁)

汇编语言指令

指令系统确定了CPU所能完成的功能,是用汇编语言进行程序设计的最基本部分。如果不熟悉汇编指令的功能及其有关规定,那么,肯定不能灵活运用汇编语言。所以,本章的内容是学习本课程的重点和难点。

5.1 汇编语言指令格式

为了介绍指令系统中指令的功能,先要清楚汇编语言是如何书写指令的,这就象在学习高级语言程序设计时,要清楚高级语言语句的语义、语法及其相关规定一样。

5.1.1 指令格式

汇编语言的指令格式如下:

指令助忆符 [操作数1 [, 操作数2 [, 操作数3]]][;注释]

指令助忆符体现该指令的功能,它对应一条二进制编码的机器指令。指令的操作数个数由该指令的确定,可以没有操作数,也可以有一个、二个或三个操作数。绝大多数指令的操作数要显式的写出来,但也有指令的操作数是隐含的,不需要在指令中写出。

当指令含有操作数,并要求在指令中显式地写出来时,则在书写时必须遵守:

指令助忆符和操作数之间要有分隔符,分隔符可以是若干个空格或TAB键;

如果指令含有多个操作数,那么,操作数之间要用逗号","分开。

指令后面还可以书写注释内容,不过,要在注释之前书写分号";"。

5.1.2 了解指令的几个方面

在学习汇编指令时,指令的功能无疑是我们学习和掌握的重点,但要准确、有效地运用这些指令,我们还要熟悉系统对每条指令的一些规定或约束。

归纳起来,对指令还要掌握以下几个方面内容:

、要求指令操作数的寻址方式;

、指令对标志位的影响、标志位对指令的影响;

、指令的执行时间,对可完成同样功能的指令,要选用执行时间短的指令

汇编指令系统

指令系统是CPU指令的集合,CPU除了具有计算功能的指令外,还有实现其它功能的指令,也有为某种特殊的应用而增设的指令。

通常,把指令按其功能分成以下几大类:

数据传送指令

标志位操作指令

算术运算指令

逻辑运算指令

移位操作指令

位操作指令

比较运算指令

下面,我们逐一介绍每类指令中的指令。循环指令

转移指令

条件设置字节指令

字符串操作指令

ASCII-BCD码运算调整指令

处理器指令

5.2.1 数据传送指令

数据传送指令又分为:传送指令、交换指令、地址传送指令、堆栈操作指令、转换指令和I/O 指令等。

除了标志位操作指令SAHF和POPF指令外,本类的其它指令都不影响标志位。

1、传送指令MOV(Move Instruction)

传送指令是使用最频繁的指令,它相对于高级语言里的赋值语句。指令的格式如下:

MOV Reg/Mem, Reg/Mem/Imm

其中:Reg—Register(寄存器),Mem—Memory(存储器),Imm—Immediate(立即数),它们可以是8位、16位或32位(特别指出其位数的除外)。在本网络课件的网页中,都将采用上述缩写,此后不再说明。

指令的功能是把源操作数(第二操作数)的值传给目的操作数(第一操作数)。指令执行后,目的操作数的值被改变,而源操作数的值不变。在存储单元是该指令的一个操作数时,该操作数的寻址方式可以是任意一种存储单元寻址方式。

下面列举几组正确的指令例子:

源操作数是寄存器

MOV CH, ALMOV BP, SPMOV ECX, EBX

MOV DS, AXMOV [BX], CHMOV [BX+SI], AX

源操作数是存储单元

MOV AL, [100H]MOV BX, ES:[DI]MOV EDX, [BX]

MOV BX, V ARWMOV AX, [BX+SI]MOV CH, [BX+DI+100H]

其中:V ARW是字类型内存变量(下同)。

源操作数是立即数

MOV AL, 89HMOV BX, -100HMOV EDX, 12345678H

MOV V ARW, 200HMOV [BX], 2345HMOV [BX+DI], 1234H

在汇编语言中,主要的数据传送方式如图5.1所示。虽然一条MOV指令能实现其中大多数的数据传送方式,但也存在MOV指令不能实现的传送方式。

图5.1 MOV指令数据传送示意图

对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 V ARA, V ARB等,其中V ARA和V ARB是同数据类型的内存变量。

对于规定2、4和7,我们可以用通用寄存器作为中转来达到最终目的。表5.1列举一个可行的解决方案,尽供参考。读者可考虑用其它办法来完成同样的功能。

表5.1 MOV指令的变通方法

功能描述不正确的指令可选的解决方法

把DS的值传送给ESMOV ES, DSMOV AX, DS

MOV ES, AX

把100H传给DSMOV DS, 100HMOV AX, 100H

MOV DS, AX

把字变量V ARB的值传送给字变量V ARAMOV V ARA, V ARBMOV AX, V ARB

MOV V ARA, AX

对于情况1:不同位数数据之间的传送问题,在80386及其以后的CPU中,增加一组新的指令——传送-填充指令,它可把位数少的源操作数传送给位数多的目的操作数,多出的部分按指令的规定进行填充。

传送—填充指令(Move-and-Fill Instruction)

2、传送—填充指令(Move-and-Fill Instruction)

传送—填充指令是把位数短的源操作数传送给位数长的目的操作数。指令格式如下:MOVSX/MOVZX Reg/Mem, Reg/Mem/Imm;80386+

其中:80386+表示80386及其之后的CPU,其它类似符号含义类同,不再说明。

指令的主要功能和限制与MOV指令类似,不同之处是:在传送时,对目的操作数的高位进行填充。根据其填充方式,又分为:符号填充和零填充。

传送—填充指令的功能如图5.2所示。

(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, AL,MOVZX DX, AL执行后,问CX和DX的值是什么?

解:根据传送-填充指令的填充方式可知:

指令MOVSX CX, AL执行后,(CX)=0FF87H,指令MOVZX DX, AL执行后,(DX)=0087H。从上例可看出,两条指令的源操作数完全一样,但因为它们的填充方式不同,所得到的结果而就不同。

试比较下列指令,分析它们执行结果的相同和不同之处:

MOV AX, 87H MOVSX AX, 87H MOVZX AX, 87H

3、交换指令XCHG(Exchange Instruction)

交换指令XCHG是两个寄存器,寄存器和内存变量之间内容的交换指令,两个操作数的数据类型要相同。其指令格式如下:

XCHG Reg/Mem, Reg/Mem

该指令的功能和MOV指令不同,后者是一个操作数的内容被修改,而前者是两个操作数都会发生改变。寄存器不能是段寄存器,两个操作数也不能同时为内存变量。

XCHG指令的功能如图5.3所示。

图5.3 XCHG指令的执行功能示意图

例5.2 已知:AX=5678H,BX=1234H,指令XCHG AX, BX执行后,AX和BX的值是什么?解:这是两个寄存器内容进行交换,指令执行后,有:(AX)=1234H,(BX)=5678H。

HTTP协议状态码的含义

"100" : 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

"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" : Forbidden

"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" : Precondition 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

"502" : Bad Gateway

"503" : Service Unavailable

"504" : Gateway Time-out

"505" : HTTP V ersion not supported

汇编语言指令集

一、数据传输指令

1. 通用数据传送指令.

MOV (MOVe) 传送字或字节.

MOVS (MOVe String) 串传送指令

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. 输入输出端口传送指令.

IN I/O端口输入. ( 语法: IN 累加器, {端口号│DX} )

OUT I/O端口输出. ( 语法: OUT {端口号│DX},累加器 )

输入输出端口由立即方式指定时, 其范围是 0-255; 由寄存器 DX 指定时,其范围是0-65535.

3. 目的地址传送指令.

LEA (Load Effective Address)装入有效地址.

例: LEA DX,string ;把偏移地址存到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 传送目标指针,把指针内容装入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 加法的十进制调整.压缩的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(字运算),

AAM 乘法的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中的字的符号扩展到EDX中去)

三、逻辑运算指令

───────────────────────────────────────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)通过进位的循环右移.

以上八种移位指令,其移位次数可达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 比较字符. CMPSW 比较字. )

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 Equal/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时,OP1

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>循环控制指令(短转移)

LOOP CX不为零时循环.

LOOPE/LOOPZ CX不为零且标志Z=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 置中断允许位.

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 若小于等于则跳

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 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

格式: INC r/m DEC r/m

影响标志: P,A,Z,S,O

NEG

功能: 将OP的符号反相(取二进制补码)

语法: NEG OP

格式: NEG r/m

影响标志: C,P,A,Z,S,O

MUL,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/m

CBW,CWD

功能: 有符号数扩展指令

语法: CBW CWD

AAA,AAS,AAM,AAD

功能: 非压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

功能: 移位指令

语法: SHR r/m,data/CL SHL r/m,data/CL SAR r/m,data/CL SAL r/m,data/CL

影响标志: C,P,Z,S,O

ROR,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

功能: 设定中断标志

语法: CLI STI

标志位: I

CMP

功能: 比较OP1与OP2的值

语法: CMP r/m,r/m/data

标志位: C,P,A,Z,O

JMP

功能: 跳往指定地址执行

语法: 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: 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时则会将堆栈中的标志值弹回寄存器

字符串操作指令集

MOVSB,MOVSW,MOVSD

功能: 字符串传送指令

语法: MOVSB MOVSW MOVSD

标志位: 无

CMPSB,CMPSW,CMPSD

功能: 字符串比较指令

语法: CMPSB CMPSW CMPSD

标志位: C,P,Z,S,O

SCASB,SCASW

功能: 字符串搜索指令

语法: SCASB SCASW

标志位: C,P,Z,S,O

LODSB,LODSW,STOSB,STOSW

功能: 字符串载入或存贮指令

语法: LODSB LODSW STOSB STOSW

标志位: 无

REP,REPE,REPNE

功能: 重复前缀指令集

语法: REP 指令S REPE 指令S REPNE 指令S 标志位: 依指令S而定

(完整word版)汇编语言常用指令大全,推荐文档

MOV指令为双操作数指令,两个操作数中必须有一个是寄存器. MOV DST , SRC // Byte / Word 执行操作: dst = src 1.目的数可以是通用寄存器, 存储单元和段寄存器(但不允许用CS段寄存器). 2.立即数不能直接送段寄存器 3.不允许在两个存储单元直接传送数据 4.不允许在两个段寄存器间直接传送信息 PUSH入栈指令及POP出栈指令: 堆栈操作是以“后进先出”的方式进行数据操作. PUSH SRC //Word 入栈的操作数除不允许用立即数外,可以为通用寄存器,段寄存器(全部)和存储器. 入栈时高位字节先入栈,低位字节后入栈. POP DST //Word 出栈操作数除不允许用立即数和CS段寄存器外, 可以为通用寄存器,段寄存器和存储器. 执行POP SS指令后,堆栈区在存储区的位置要改变. 执行POP SP 指令后,栈顶的位置要改变. XCHG(eXCHanG)交换指令: 将两操作数值交换. XCHG OPR1, OPR2 //Byte/Word 执行操作: Tmp=OPR1 OPR1=OPR2 OPR2=Tmp 1.必须有一个操作数是在寄存器中 2.不能与段寄存器交换数据 3.存储器与存储器之间不能交换数据. XLAT(TRANSLATE)换码指令: 把一种代码转换为另一种代码. XLAT (OPR 可选) //Byte 执行操作: AL=(BX+AL) 指令执行时只使用预先已存入BX中的表格首地址,执行后,AL中内容则是所要转换的代码. LEA(Load Effective Address) 有效地址传送寄存器指令 LEA REG , SRC //指令把源操作数SRC的有效地址送到指定的寄存器中. 执行操作: REG = EAsrc 注: SRC只能是各种寻址方式的存储器操作数,REG只能是16位寄存器 MOV BX , OFFSET OPER_ONE 等价于LEA BX , OPER_ONE MOV SP , [BX] //将BX间接寻址的相继的二个存储单元的内容送入SP中 LEA SP , [BX] //将BX的内容作为存储器有效地址送入SP中 LDS(Load DS with pointer)指针送寄存器和DS指令 LDS REG , SRC //常指定SI寄存器。 执行操作: REG=(SRC), DS=(SRC+2) //将SRC指出的前二个存储单元的内容送入指令中指定的寄存器中,后二个存储单元送入DS段寄存器中。

汇编语言知识大全

第一章基础知识: 一.机器码:1.计算机只认识0,1两种状态。而机器码只能由0,1组成。故机器码相当难认,故产生了汇编语言。 2.其中汇编由三类指令形成:汇编指令(有机器码对应),伪指令,其他符号(编译的时候有用)。 每一总CPU都有自己的指令集;注意学习的侧重点。 二.存储器:1.存储单元中数据和指令没任何差别。 2.存储单元:Eg:128个储存单元(0~127)128byte。 线: 1.地址总线:寻址用,参数(宽度)为N根,则可以寻到2^N个内存单元。 据总线:传送数据用,参数为N根,一次可以传送N/8个存储单元。 3.控制总线:cpu对元器件的控制能力。越多控制力越强。 四.内存地址空间:1.由地址总线决定大小。 2.主板:cpu和核心器件(或接口卡)用地址总线,数据总线,控制总 线连接起来。 3.接口卡:由于cpu不能直接控制外设,需通过接口卡间接控制。

4.各类存储器芯片:RAM,BIOS(主板,各芯片)的ROM,接卡槽的 RAM CPU在操控他们的时候,把他们都当作内存来对待,把他们总的看作一个由 若干个存储单元组成的逻辑存储器,即我们所说的内存地址空间。 自己的一点理解:CPU对内存的操作是一样的,但是在cpu,内存,芯片之间的硬件本身所牵扯的线是不同的。所以一些地址的功能是对应一些芯片的。 第二章寄存器 引入:CPU中含有运算器,寄存器,控制器(由内部总线连接)。而寄存器是可以用来指令读写的部件。8086有14个寄存器(都是16位,2个存储空间)。 一.通用寄存器(ax,bx,cx,dx),16位,可以分为高低位 注意1.范围:16位的2^16-1,8位的2^8-1 2.进行数据传送或运算时要注意位数对应,否则会报错 二.字:1. 1个字==2个字节。 2. 在寄存器中的存储:0x高位字节低位字节;单元认定的是低单元 数制,16进制h,2进制b

(完整word版)汇编语言指令集合-吐血整理,推荐文档

8086/8088指令系统记忆表 数据寄存器分为: AH&AL=AX(accumulator):累加寄存器,常用于运算;在乘除等指令中指定用来存放操作数,另外,所有的I/O指令都使用这一寄存器与外界设备传送数据. BH&BL=BX(base):基址寄存器,常用于地址索引; CH&CL=CX(count):计数寄存器,常用于计数;常用于保存计算值,如在移位指令,循环(loop)和串处理指令中用作隐含的计数器. DH&DL=DX(data):数据寄存器,常用于数据传递。他们的特点是,这4个16位的寄存器可以分为高8位: AH, BH, CH, DH.以及低八位:AL,BL,CL,DL。这2组8位寄存器可以分别寻址,并单独使用。 另一组是指针寄存器和变址寄存器,包括: SP(Stack Pointer):堆栈指针,与SS配合使用,可指向目前的堆栈位置; BP(Base Pointer):基址指针寄存器,可用作SS的一个相对基址位置; SI(Source Index):源变址寄存器可用来存放相对于DS段之源变址指针; DI(Destination Index):目的变址寄存器,可用来存放相对于ES 段之目的变址指针。 指令指针IP(Instruction Pointer) 标志寄存器FR(Flag Register) OF(overflow flag) DF(direction flag) CF(carrier flag) PF(parity flag) AF(auxiliary flag) ZF(zero flag) SF(sign flag) IF(interrupt flag) TF(trap flag) 段寄存器(Segment Register) 为了运用所有的内存空间,8086设定了四个段寄存器,专门用来保存段地址: CS(Code Segment):代码段寄存器; DS(Data Segment):数据段寄存器; SS(Stack Segment):堆栈段寄存器;

汇编语言指令表

汇编语言指令表文档编制序号:[KKIDT-LLE0828-LLETD298-POI08]

伪指令 1、定位伪指令 ORG m 2、定义字节伪指令 DB X1,X2,X3,…,Xn 3、字定义伪指令 DW Y1,Y2,Y3,…,Yn 4、汇编结束伪指令 END 寻址方式 MCS-51单片机有五种寻址方式: 1、寄存器寻址 2、寄存器间接寻址 3、直接寻址 4、立即数寻址 5、基寄存器加变址寄存器间接寻址 6、相对寻址 7、位寻址 数据传送指令 一、以累加器A为目的操作数的指令(4条) MOV A,Rn ;(Rn)→A n=0~7 MOV A,direct ;( direct )→A MOV A,@Ri ;((Ri))→A i=0~1 MOV A,#data ; data →A 二、以Rn为目的操作数的指令(3条) MOV Rn ,A;(A)→ Rn MOV Rn ,direct;( direct )→ Rn MOV Rn ,#data; data → Rn 三、以直接寻址的单元为目的操作数的指令(5条) MOV direct,A;(A)→direct MOV direct,Rn;(Rn)→direct MOV direct,direct ;(源direct)→目的direct MOV direct,@Ri;((Ri))→direct MOV direct,#data; data→direct 四、以寄存器间接寻址的单元为目的操作数的指令(3条) MOV @Ri,A;(A)→(Ri) MOV @Ri,direct;(direct)→(Ri) MOV @Ri,#data; data→(Ri) 五、十六位数据传送指令(1条) MOV DPTR,#data16;dataH→DPH,dataL →DPL

单片机汇编语言指令集

汇编语言的所有指令数据传送指令集 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 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 格式: INC r/m DEC r/m 影响标志: P,A,Z,S,O NEG 功能: 将OP的符号反相(取二进制补码) 语法: NEG OP 格式: NEG r/m 影响标志: C,P,A,Z,S,O MUL,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/m CBW,CWD 功能: 有符号数扩展指令 语法: CBW CWD AAA,AAS,AAM,AAD 功能: 非压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 功能: 移位指令 语法: SHR r/m,data/CL SHL r/m,data/CL SAR r/m,data/CL SAL r/m,data/CL

汇编语言指令

汇编语言指令集 数据传送指令集 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 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 格式: INC r/m DEC r/m 影响标志: P,A,Z,S,O NEG 功能: 将OP的符号反相(取二进制补码) 语法: NEG OP 格式: NEG r/m 影响标志: C,P,A,Z,S,O MUL,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/m CBW,CWD 功能: 有符号数扩展指令 语法: CBW CWD AAA,AAS,AAM,AAD 功能: 非压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 功能: 移位指令 语法: SHR r/m,data/CL SHL r/m,data/CL SAR r/m,data/CL SAL r/m,data/CL 影响标志: C,P,Z,S,O ROR,ROL,RCR,RCL

汇编语言指令详解

第一讲 第三章 指令系统--寻址方式 回顾: 8086/8088的内部结构和寄存器,地址分段的概念,8086/8088的工作过 程。 重点和纲要:指令系统--寻址方式。有关寻址的概念;6种基本的寻址方式及 有效地址的计算。 教学方法、实施步骤 时间分配 教学手段 回 顾 5”×2 板书 计算机 投影仪 多媒体课件等 讲 授 40” ×2 提 问 3” ×2 小 结 2” ×2 讲授内容: 3.1 8086/8088寻址方式 首先,简单讲述一下指令的一般格式: 操作码 操作数 …… 操作数 计算机中的指令由操作码字段和操作数字段组成。 操作码:指计算机所要执行的操作,或称为指出操作类型,是一种助记符。 操作数:指在指令执行操作的过程中所需要的操作数。该字段除可以是操作数本身外,也可以是操作数地址或是地址的一部分,还可以是指向操作数地址的指针或其它有关操作数的信息。 寻址方式就是指令中用于说明操作数所在地址的方法,或者说是寻找操作数有效地址的方法。8086/8088的基本寻址方式有六种。 1.立即寻址 所提供的操作数直接包含在指令中。它紧跟在操作码的后面,与操作码一起放在代码段区域中。如图所示。 例如:MOV AX ,3000H 立即数可以是8位的,也可以是16位的。若

是16位的,则存储时低位在前,高位在后。 立即寻址主要用来给寄存器或存储器赋初值。 2.直接寻址 操作数地址的16位偏移量直接包含在指令中。它与操作码—起存放在代码段区域,操作数一般在数据段区域中,它的地址为数据段寄存器DS加上这16位地址偏移量。如图2-2所示。 例如: MOV AX,DS:[2000H]; 图2-2 (对DS来讲可以省略成 MOV AX,[2000H],系统默认为数据段)这种寻址方法是以数据段的地址为基础,可在多达64KB的范围内寻找操作数。 8086/8088中允许段超越,即还允许操作数在以代码段、堆栈段或附加段为基准的区域中。此时只要在指令中指明是段超越的,则16位地址偏移量可以与CS或SS或ES相加,作为操作数的地址。 MOV AX,[2000H] ;数据段 MOV BX,ES:[3000H] ;段超越,操作数在附加段 即绝对地址=(ES)*16+3000H 3.寄存器寻址 操作数包含在CPU的内部寄存器中,如寄存器AX、BX、CX、DX等。 例如:MOV DS,AX MOV AL,BH 4.寄存器间接寻址 操作数是在存储器中,但是,操作数地址的16位偏移量包含在以下四个寄存器SI、DI、BP、BX之一中。可以分成两种情况:

汇编指令大全

ORG 0000H NOP ;空操作指令 AJMP L0003 ;绝对转移指令 L0003: LJMP L0006 ;长调用指令 L0006: RR A ;累加器A内容右移(先置A为88H) INC A ; 累加器A 内容加1 INC 01H ;直接地址(字节01H)内容加1 INC @R0 ; R0的内容(为地址) 的内容即间接RAM加1 ;(设R0=02H,02H=03H,单步执行后02H=04H) INC @R1 ; R1的内容(为地址) 的内容即间接RAM加1 ;(设R1=02H,02H=03H,单步执行后02H=04H) INC R0 ; R0的内容加1 (设R0为00H,单步执行后查R0内容为多少) INC R1 ; R1的内容加1(设R1为01H,单步执行后查R1内容为多少) INC R2 ; R2的内容加1 (设R2为02H,单步执行后查R2内容为多少) INC R3 ; R3的内容加1(设R3为03H,单步执行后查R3内容为多少) INC R4 ; R4的内容加1(设R4为04H,单步执行后查R4内容为多少) INC R5 ; R5的内容加1(设R5为05H,单步执行后查R5内容为多少) INC R6 ; R6的内容加1(设R6为06H,单步执行后查R6内容为多少) INC R7 ; R7的内容加1(设R7为07H,单步执行后查R7内容为多少) JBC 20H,L0017; 如果位(如20H,即24H的0位)为1,则转移并清0该位L0017: ACALL S0019 ;绝对调用 S0019: LCALL S001C ;长调用 S001C: RRC A ;累加器A的内容带进位位右移(设A=11H,C=0 ;单步执行后查A和C内容为多少) DEC A ;A的内容减1 DEC 01H ;直接地址(01H)内容减1 DEC @R0 ;R0间址减1,即R0的内容为地址,该地址的内容减1 DEC @R1 ; R1间址减1 DEC R0 ; R0内容减1 DEC R1 ; R1内容减1 DEC R2 ; R2内容减1 DEC R3 ; R3内容减1 DEC R4 ; R4内容减1 DEC R5 ; R5内容减1 DEC R6 ; R6内容减1 DEC R7 ; R7内容减1 JB 20H,L002D;如果位(20H,即24H的0位)为1则转移 L002D: AJMP L0017 ;绝对转移 RET ;子程序返回指令 RL A ;A左移 ADD A,#01H ;A的内容与立即数(01H)相加 ADD A,01H ; A的内容与直接地址(01H内容)相加 ADD A,@R0 ; A的内容与寄存器R0的间址内容相加 ADD A,@R1 ; A的内容与寄存器R1的间址内容相加

一些常用的汇编语言指令

汇编语言常用指令 大家在做免杀或者破解软件的时候经常要用到汇编指令,本人整理出了常用的 希望对大家有帮助! 数据传送指令 MOV:寄存器之间传送注意,源和目的不能同时是段寄存器;代码段寄存器CS不能作为目的;指令指针IP不能作为源和目的。立即数不能直接传送段寄存器。源和目的操作数类型要一致;除了串操作指令外,源和目的不能同时是存储器操作数。 XCHG交换指令:操作数可以是通用寄存器和存储单元,但不包括段寄存器,也不能同时是存储单元,还不能有立即数。 LEA 16位寄存器存储器操作数传送有效地址指令:必须是一个16位寄存器和存储器操作数。 LDS 16位寄存器存储器操作数传送存储器操作数32位地址,它的16位偏移地址送16位寄存器,16位段基值送入DS中。 LES :同上,只是16位段基址送ES中。 堆栈操作指令 PUSH 操作数,操作数不能使用立即数, POP 操作数,操作数不能是CS和立即数 标志操作指令 LAHF:把标志寄存器低8位,符号SF,零ZF,辅助进位AF,奇偶PF,进位CF传送到AH 指定的位。不影响标志位。 SAHF:与上相反,把AH中的标志位传送回标志寄存器。 PUSHF:把标志寄存器内容压入栈顶。 POPF:把栈顶的一个字节传送到标志寄存器中。 CLC:进位位清零。 STC:进位位为1。 CMC:进位位取反。 CLD:使方向标志DF为零,在执行串操作中,使地址按递增方式变化。 STD:DF为1。 CLI:清中断允许标志IF。Cpu不相应来自外部装置的可屏蔽中断。 STI:IF为1。 加减运算指令

注意:对于此类运算只有通用寄存器和存储单元可以存放运算结果。如果参与运算的操作数有两个,最多只能有一个存储器操作数并且它们的类型必须一致。 ADD。 ADC:把进位CF中的数值加上去。 INC:加1指令 SUB。 SBB:把进位CF中数值减去。 DEC:减1指令。 NEG 操作数:取补指令,即用0减去操作数再送回操作数。 CMP:比较指令,完成操作数1减去操作数2,结果不送操作数1,但影响标志位。可根据ZF(零)是否被置1判断相等;如果两者是无符号数,可根据CF判断大小;如果两者是有符号数,要根据SF和OF判断大小。 乘除运算指令 MUL 操作数:无符号数乘法指令。操作数不能是立即数。操作数是字节与AL中的无符号数相乘,16位结果送AX中。若字节,则与AX乘,结果高16送DX,低16送AX。如乘积高半部分不为零,则CF、OF为1,否则为0。所以CF和OF表示AH或DX中含有结果的有效数。IMUL 操作数:有符号数乘法指令。基本与MUL相同。 DIV 操作数:被除数是在AX(除数8位)或者DX和AX(除数16位),操作数不能是立即数。如果除数是0,或者在8(16)位除数时商超过8(16)位,则认为是溢出,引起0号中断。IDIV:有符号除法指令,当除数为0,活着商太大,太小(字节超过127,-127字超过32767,-32767)时,引起0号中断。 符号扩展指令 CBW,CWD:把AL中的符号扩展到寄存器AH中,不影响各标志位。CWD则把AX中的符号扩展到DX,同样不影响标志位。注意:在无符号数除之前,不宜用这两条指令,一般采用XOR 清高8位或高16位。 逻辑运算指令与位移指令 注意:只能有一个存储器操作数;只有通用寄存器或存储器操作数可作为目的操作数,用于存放结果;操作数的类型必须一致。 NOT:取反,不影响标志位。 AND 操作数1 操作数2:操作结果送错作数1,标志CF(进位)、OF(溢出)清0,PF(奇偶)ZF(0标志) SF(符号)反映运算结果,AF(辅助进位)未定义。自己与自己AND值不变,她主要用于将操作数中与1相与的位保持不变,与0相与清0。(都为1时为1)OR 操作数1 操作数2:自己与自己OR值不变,CF(进位)、OF(溢出)清0,PF(奇偶)ZF(0标志)SF(符号)反映运算结果,AF(辅助进位)未定义。她使用于将若干位置1:

汇编语言手册

寄存器与存储器 1. 寄存器功能 . 寄存器的一般用途和专用用途 . CS:IP 控制程序执行流程 . SS:SP 提供堆栈栈顶单元地址 . DS:BX(SI,DI) 提供数据段内单元地址 . SS:BP 提供堆栈内单元地址 . ES:BX(SI,DI) 提供附加段内单元地址 . AX,CX,BX和CX寄存器多用于运算和暂存中间计算结果,但又专用于某些指令(查阅指令表)。. PSW程序状态字寄存器只能通过专用指令(LAHF, SAHF)和堆栈(PUSHF,POPF)进行存取。 2. 存储器分段管理 . 解决了16位寄存器构成20位地址的问题 . 便于程序重定位 . 20位物理地址=段地址* 16 + 偏移地址 . 程序分段组织: 一般由代码段,堆栈段,数据段和附加段组成,不设置堆栈段时则使用系统内部的堆栈。 3. 堆栈 . 堆栈是一种先进后出的数据结构, 数据的存取在栈顶进行, 数据入栈使堆栈向地址减小的方向扩展。 . 堆栈常用于保存子程序调用和中断响应时的断点以及暂存数据或中间计算结果。 .堆栈总是以字为单位存取 指令系统与寻址方式 1. 指令系统 . 计算机提供给用户使用的机器指令集称为指令系统,大多数指令为双操作数指令。执行指令后,一般源操作数不变,目的操作数被计算结果替代。 . 机器指令由CPU执行,完成某种运算或操作,8086/8088指令系统中的指令分为6类: 数据传送,算术运算,逻辑运算,串操作,控制转移和处理机控制。 2. 寻址方式 . 寻址方式确定执行指令时获得操作数地址的方法 . 分为与数据有关的寻址方式(7种)和与转移地址有关的寻址方式(4)种。 . 与数据有关的寻址方式的一般用途: (1) 立即数寻址方式--将常量赋给寄存器或存储单元 (2) 直接寻址方式--存取单个变量 (3) 寄存器寻址方式--访问寄存器的速度快于访问存储单元的速度 (4) 寄存器间接寻址方式--访问数组元素 (5) 变址寻址方式 (6) 基址变址寻址方式 (7) 相对基址变址寻址方式(5),(6),(7)都便于处理数组元素 . 与数据有关的寻址方式中,提供地址的寄存器只能是BX,SI,DI或BP . 与转移地址有关的寻址方式的一般用途: (1) 段内直接寻址--段内直接转移或子程序调用 (2) 段内间接寻址--段内间接转移或子程序调用

汇编语言的各条指令

常用命令 数据传送指令 一通用数据传送指令 MOV指令为双操作数指令,两个操作数中不能全为内存操作数 格式:MOV DST,SRC 执行操作:dst = src 注:1.目的数可以是通用寄存器,存储单元和段寄存器(但不允许用CS段寄存器). 2.立即数不能直接送段寄存器 3.不允许在两个存储单元直接传送数据 4.不允许在两个段寄存器间直接传送信息 PUSH入栈指令及POP出栈指令: 堆栈操作是以“后进先出”的方式进行数据操作。 格式:PUSH SRC //Word 执行操作:(SP)<-(SP)-2 ((SP)+1,(SP))<-(SRC) 注:1.入栈的操作数除不允许用立即数外,可以为通用寄存器,段寄存器(全部)和存储器。

2.入栈时高位字节先入栈,低位字节后入栈。 格式:POP DST //Word 执行操作:(DST)<-((SP+1),(SP)) (SP)<-(SP)+2 注:1.出栈操作数除不允许用立即数和CS段寄存器外,可以为通用寄存器,段寄存器和存储器。 2.执行POP SS指令后,堆栈区在存储区的位置要改变。 3.执行POP SP 指令后,栈顶的位置要改变。 XCHG(eXCHanG)交换指令: 将两操作数值交换。 格式:XCHG OPR1,OPR2 //Byte/Word 执行的操作:(OPR1)<-->(OPR2) 注:1.必须有一个操作数是在寄存器中 2.不能与段寄存器交换数据 存储器与存储器之间不能交换数据。 二累加器专用传送指令 IN输入指令 长格式为:IN AL,PORT(字节) IN AX,PORT(字) 执行的操作:(AL)<-(PORT)(字节)

8088汇编语言指令

8088指令系统总结 预备知识:符号含意、数据传送原则 符号含意 符号含意 opr 操作数 src 源操作数 dst 目的操作数 mem 存储器 im 立即数 seg 段寄存器 reg 通用寄存器 EA 偏移地址 PA 物理地址 nn直接地址DISP8:8位偏移地址DISP16:16位偏移地址 数据传送原则 口诀数据传送原则 寄段储间互传数,seg、reg、mem之间的数据可以相互传送。 立即只入寄和储。im可入reg、mem 只有寄间互换数,reg之间的数据可以传送。Mem间、seg间不可自传CS立即不可目,CS和立即数不可入,不能当目的操作数 8088指令系统 8088指令系统分六大类 一、数据传送指令 二、算术运算指令 三、逻辑运算与位移指令 四、串操作指令 五、控制与转移指令 六、CPU控制指令 一、数据传送指令 1.通用传送指令 (1)传送指令MOV dst, src功能:dst←src (2)堆栈操作指令人W PUSH src作用:SP←SP-2 ((SP+1)+SP)←src src(reg seg mem) POP dst 作用:dst←((SP+1)+SP)SP←SP-2 dst(reg seg mem)

(3)交换指令XCHG OPR1,OPR2 OPR1←→OPR2 2.累加器传送指令 (1)输入输出指令 256B短格式:直接寻址,64K长格式:直接、间接寻址,PORT为8位口地址输入指令:直接寻址IN AX,PORT IN AL,PORT 间接寻址IN AX,DX IN AL,DX 输出指令:直接寻址OUT AX,PORT OUT AL,PORT 间接寻址OUT AX,DX OUT AL,DX (2)换码指令XLAT AL←(BX+AL)(BX)为mem地址 3.地址传送指令 (1)有效地址传送寄存器 LEA reg16, mem作用:mem的EA→reg16 (2)指针送寄存器和DS指令 LDS reg16, mem32 作用:reg16←mem32的低字高字→DS (3)指针送寄存器和有ES指令 LES reg16, mem32 作用:reg16←mem32的低字高字→ES 4.标志寄存器传送指令 (1)取标志指令:LAHF F的低字节→AH (2)置标志指令:SAHF AH→flag的低字节 (3)标志入栈指令:PUSHF SP-2→SP F→(SP+1):SP (4)标志出栈指令:POPF (SP+1):SP→F SP+2→SP 二、算术运算指令 1.加法类指令(Add)opr-reg mem B/W (1)不带进位加法ADD dst, src dst←dst+src 影响OSZAPC (2)带进位加法ADC dst, src dst←dst+src+CF影响OSZAPC (3)加1指令INC opr opr←opr+1影响OSZP (4)组合十进制调整DAA放在ADD后 (5)非组合十进制调整AAA放在ADC后 原理:2个十进制数相加,可能出现非法数(A到F),需用调整指令,进行加6调整变成合法十进制数。十进制=BCD组合=压缩组合BCD占4位非组合BCD占8位 2 . 减法类指令(substract) (1)减法指令SUB dst, src;dst←dst-src影响标志位OSZAPC (2)带借位减法指令SBB dst, src;dst←dst-src-CF影响标志位

常见汇编语言指令解释:

PC是一个16位的程序计数器。用于存放和指示下一条要执行的指令的地址。寻址范围达64KB。PC有自动加1功能,以实现程序的顺序执行。PC没有地址,是不可寻址的,无法用指令对它进行读写。但在执行转移、调用、返回等指令时能自动改变其内容,以改变程序的执行顺序。 参数代表的意义: 1、Rn 表示R0~R7中的一个 2、#data 表示8位的数值 00H~FFH 3、direct 表示8位的地址 00H~FFH(指的是内部RAM或SFR的地址) 4、@Ri 表示寄存器间接寻址只能是R0或者R1 5、@DPTR 表示数据指针间接寻址 6、bit 表示位地址 7、$ 表示当前地址 常见汇编语言指令解释: 寄存器寻址 MOV A,R1将R1中的数值赋予A 直接寻址 MOV A,3AH将地址3AH中的数值赋予A 立即寻址 MOV A,#3AH将3AH数值赋予A

寄存器间址 MOV A,@R0 将 R0中地址的数值赋予A 变址寻址 MOVC A,@A+DPTR以A中的数值为地址偏移量进行查表 相对寻址 AJMP MATN跳转到行号为MATN处 位寻址 MOV C,7FH 将位地址7FH的数值赋予C MOV A,#3AH数据传输、赋值命令 PUSH direct将direct为地址的数值压入堆栈中 POP direct将direct为地址的数值弹出堆栈 XCH A,direct将direct中的数值与A进行交换 ADD A,direct将direct中的数值与 INC direct将direct中的数值加1 SUBB A,direct将A中的数值减去direct中的数值和Cy值,并保存在A中,如果想使用不带Cy减法,可以在运算前对Cy清零:CLR C DEC direct将direct中的数值减1 DA A 用于对BCD码加减法后进行10进制调整 MUL A B将A和B相乘,并把高八位放在B中,低八位放在A中 DIV A B将A和B相除,并把商放在A中,余数放在B中 ANL A,direct将A与direct中的数值进行与运算,结果保留在A 中(与运算规律:有0出0,全1出1) ORL A,direct将A与direct中的数值进行或运算,结果保留在A中(或运算规律:有1出1,全0出0) XRL A,direct将A与direct中的数值进行异或运算,结果保留在A 中(异或运算规律:全0出0,全1出0,01、10出1)

汇编指令1

汇编语言指令集 一、数据传输指令 1. 通用数据传送指令. MOV(MOVe) 传送字或字节. MOVS(MOVe String) 串传送指令 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. 输入输出端口传送指令. IN I/O端口输入. ( 语法: IN 累加器, {端口号│DX} ) OUT I/O端口输出. ( 语法: OUT {端口号│DX},累加器) 输入输出端口由立即方式指定时, 其范围是0-255; 由寄存器DX 指定时,其范围是0-65535. 3. 目的地址传送指令. LEA (Load Effective Address)装入有效地址. 例: LEA DX,string ;把偏移地址存到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 传送目标指针,把指针内容装入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)标志出栈.

汇编语言常用指令大全解释

常用汇编指令:MOV指令为双操作数指令,两个操作数中必须有一个是寄存器. MOV DST , SRC // Byte / Word 执行操作: dst = src 1.目的数可以是通用寄存器, 存储单元和段寄存器(但不允许用CS段寄存器). 2.立即数不能直接送段寄存器 3.不允许在两个存储单元直接传送数据 4.不允许在两个段寄存器间直接传送信息 PUSH入栈指令及POP出栈指令: 堆栈操作是以"后进先出"的方式进行数据操作. PUSH SRC //Word 入栈的操作数除不允许用立即数外,可以为通用寄存器,段寄存器(全部)和存储器. 入栈时高位字节先入栈,低位字节后入栈. POP DST //Word 出栈操作数除不允许用立即数和CS段寄存器外, 可以为通用寄存器,段寄存器和存储器. 执行POP SS指令后,堆栈区在存储区的位置要改变. 执行POP SP 指令后,栈顶的位置要改变. XCHG(eXCHanG)交换指令: 将两操作数值交换. XCHG OPR1, OPR2 //Byte/Word 执行操作: Tmp=OPR1 OPR1=OPR2 OPR2=Tmp 1.必须有一个操作数是在寄存器中 2.不能与段寄存器交换数据 3.存储器与存储器之间不能交换数据. XLAT(TRANSLATE)换码指令: 把一种代码转换为另一种代码. XLAT (OPR 可选) //Byte 执行操作: AL=(BX+AL) 指令执行时只使用预先已存入BX中的表格首地址,执行后,AL中内容则是所要转换的代码. LEA(Load Effective Address) 有效地址传送寄存器指令 LEA REG , SRC //指令把源操作数SRC的有效地址送到指定的寄存器中. 执行操作: REG = EAsrc 注: SRC只能是各种寻址方式的存储器操作数,REG只能是16位寄存器 MOV BX , OFFSET OPER_ONE 等价于LEA BX , OPER_ONE MOV SP , [BX] //将BX间接寻址的相继的二个存储单元的内容送入SP中 LEA SP , [BX] //将BX的内容作为存储器有效地址送入SP中 LDS(Load DS with pointer)指针送寄存器和DS指令 LDS REG , SRC //常指定SI寄存器。 执行操作: REG=(SRC), DS=(SRC+2) //将SRC指出的前二个存储单元的内容送入指令中指定的寄存器中,后二个存储单元送入DS段寄存器中。 LES (Load ES with pointer) 指针送寄存器和ES指令 LES REG , SRC //常指定DI寄存器 执行操作: REG=(SRC) , ES=(SRC+2) //与LDS大致相同,不同之处是将ES代替DS而已. LAHF( Load AH with Flags ) 标志位送AH指令

反汇编语言常用指令

内容目录 计算机寄存器分类简介 计算机寄存器常用指令 一、常用指令 二、算术运算指令 三、逻辑运算指令 四、串指令 五、程序跳转指令 ------------------------------------------ 计算机寄存器分类简介: 32位CPU所含有的寄存器有: 4个数据寄存器(EAX、EBX、ECX和EDX) 2个变址和指针寄存器(ESI和EDI) 2个指针寄存器(ESP和EBP) 6个段寄存器(ES、CS、SS、DS、FS和GS) 1个指令指针寄存器(EIP) 1个标志寄存器(EFlags) 1、数据寄存器 数据寄存器主要用来保存操作数和运算结果等信息,从而节省读取操作数所需占用总线和访问存储器的时间。 32位CPU有4个32位的通用寄存器EAX、EBX、ECX和EDX。 对低16位数据的存取,不会影响高16位的数据。 这些低16位寄存器分别命名为:AX、BX、CX和DX,它和先前的CPU中的寄存器相一致。 4个16位寄存器又可分割成8个独立的8位寄存器(AX:AH-AL、BX:BH-BL、CX:CH-CL、DX:DH-DL),每个寄存器都有自己的名称,可独立存取。 程序员可利用数据寄存器的这种“可分可合”的特性,灵活地处理字/字节的信息。 寄存器EAX通常称为累加器(Accumulator),用累加器进行的操作可能需要更少时间。可用于乘、除、输入/输出等操作,使用频率很高; 寄存器EBX称为基地址寄存器(Base Register)。它可作为存储器指针来使用; 寄存器ECX称为计数寄存器(Count Register)。 在循环和字符串操作时,要用它来控制循环次数;在位操作中,当移多位时,要用CL来指明移位的位数;寄存器EDX称为数据寄存器(Data Register)。在进行乘、除运算时,它可作为默认的操作数参与运算,也可用于存放I/O的端口地址。 在16位CPU中,AX、BX、CX和DX不能作为基址和变址寄存器来存放存储单元的地址, 在32位CPU中,其32位寄存器EAX、EBX、ECX和EDX不仅可传送数据、暂存数据保存算术逻辑运算结果, 而且也可作为指针寄存器,所以,这些32位寄存器更具有通用性。 2、变址寄存器 32位CPU有2个32位通用寄存器ESI和EDI。 其低16位对应先前CPU中的SI和DI,对低16位数据的存取,不影响高16位的数据。 寄存器ESI、EDI、SI和DI称为变址寄存器(Index Register),它们主要用于存放存储单元在段内的偏移量,用它们可实现多种存储器操作数的寻址方式,为以不同的地址形式访问存储单元提供方便。 变址寄存器不可分割成8位寄存器。作为通用寄存器,也可存储算术逻辑运算的操作数和运算结果。 它们可作一般的存储器指针使用。在字符串操作指令的执行过程中,对它们有特定的要求,而且还具有特殊的功能。 3、指针寄存器

汇编 DEBUG主要 命令 大全 最详细

DEBUG主要命令 DEBUG是为汇编语言设计的一种调试工具,它通过单步、设置断点等方式为汇编语言程序员提供了非常有效的调试手段。 1.DEBUG程序的调用 在DOS的提示符下,可键入命令: C:>DEBUG [d:][path][文件名][参数1][参数2] 其中文件名是被调试文件的名字,它必须是可执行文件(EXE),两个参数是运行被调试文件所需要的命令参数,在DEBUG程序调入后,出现提示符“-”,此时,可键入所需的DEBUG命令。 2.DEBUG的主要命令 ⑴显示内存单元内容的命令D,格式为: -D [地址] 或-D [范围] 例如,显示指定范围内存单元内容的方法为: -D 100 1FF 18E4:0100 47 06 04 02 38 01 47 06 -06 02 00 02 47 06 08 02 G...8.G.....G... 18E4:0110 02 02 3B 04 02 68 02 00 -4D 20 50 51 56 57 8B 37 ..;..h..M PQVW.7 其中左边为十六进制表示形式,右边为ASCII码表示形式,“.”表示不可显示字符。这里没有指定段地址,D命令自动显示DS段的内容。 ⑵修改内存单元内容的命令E,它有两种格式 1)用给定内容代替指定范围的单元内容,格式为: -E 地址内容表 例如:-E DS:100 F358595A8D,即用F3,58,59,5A,8D五个字节代替内存单元DS:100到DS:104的内容。 2)逐个单元相继地修改,格式为: -E 地址 例如:-E DS:100 18E4:0100 89.78 此命令是将0100单元内容89改为78。78是程序员从键盘输入的。程序员在修改完一个单元后,可按“空格”键继续修改下一单元内容,直至按“回车”键结束该命令。 ⑶检查和修改寄存器内容的命令R,它有三种方式 1)显示CPU内部所有寄存器内容和标志寄存器中的各标志位状态 -R 该命令可显示AX,BX,CX,DX,SP,BP,SI,DI,DS,ES,SS,CS,IP及标志寄存器内容。

相关文档