汇编语言常见指令Word文档下载推荐.docx
- 文档编号:5888431
- 上传时间:2023-05-05
- 格式:DOCX
- 页数:15
- 大小:21.65KB
汇编语言常见指令Word文档下载推荐.docx
《汇编语言常见指令Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《汇编语言常见指令Word文档下载推荐.docx(15页珍藏版)》请在冰点文库上搜索。
(DX)=0FFFFH,(AX)=8060H
5. 交换指令XCHG
例如,(AX)= 5678H
执行下面指令后
XCHGﻩAH, ALﻩ
;
(AX)=7856H
6.换码指令XLAT
XLATﻩ;
AL←DS:
[BX+AL]
表格的首地址事先存放在内存逻辑地址DS:
BX中,
AL的内容是相对于表格的位移量,
把对应内存的内容取出放在AL寄存器。
7. 逻辑运算符
SHR(右移)
SHL(左移)
AND(与)
OR(或)
XOR(异或)
NOT(取反
8.关系运算符
关系运算符用于两个数的比较,结果为“真(-1)”或“假(0)”
GT(>
)
GE(>
=)
LT(<
LE(<
EQ(=)
NE(≠)
9.地址运算符
SEG 名称 取地址表达式所在段的段基址
OFFSET 名称取地址表达式的偏移地址
10.类型操作符
TYPE:
取每个变量的字节数
LENGTH:
取变量定义了多少个
SIZE:
取变量占用的字节总数
11. 加法指令
(1)ADD(Addition):
加法指令
格式:
ADD dest,src
功能:
dest ←dest+src
dest(目的操作数):
8/16位的寄存器/存储器操作数
src(源操作数):
与目的操作数同类型的寄存器/存储器/立即数
例:
ADDAX, SI ;
AX←(AX)+(SI),16位运算
ADDﻩX,3ﻩ ;
X←(X)+3,运算位数由X的类型确定
ﻩﻩADD[BX],DX ;
DS:
[BX]←DS:
[BX]+DX,16位运算
说明:
•状态标志CF,OF, ZF,SF,PF,AF按照运算结果被刷新;
(2)ADC(AdditionwithCarry):
带进位的加法指令
格式:
ADCdest,src
功能:
dest←dest+src+CF
dest(目的操作数):
8/16位的寄存器/存储器
src(源操作数):
•状态标志CF,OF, ZF,SF,PF, AF按照运算结果被刷新;
•主要用于对数据分段相加时高位的加法运算。
(3)INC(Increment):
加一指令
INCﻩ dest
dest←dest+1
dest(目的操作数):
8/16位的寄存器/存储器
例:
ﻩﻩINCﻩX
ﻩﻩﻩ;
X←(X)+1,运算位数由X的类型确定
INCﻩWORD PTR [BX]
;
DS:
[ BX]←DS:
[BX]+1,16位运算
•会影响标志OF,ZF,SF,PF, AF,但是CF标志不受影响;
•增量指令常常用来修改计数器和存储器指针的值。
12. 减法指令
(1)SUB(Subtract):
减法指令
SUBﻩ dest,src
dest← dest-src
8/16位的寄存器/存储器
src(源操作数):
与目的操作数同类型的寄存器/存储器/立即数
SUB Y,20H ;
Y←(Y)-20H,运算位数由Y的类型确定
SUBWORD PTR[BP],5ﻩ
ﻩﻩﻩ;
SS:
[BP] ←SS:
[BP]-5,16位运算
说明:
会影响CF, OF, ZF, SF,PF,AF标志位。
(2)SBB(SubtractwithBorrow):
带借位的减法指令
SBBﻩdest,src
dest←dest-src-CF
dest(目的操作数):
src(源操作数):
与dest同类型的寄存器/存储器/立即数
•会影响CF,OF,ZF,SF,PF,AF标志位;
•主要用于对一个数据分段相减时高位的减法运算
(3)DEC(Decrement):
减一指令
DECﻩ dest
dest←dest-1
dest(目的操作数):
DEC CX;
CX←(CX)-1,16位运算
DECXﻩﻩ;
X←(X)-1,运算位数由X的类型确定
•会影响标志OF, ZF, SF,PF,AF,但是CF标志不受影响;
•减量指令常常用来修改计数器和存储器指针的值。
(4)NEG(Negate):
求补指令(求相反数)
NEGﻩ dest
dest←0-dest
8/16位的寄存器/存储器
ﻩNEG Z ;
Z←-Z,运算位数由Z的类型确定
会影响标志OF, ZF,SF, PF,AF, CF
13.乘法指令
(1)MUL(UnsignedMultiplication):
无符号数乘法
MUL src
src(源操作数):
8位/16位的寄存器/存储器
8位源操作数时:
AX←(AL)×
源操作数
16位源操作数时:
DX, AX←(AX)×
•两个N位操作数相乘,得到2N位的乘积;
•如果乘积的高N位为0,则CF=OF=0,否则CF=OF=1。
其余
标志位无意义。
•上述说明中N=8或16。
(2)IMUL(Signed IntegerMultiplication):
有符号数乘法
IMUL src
8位/16位的寄存器/存储器
8位源操作数时:
AX←(AL)×
16位源操作数时:
DX, AX←(AX)×
●两个N位操作数相乘,得到2N位的乘积;
●如果乘积高N位为低N位的符号扩展,则CF=OF=0,否则ﻫ CF=OF=1,其余标志位无意义。
●上述说明中N=8或16。
14.除法指令:
DIV(UnsignedDivision):
无符号除法
DIVsrc
src(源操作数):
8位/16位的寄存器/存储器
(AX)÷
源操作数,AL←商,AH←余数
16位源操作数时:
(DX,AX)÷
源操作数,AX←商,DX←余数
ﻩﻩﻩ
•两个N位操作数相除,应首先把被除数零扩展为2N位;
例如,要进行除法(AX)÷
(BX),假设AX、BX内均为无符号数:
MOVﻩDX,0ﻩ;
32位被除数高16位清零
ﻩDIVBX;
(DX,AX)÷
BX,AX←商,DX←余数
•如果(2N位)÷
(N位)的商大于2N-1,会产生“除法溢出”错误。
IDIV(SignedIntegerDivision):
有符号数除法
IDIVﻩsrc
src(源操作数):
8位/16位的寄存器/存储器
8位源操作数时:
(AX)÷
源操作数,AL←商,AH←余数
16位源操作数时:
(DX,AX) ÷
源操作数,AX←商,DX←余数
15.基本循环指令
LOOPﻩ标号
CX←(CX)-1
如果(CX)≠0,转向“标号”处执行,否则执行下一条指令。
•LOOP可以改变指令的执行次序,称为“控制转移指令”;
•LOOP指令使一段程序重复地执行,称为“循环”。
•重复执行的次数由CX寄存器中的值决定。
CX寄存器因此称为ﻫ “计数器”。
16.DEBUG.EXE常用命令
⏹反汇编
‘-U’ 、‘-U偏移地址’
⏹显示寄存器内容
‘-R ’、‘-R寄存器名’
⏹单步执行指令
‘-T’ 、 ‘-T指令条数’ 、‘-P’
⏹全速执行指令
‘-G ’ 、‘-G 终止地址’、 ‘-G=起始地址’
‘-G=起始地址终止地址’
⏹显示数据段内容
‘-D’、‘-D 起始地址’、 ‘-D起始地址L字节数’
⏹修改数据段内容
‘-E 起始地址 数据1 数据2 …’
‘-F 起始地址L字节数 数据1 数据2…’
⏹退出
‘-Q ’
17.移位指令
SHL 逻辑左移,最高位进入CF,最低位补0
SHR逻辑右移,最低位进入CF,最高位补0
SAL算术左移,最高位进入CF,最低位补0
SAR算术右移,最低位进入CF,最高位不变
18.循环移位指令
ROL不带进位循环左移
ROR 不带进位循环右移
RCL带进位循环左移
RCR带进位循环右移
18. 无条件转移指令
∙⑴段内转移、直接寻址
∙⑵段内转移、间接寻址
∙⑶段间转移、直接寻址
∙⑷段间转移、间接寻址
JMPlabel
⏹转到label指定的目标地址处,执行那里的指令
⏹目的地址label的位置有2种情形:
⏹和JMP指令在同一个段,叫做段内转移,转移时CPU只改变IP;
⏹和JMP指令不在同一个段,叫做段间转移,转移时CPU既要更改IP又要更改CS,
⏹目的地址label有两种表示方式:
⏹label是目标地址处指令的标号,叫做直接寻址
⏹label是寄存器或内存单元,跳转目的地址在寄存器或内存中,叫做间接寻址
19.比较测试指令
指令操作码
指令格式
功能描述
CMP
CMP dest,src
(dest)-(src),不存结果
TEST
TEST dest, src
(dest)∧(src),不存结果
目的操作数dest:
8位/16位的寄存器/存储器操作数。
源操作数src:
与dest同类型的寄存器/存储器/立即数。
运算后影响标志位,但不保留运算结果。
用途:
•CMP——比较两个数的大小关系,但不改变它们的值。
Ø
AX?
=BX
•TEST——判断目的操作数中个别二进制位,但不改变它的值。
判断一个数的奇偶性
20.条件转移指令
Jxxlabel
“J”----Jump
“xx”是转移的条件
“label”只能为目标指令的标号。
都属于段内短转移。
操作码助记符
条件
指令功能
JZ/JE
ZF=1
相等或为0转移
JNZ/JNE
ZF=0
不相等或不为0转移
JS
SF=1
结果是负数,则转移
JNS
SF=0
结果不是负数,则转移
JO
OF=1
结果溢出,则转移
JNO
OF=0
结果没有溢出,则转移
JP/JPE
PF=1
低位字节有偶数个1,则转移
JNP/JPO
PF=0
低位字节有奇数个1,则转移
JB/JNAE/JC
CF=1
有进借位或<,则转移
JAE/JNB/JNC
CF=0
无进借位或≥,则转移
JBE/JNA
CF=1或ZF=1
≤,则转移
JA/JNBE
CF=0且ZF=0
>,则转移
JL/JNGE
SF≠OF
<,则转移
JGE/JNL
SF=OF
≥,则转移
JLE/JNG
SF≠OF或ZF=1
≤,则转移
JG/JNLE
SF=OF且ZF=0
>,则转移
JCXZ
CX=0
CX=0,则转移
21.调用指令
CALL(Call,调用)指令
•段内直接调用
ﻩ格式:
CALLﻩ子程序名
操作:
SP←SP-2,SS:
[SP]←IP(保存16位返回地址)
ﻩﻩIP←子程序入口的偏移地址
•段内间接调用
格式:
CALLREG16/MEM16
操作:
SP←SP-2, SS:
[SP]←IP(保护16位返回地址)
ﻩIP← REG16/MEM16
•段间直接调用
CALL FARPTR子程序名
操作:
ﻩSP←SP-2,SS:
[SP]←CS
ﻩSP←SP-2,SS:
[SP]←IP
(以上是保存32位返回地址,偏移地址保存在较小地址处)
IP←子程序入口的偏移地址,
ﻩCS←子程序入口的段基址
•段间间接调用
CALLﻩMEM32
SP←SP-2,SS:
[SP]←CS
SP←SP-2,SS:
[SP]← IP
ﻩIP←[MEM32],CS←[MEM32+2]
(1)ﻩCALLPROC1
(2) LEACX,PROC1
ﻩCALLﻩCX
(3)ADDR_PROC1DWPROC1 ;
子程序偏移地址
ﻩ……
CALLﻩADDR_PROC1;
调用近程子程序PROC1
(4)LEAﻩBX,ADDR_PROC1
CALLWORDPTR[BX]ﻩ;
调用近程子程序PROC1
22.RET指令
⏹ 无参数段内返回
ﻩ格式:
RET
ﻩ操作:
IP← SS:
[SP],SP←SP+2
⏹有参数段内返回
ﻩﻩ格式:
RETD16 ﻩﻩ;
其中D16代表16位数据
IP← SS:
[SP],SP←SP+2
ﻩ SP← SP+D16
⏹无参数段间返回
ﻩ格式:
RET
IP←SS:
[SP], SP←SP+2
ﻩﻩﻩCS←SS:
[SP], SP←SP+2
⏹有参数段间返回
格式:
RET D16;
其中D16代表16位数据
ﻩ操作:
ﻩIP←SS:
[SP],SP←SP+2
ﻩCS←SS:
[SP], SP←SP+2
ﻩSP←SP+D16
23.宏指令
宏定义
macro_name MACRO[哑元表];
形参/虚参
[LOCAL标号表]
…… (宏定义体)
……
ENDM
*如果宏定义体内有一个或多个语句标号,则必须用LOCAL伪操作列出所有的语句标号。
宏调用
macro_name [实元表];
实参
*实元表中的实元与哑元表中的哑元在位置上一一对应;
*若实元数>
哑元数,则多余的实元无效;
*若实元数<
哑元数,则多余的哑元作“空(NUL)”处理;
*对宏指令的调用必须先定义后调用。
宏定义独立于逻辑段。
宏展开
⏹把宏定义体复制到调用宏指令的位置上,同时用实元取代哑元,由LOCAL定义的标号也由?
?
0000~?
?
FFFF替代。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 常见 指令