8086-8088 汇编语言指令表
- 格式:pdf
- 大小:102.77 KB
- 文档页数:5


第 1 页 共 2 页 例:将数据段中从Data1开始的100个字节传送到附加段中从Data2开始的存储区中。
采用MOV指令:
LEA SI, DATA1
LEA DI, DATA2
MOV CX, 100
NEXT: MOV AL, [SI]
MOV [DI], AL
INC SI
INC DI
DEC CX
JNZ NEXT
HLT
采用串传送指令2:
LEA SI, DATA1
LEA DI, DATA2
MOV CX, 100
CLD
NEXT: MOVSB
DEC CX
JNZ NEXT
HLT 采用串传送指令1:
LEA SI, DATA1
LEA DI, DATA2
MOV CX, 100
CLD
NEXT: MOVS BYTE PTR [DI], BYTE PTR [SI]
DEC CX
JNZ NEXT
HLT 采用串传送指令3:
LEA SI, DATA1
LEA DI, DATA2
MOV CX, 50
CLD
NEXT: MOVSW
DEC CX
JNZ NEXT
HLT
第 2 页 共 2 页
采用重复传送指令1:
LEA SI, DATA1
LEA DI, DATA2
MOV CX, 100
CLD
REP MOVSB
HLT 采用重复传送指令2:
LEA SI, DATA1
指令符号说明
符号 说明
r8 任意一个8位通用寄存器AH、AL、BH、BL、CH、CL、DH、DL
r16 任意一个16位通用寄存器AX、BX、CX、DX、SI、DI、BP、SP
reg 代表r8、r16
seg 段寄存器CS、DS、ES、SS
m8 一个8位存储器操作数单元
m16 一个16位存储器操作数单元
mem 代表m8、m16
i8 一个8位立即数
i16 一个16位立即数
imm 代表i8、i16
dest 目的操作数
src 源操作数
label 标号
指令汇编格式
指令类型 指令汇编格式 指令功能简介
MOV reg/mem, imm dest←src
传送指令 MOV reg/mem/seg, reg
MOV reg/seg, mem
MOV reg/mem, seg
交换指令 XCHG reg, reg/mem reg ↔ reg/mem
XCHG reg/mem, reg
转换指令 XLAT label AL←[BX+AL]
XLAT
堆栈指令 PUSH r16/m16/seg 寄存器/存储器入栈
POP r16/m16/seg 寄存器/存储器出栈
CLC CF←0
STC CF←1
CMC CF←~CF
CLD DF←0
STD DF←1
标志传送 CLI IF←0
STI IF←1
LAHF AH←FLAG低字节
SAHF FLAG低字节←AH
PUSHF FLAGS入栈
POPF FLAGS出栈 LEA r16, mem r16←16位有效地址
地址传送 LDS r16, mem DS: r16←32位远指针
LES r16, mem ES: r16←32位远指针
输入 IN AL/AX, i8/DX AL/AX←I/O端口i8/DX
输出 OUT i8/DX, AL/AX I/O端口i8/DX←AL/AX
80X86汇编语言程序设计
第二章 8086/8088寻址方式和指令系统
(二)加减运算指令
1.加法指令ADD
格式:ADD OPRD1,OPRD2
执行的操作:(OPRD1)←(OPRD1)+(OPRD2)
例如:MOV AX,7896H ;(AX)=7896H
即(AH)=78H (AL)=96H ;各标志位保持不变
ADD AL,AH ;AL=AL+AH=96H+78H(=10EH)=0EH
前面的1给了进位标志CF。
即(AH)=78H (AX)=780EH
CF=1 PF=0 AF=0 ZF=0 SF=0 OF=0
例如:ADD DX,0F0F0H
执行前(DX)=4652H
执行后(DX)=4652H+F0F0H(=13742H)=3742H 前面的1给了进位标志CF。
ZF=0 SF=0 CF=1 OF=0
这里4的二进制码是0100,F是1111,一个正数一个负数相加肯定OF是0。
例如:ADD AX,4321
执行前(AX)=62A0H
执行后(AX)=62A0+4321=A5C1H 这里要注意,A的二进制数是1010,最高有效位为1,所以SF为1。
两个正数相加,结果为负的就溢出;两个负数相加,结果为正的就溢出。
SF=1 ZF=0 CF=0 OF=1
这里6的二进制码是0110,而4的二进制码是0100,两个正数相加,结果A为1010为负,所以OF为1。
从上面例子可看出:加法指令影响标志位。
OF位根据操作数的符号及其变化情况来设置:若两个操作数的符号相同而结果的符号与之相反时OF=1,否则OF=0。
8086/8088指令系统记忆表——11月19日第三次更新 来源: 张克终西秦人的日志
我现将指令系统中各种助记符的英文全名写出来,各种助记符的记忆就会变得很简单o(∩_∩)o...
在这之前,先说一下寄存器:
数据寄存器分为:
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)