汇编语言(Assembly Language)指令表
<p><strong>汇编指令英文全称</strong></p><h2 id="1通用数据传送指令">1.通用数据传送指令</h2>
<p>MOV----> move<br>
MOVdest,src ;dest←src<br>
MOV 指令把一个字节或字的操作数从源地址src传送至目的地址dest。<br>
MOVSX---->extended move with signdata<br>
MOVZX---->extended move with zerodata<br>
PUSH---->push<br>
POP---->pop<br>
进栈出栈指令</p>
<p>PUSHA---->pushall<br>
POPA---->pop all<br>
PUSHAD---->push all data<br>
POPAD---->popall data<br>
BSWAP---->byteswap<br>
XCHG---->exchange</p>
<p><strong>交换指令用来将源操作数和目的操作数内容交换,操作数可以是字、也可以是字节,可以在</strong><br>
<strong>通用寄存器与通用寄存器或存储器之间对换数据,但不能在存储器与存储器之间对换数据。</strong><br>
movax,1234h ;ax=1234h<br>
mov bx,5678h ;bx=5678h<br>
xchgax,bx;ax=5678h,bx=1234h<br>
xchg ah,al ;ax=7856h<br>
CMPXCHG---->compare andchange<br>
XADD---->exchange and add<br>
XLAT---->translate</p>
<p><strong>换码指令用于将BX指定的缓冲区中、AL指定的位移处的数据取出赋给AL。</strong></p>
<h2 id="2输入输出端口传送指令">2.输入输出端口传送指令</h2>
<p>IN---->input<br>
OUT---->output</p>
<h2 id="3目的地址传送指令">3.目的地址传送指令</h2>
<p>LEA---->loadeffective addres<br>
有效地址传送指令<br>
mov bx,0400h<br>
mov si,3ch<br>
leabx, ;BX=139EH<br>
这里BX得到的是主存单元的有效地址,不是物理地址,也不是该单元的内容。<br>
LDS---->load DS<br>
LES---->loadES<br>
LFS---->load FS<br>
LGS---->load GS<br>
LSS---->loadSS</p>
<h2 id="4标志传送指令">4.标志传送指令</h2>
<p>LAHF---->load AH from flag<br>
SAHF---->save AH toflag<br>
PUSHF---->push flag<br>
POPF---->pop flag<br>
PUSHD---->pushdflag<br>
POPD---->pop dflag</p>
<h3 id="一算术运算指令">一、算术运算指令</h3>
<p>ADD---->add<br>
加法指令moval,0fbh ;al=0fbh<br>
add al,07h ;al=02h<br>
ADC---->add withcarry<br>
INC---->increase 1<br>
AAA---->ascii add withadjust<br>
DAA---->decimal add withadjust<br>
SUB---->substract<br>
SBB---->substract withborrow<br>
DEC---->decrease1<br>
NEC---->negative<br>
CMP---->compare<br>
AAS---->ascii adjust onsubstract<br>
DAS---->decimal adjust onsubstract<br>
MUL---->multiplication<br>
IMUL---->integermultiplication<br>
AAM---->ascii adjust onmultiplication<br>
DIV---->divide<br>
IDIV---->integerdivide<br>
AAD---->ascii adjust on divide<br>
CBW---->change byte toword<br>
CWD---->change word to double word<br>
CWDE---->change word todouble word with sign to EAX<br>
CDQ---->change double word to quadrateword</p>
<h3 id="二逻辑运算指令">二、逻辑运算指令</h3>
<p>AND---->and<br>
or---->or<br>
XOR---->xor<br>
NOT---->not<br>
TEST---->test<br>
SHL---->shiftleft<br>
SAL---->arithmatic shift left<br>
SHR---->shiftright<br>
SAR---->arithmatic shift right<br>
ROL---->rotateleft<br>
ROR---->rotate right<br>
RCL---->rotate left withcarry<br>
RCR---->rotate right with carry</p>
<h3 id="三串指令">三、串指令</h3>
<p>MOVS---->movestring<br>
CMPS---->compare string<br>
SCAS---->scanstring<br>
LODS---->load string<br>
STOS---->storestring<br>
REP---->repeat<br>
REPE---->repeat whenequal<br>
REPZ---->repeat when zero flag<br>
REPNE---->repeat when notequal<br>
REPNZ---->repeat when zero flag<br>
REPC---->repeat when carryflag<br>
REPNC---->repeat when not carryflag</p>
<h3 id="四程序转移指令">四、程序转移指令</h3>
<h4 id="1无条件转移指令长转移">1>无条件转移指令(长转移)</h4>
<p>JMP---->jump<br>
CALL---->call<br>
RET---->return<br>
RETF---->returnfar</p>
<h4 id="2条件转移指令短转移-128-到127-的距离内">2>条件转移指令(短转移,-128 到+127 的距离内)</h4>
<p>JAE---->jump when above orequal<br>
JNB---->jump when not below<br>
JB---->jump whenbelow<br>
JNAE---->jump when not above or equal<br>
JBE---->jump when belowor equal<br>
JNA---->jump when not above<br>
JG---->jump whengreater<br>
JNLE---->jump when not less or equal<br>
JGE---->jump whengreater or equal<br>
JNL---->jump when not less<br>
JL---->jump whenless<br>
JNGE---->jump when not greater or equal<br>
JLE---->jump when lessor equal<br>
JNG---->jump when not greater<br>
JE---->jump whenequal<br>
JZ---->jump when has zero flag<br>
JNE---->jump when notequal<br>
JNZ---->jump when not has zero flag<br>
JC---->jump when has carryflag<br>
JNC---->jump when not has carry flag<br>
JNO---->jump when not hasoverflow flag<br>
JNP---->jump when not has parity flag<br>
JPO---->jumpwhen parity flag is odd<br>
JNS---->jump when not has signflag<br>
JO---->jump when has overflow flag<br>
JP---->jump when has parityflag<br>
JPE---->jump when parity flag is even<br>
JS---->jump when has signflag</p>
<h4 id="3循环控制指令短转移">3>循环控制指令(短转移)</h4>
<p>LOOP---->loop<br>
LOOPE---->loopequal<br>
LOOPZ---->loop zero<br>
LOOPNE---->loop notequal<br>
LOOPNZ---->loop not zero<br>
JCXZ---->jump when CX iszero<br>
JECXZ---->jump when ECX iszero</p>
<h4 id="4中断指令">4>中断指令</h4>
<p>INT---->interrupt<br>
INTO---->overflowinterrupt<br>
IRET---->interruptreturn</p>
<h4 id="5处理器控制指令">5>处理器控制指令</h4>
<p>HLT---->halt<br>
WAIT---->wait<br>
ESC---->escape<br>
LOCK---->lock<br>
NOP---->nooperation<br>
STC---->set carry<br>
CLC---->clear carry<br>
CMC---->carrymake change<br>
STD---->set direction<br>
CLD---->cleardirection<br>
STI---->set interrupt<br>
CLI---->clearinterrupt</p>
<h3 id="五伪指令">五、伪指令</h3>
<p>DW---->definwword<br>
PROC---->procedure<br>
ENDP---->end ofprocedure<br>
SEGMENT---->segment<br>
ASSUME---->assume<br>
ENDS---->endsegment<br>
END---->end<br>
汇编指令中文释义<br>
数据传输指令</p>
<p>它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据.</p>
<h2 id="1--通用数据传送指令">\1.通用数据传送指令.</h2>
<p>MOV 传送字或字节.<br>
MOVSX 先符号扩展,再传送.<br>
MOVZX 先零扩展,再传送.<br>
PUSH把字压入堆栈.<br>
POP 把字弹出堆栈.<br>
PUSHA 把AX,CX,DX,BX,SP,BP,SI,DI 依次压入堆栈.<br>
POPA把DI,SI,BP,SP,BX,DX,CX,AX 依次弹出堆栈.<br>
PUSHAD 把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次压入堆栈.<br>
POPAD 把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX 依次弹出堆栈.<br>
BSWAP 交换32位寄存器里字节的顺序<br>
XCHG 交换字或字节.( 至少有一个操作数为寄存器,段寄存器不可作为操作数)<br>
CMPXCHG 比较并交换操作数.(第二个操作数必须为累加器AL/AX/EAX )<br>
XADD 先交换再累加.( 结果在第一个操作数里)<br>
XLAT 字节查表转换.</p>
<p>──BX 指向一张256 字节的表的起点, AL 为表的索引值(0-255,即0-FFH); 返回AL 为查表结果. ( ->AL)</p>
<h2 id="2-输入输出端口传送指令">\2. 输入输出端口传送指令.</h2>
<p>IN I/O 端口输入. ( 语法: IN 累加器, {端口号│DX} )<br>
OUT I/O端口输出. ( 语法: OUT {端口号│DX},累加器)<br>
输入输出端口由立即方式指定时, 其范围是0-255; 由寄存器DX指定时,<br>
其范围是0-65535.</p>
<h2 id="3-目的地址传送指令">\3. 目的地址传送指令.</h2>
<p>LEA 装入有效地址.<br>
例: LEA DX,string;把偏移地址存到DX.<br>
LDS 传送目标指针,把指针内容装入DS.<br>
例: LDS SI,string;把段地址:偏移地址存到DS:SI.<br>
LES 传送目标指针,把指针内容装入ES.<br>
例: LES DI,string;把段地址:偏移地址存到ES:DI.<br>
LFS 传送目标指针,把指针内容装入FS.<br>
例: LFS DI,string;把段地址:偏移地址存到FS:DI.<br>
LGS 传送目标指针,把指针内容装入GS.<br>
例: LGS DI,string;把段地址:偏移地址存到GS:DI.<br>
LSS 传送目标指针,把指针内容装入SS.<br>
例: LSS DI,string;把段地址:偏移地址存到SS:DI.</p>
<h2 id="4-标志传送指令">\4. 标志传送指令.</h2>
<p>LAHF 标志寄存器传送,把标志装入AH.<br>
SAHF 标志寄存器传送,把AH内容装入标志寄存器.<br>
PUSHF 标志入栈.<br>
POPF 标志出栈.<br>
PUSHD 32 位标志入栈.<br>
POPD 32位标志出栈.</p>
<h3 id="一算术运算指令-1">一、算术运算指令</h3>
<p>ADD 加法.<br>
ADC 带进位加法.<br>
INC 加1.<br>
AAA加法的ASCII 码调整.<br>
DAA 加法的十进制调整.<br>
SUB 减法.<br>
SBB 带借位减法.<br>
DEC 减1.<br>
NEC 求反(以0减之).<br>
CMP 比较.(两操作数作减法,仅修改标志位,不回送结果).<br>
AAS 减法的ASCII 码调整.<br>
DAS减法的十进制调整.<br>
MUL 无符号乘法.<br>
IMUL 整数乘法.<br>
以上两条,结果回送AH 和AL(字节运算),或DX和AX(字运算),<br>
AAM 乘法的ASCII 码调整.<br>
DIV 无符号除法.<br>
IDIV整数除法.<br>
以上两条,结果回送:<br>
商回送AL,余数回送AH, (字节运算);<br>
或商回送AX,余数回送DX, (字运算).<br>
AAD除法的ASCII 码调整.<br>
CBW 字节转换为字. (把AL 中字节的符号扩展到AH 中去)<br>
CWD 字转换为双字. (把AX中的字的符号扩展到DX 中去)<br>
CWDE 字转换为双字. (把AX 中的字符号扩展到EAX 中去)<br>
CDQ 双字扩展. (把EAX中的字的符号扩展到EDX 中去)</p>
<h3 id="二逻辑运算指令-1">二、逻辑运算指令</h3>
<p>AND 与运算.<br>
or 或运算.<br>
XOR异或运算.<br>
NOT 取反.<br>
TEST 测试.(两操作数作与运算,仅修改标志位,不回送结果).<br>
SHL 逻辑左移.<br>
SAL算术左移.(=SHL)<br>
SHR 逻辑右移.<br>
SAR 算术右移.(=SHR) 当值为负时,高位补1 ;当值为正时,高位补0<br>
ROL循环左移.<br>
ROR 循环右移.<br>
RCL 通过进位的循环左移.<br>
RCR 通过进位的循环右移.<br>
以上八种移位指令,其移位次数可达255次.<br>
移位一次时, 可直接用操作码. 如SHL AX,1.<br>
移位>1 次时, 则由寄存器CL 给出移位次数.<br>
如MOVCL,04<br>
SHL AX,CL</p>
<h3 id="三串指令-1">三、串指令</h3>
<p>DS:SI 源串段寄存器:源串变址.<br>
ES:DI目标串段寄存器:目标串变址.<br>
CX 重复次数计数器.<br>
AL/AX 扫描值.<br>
D 标志0 表示重复操作中SI 和DI 应自动增量; 1表示应自动减量.<br>
Z 标志用来控制扫描或比较操作的结束.<br>
MOVS 串传送.<br>
( MOVSB 传送字符. MOVSW 传送字. MOVSD传送双字. )<br>
CMPS 串比较.<br>
( CMPSB 比较字符. CMPSW 比较字. )<br>
SCAS 串扫描.<br>
把AL 或AX的内容与目标串作比较,比较结果反映在标志位.<br>
LODS 装入串.<br>
把源串中的元素(字或字节)逐一装入AL 或AX 中.<br>
( LODSB传送字符. LODSW 传送字. LODSD 传送双字. )<br>
STOS 保存串.<br>
是LODS 的逆过程.<br>
REP当CX/ECX<>0 时重复.<br>
REPE/REPZ 当ZF=1 或比较结果相等,且CX/ECX<>0时重复.<br>
REPNE/REPNZ 当ZF=0 或比较结果不相等,且CX/ECX<>0 时重复.<br>
REPC 当CF=1且CX/ECX<>0 时重复.<br>
REPNC 当CF=0 且CX/ECX<>0时重复.</p>
<h3 id="四程序转移指令-1">四、程序转移指令</h3>
<h4 id="1无条件转移指令长转移-1">1>无条件转移指令(长转移)</h4>
<p>JMP 无条件转移指令<br>
CALL过程调用<br>
RET/RETF 过程返回.</p>
<h4 id="2条件转移指令短转移-128-到127-的距离内-1">2>条件转移指令(短转移,-128 到+127 的距离内)</h4>
<p>( 当且仅当(SF XOROF)=1 时,OP1 JA/JNBE 不小于或不等于时转移.<br>
JAE/JNB 大于或等于转移.<br>
JB/JNAE 小于转移.<br>
JBE/JNA小于或等于转移.<br>
以上四条,测试无符号整数运算的结果(标志C 和Z).<br>
JG/JNLE 大于转移.<br>
JGE/JNL大于或等于转移.<br>
JL/JNGE 小于转移.<br>
JLE/JNG 小于或等于转移.<br>
以上四条,测试带符号整数运算的结果(标志S,O和Z).<br>
JE/JZ 等于转移.<br>
JNE/JNZ 不等于时转移.<br>
JC 有进位时转移.<br>
JNC 无进位时转移.<br>
JNO不溢出时转移.<br>
JNP/JPO 奇偶性为奇数时转移.<br>
JNS 符号位为"0" 时转移.<br>
JO 溢出转移.<br>
JP/JPE奇偶性为偶数时转移.<br>
JS 符号位为"1" 时转移.</p>
<h4 id="3循环控制指令短转移-1">3>循环控制指令(短转移)</h4>
<p>LOOP CX不为零时循环.<br>
LOOPE/LOOPZ CX 不为零且标志Z=1 时循环.<br>
LOOPNE/LOOPNZ CX 不为零且标志Z=0时循环.<br>
JCXZ CX 为零时转移.<br>
JECXZ ECX 为零时转移.</p>
<h4 id="4中断指令-1">4>中断指令</h4>
<p>INT 中断指令<br>
INTO溢出中断<br>
IRET 中断返回</p>
<h4 id="5处理器控制指令-1">5>处理器控制指令</h4>
<p>HLT 处理器暂停, 直到出现中断或复位信号才继续.<br>
WAIT当芯片引线TEST 为高电平时使CPU 进入等待状态.<br>
ESC 转换到外处理器.<br>
LOCK 封锁总线.<br>
NOP 空操作.<br>
STC置进位标志位.<br>
CLC 清进位标志位.<br>
CMC 进位标志取反.<br>
STD 置方向标志位.<br>
CLD 清方向标志位.<br>
STI置中断允许位.<br>
CLI 清中断允许位.</p>
<h3 id="五伪指令-1">五、伪指令</h3>
<p>DW 定义字(2 字节).<br>
PROC 定义过程.<br>
ENDP过程结束.<br>
SEGMENT 定义段.<br>
ASSUME 建立段寄存器寻址.<br>
ENDS 段结束.<br>
END程序结束.<br>
汇编语言中常用寄存器的英文缩写:<br>
AH&AL=AX(accumulator):累加寄存器<br>
BH&BL=BX(base):基址寄存器<br>
CH&CL=CX(count):计数寄存器<br>
DH&DL=DX(data):数据寄存器<br>
SP(StackPointer):堆栈指针寄存器<br>
BP(Base Pointer):基址指针寄存器<br>
SI(SourceIndex):源变址寄存器<br>
DI(Destination Index):目的变址寄存器<br>
IP(InstructionPointer):指令指针寄存器<br>
CS(Code Segment)代码段寄存器<br>
DS(DataSegment):数据段寄存器<br>
SS(Stack Segment):堆栈段寄存器<br>
ES(Extra Segment):附加段寄存器<br>
OFoverflow flag 溢出标志操作数超出机器能表示的范围表示溢出,溢出时为1.<br>
SF sign Flag符号标志记录运算结果的符号,结果负时为1.<br>
ZF zero flag 零标志运算结果等于0 时为1,否则为0.<br>
CF carry flag进位标志最高有效位产生进位时为1,否则为0.<br>
AF auxiliary carry flag 辅助进位标志运算时,第3 位向第4位产生进位时为1,否则为0.<br>
PF parity flag 奇偶标志运算结果操作数位为1 的个数为偶数个时为1,否则为0.<br>
DF direcionflag 方向标志用于串处理.DF=1 时,每次操作后使SI 和DI 减小.DF=0 时则增大.<br>
IF interrupt flag 中断标志IF=1时,允许CPU 响应可屏蔽中断,否则关闭中断.<br>
TF trap flag 陷阱标志用于调试单步操作.</p>
<p>**DB=Declare Byte一个字节<br>
DW=DeclareWord 两个字节<br>
DD=DeclareDouble Word 四个字节<br>
DQ=Declare Quad Word八个字节</p>
<p>伪指令:PseudoInstruction**</p><br><br>
来源:https://www.cnblogs.com/remixnameless/p/16885771.html
頁:
[1]