导图社区 80X86
80×86分享了寻址方式、指令系统、汇编语言、CPU引脚的知识,希望这份脑图会对你有所帮助。
编辑于2023-06-04 10:09:15 重庆80X86
其他
物理地址
=段地址 X 10H+偏移地址
DS
SI,DI,BX
SS
BP
CS
IP
ES
DI
标志位
PF
奇偶标志位
1个数
偶数
PF=1
奇数
PF=0
AF
辅助进位标志位
低字节向高字节进位\借位
AF=1
CF
进位标志位
ZF
零标志位
运算结果=0,ZF=1
SF
符号标志位
正数,SF=0
负数,SF=1
OF
溢出标志位
结果溢出,OF=1
寻址方式
立即寻址
MOV AL,100
只能用于源操作数
目的,源
子主题
寄存器寻址
MOV AX,BX
直接寻址
指令中直接给出操作数的16位偏移地址
MOV AX,[2040H]
MOV AX,[TABLE]
偏移地址也可用符号地址表示
寄存器间接寻址
基址寄存器BX,BP
MOV BX,[BP]
变址寄存器SI,DI
MOV AX,ES:[SI]
寄存器相对寻址
位移量[间接寻址的寄存器]
MOV AX,TAB[SI]
[位移量+间接寻址的寄存器]
MOV DI,[EAX+0AH]
MOV AX,ES:[DI+64H]
基址变址寻址
[基址寄存器][变址寄存器]
MOV AX,[BX][SI]
不能同时出现两个基址寄存器/变址寄存器
相对基址变址寻址
位移量[基址寄存器][变址寄存器]
MOV AX,TAB[BX][SI]
隐含寻址
比例变址寻址
基址比例变址寻址
相对基址比例变址寻址
指令系统
数据传送类指令
通用数据传送指令
基本的传送指令
MOV
不允许seg<-立即数
MOV AX,DATA MOV DS,AX
MOVSX
带符号扩展FFFF
MOVZX
零扩展0000
堆栈指令
PUSH
POP
交换
XCHG
交换
CMPXCHG
比较交换
CMPXCHG BX,DX
if AX=BX
BX=DX,ZF=1
if AX≠BX
AX=BX,ZF=0
XADD
交换加
XADD AL,DL
DL=AL
AL=AL+DL
查表转换指令
XLAT
隐含寻址
地址传送指令
有效地址传送指令
LEA
指针传送指令
LDS
输入输出指令
IN
OUT
事先设置端口到DX
间接寻址
算术运算类指令
加法
ADD
ADC
+进位
INC
减法
SUB
SBB
-进位
DEC
NEG
反码
CMP
目的<源
ZF=0,CF=1
目的>源
ZF=0,CF=0
ZF/CF=1,JBE跳转
目的=源
ZF=1,CF=0
乘法
MUL
IMUL
P98
除法
DIV
IDIV
AL<-商,AH<-余数 被除数字长必须是除数字长的两倍,否则要进行符合扩展
BCD调整指令
隐含寻址
DAA
加法十进制
>9或AF/CF=1
+06H,60H,66H
DAS
减法十进制
>9或AF/CF=1
-06H,60H,66H
AAA
加法ACSII码
AL低4位>9或AF=1
AL=AL+06H,AH=AH+01H,AF=1,AL高四位清零,CF=1
AAS
减法ACSII码
AL低4位>9或AF=1
AL=AL-06H,AH=AH-01H,AF=1,AL高四位清零,CF=1
AAM
乘法ACSII码
AL/10D,AL<-商,AH<-余数
例:038H/10D=05H...06H,记为0506H
AAD
除法ACSII码
AL=AH X 10+AL,AH清零
例:0504H变为AL=05 X 10+04=54,十进制运算
先调整,后运算
符号拓展指令
CBW
AL内容符号扩展到AX
8->16
CWD
AX内容符号扩展到DX:AX
16->32
CWDE
AX内容符号扩展到EAX
16->32
CDQ
AX内容符号扩展到EDX:EAX
32->64
逻辑运算和移位类指令
逻辑运算指令
AND
OR
目的=0-目的
NOT
不影响标志位
XOR
异或,mod2
TEST
测试,'逻辑与',不回送结果
除NOT外,CF=OF=0
移位指令
算术
SAL
补0
SAR
符号位不变
逻辑
SHL
补0
SHR
补0
双精度
SHLD
SHLD DST,SRC,C
DST补SRC,SRC不变
SHRD
循环
ROL
ROR
带进位循环
RCL
RCR
CF改变
控制转移类指令
转移指令
无条件转移
JMP
条件转移指令
Jcc
P113
条件设置指令
SETcc
循环指令
LOOPcc
子程序调用指令
调用指令
CALL
返回指令
RET
处理器控制指令
标志处理指令
CLC
外部同步指令
NOP
空操作
HLT
暂停
WAIT
等待
LOCK
ESC
汇编语言
程序格式
堆栈段
STACK SEGMENT STACK
DW 64 DUP(?)
STACK ENDS
数据段
DATA SEGMENT
STAR1 DB'Hello World'
定义字符串
DATA ENDS
代码段
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK
START: ....
....
MOV AX,4C00H
INT 21H
程序终止
CODE ENDS
END START
汇编语言语法
数据项
变量
DB
字节
DW
字
DD
双字
DQ
四字
DT
十字
表达式
关系运算符
EQ
等于
NE
不等于
LT
小于less than
GT
大于greater than
属性操作符
OFFSET
取出变量或标号所在段内的偏移地址
TYPE
取出类型值
变量
DB
1
DW
2
DD
4
DQ
8
DT
10
标号
NEAR
-1
FAR
-2
SIZE
取出变量的大小
SIZE=LENGTH X TYPE
(LENGTH是DUP前的重复数
伪指令
赋值伪指令
EQU
定义名称类型伪指令
LABEL
宏指令
MACRO
CPU引脚
GND,VCC
地和电源
AD0~AD15
地址/数据复用引脚
T1周期,输出低16位地址
其他周期,传送数据
A16/S3~A19/S6
地址/状态复用引脚
T1周期,输出地址信息高四位A16~A19
其他周期,输出状态信息
S4S3=
00
ES段寄存器
01
SS
10
CS
11
DS
(BHE)'/S7
高8位数据总线允许/状态复用信号
高8位AD8~AD15有效
(RD)'
读信号
读存储器/IO端口
READY
准备就绪
表示内存或I/O设备已做好输入/输出数据的准备工作,可以进行读写操作
(TEST)′
测试输入信号(低
高电平
处于空转状态进行等待
低电平
结束等待状态,CPU执行下一条指令
INTR
可屏蔽中断访求信号的输入端(高
最后一个周期,I/O设备向CPU申请中断
NMI
非屏蔽中断输入端(低->高)
不受中断标志位影响,也不能用软件进行屏蔽
RESET
复位输入信号(高)
CLK
时钟输入端
MN/(MX)'
最小/最大模式控制信号输入端
高电平
CPU工作处于最小模式
低电平
最大模式
M/IO′
存储器/输入输出操作选择控制信号
高电平
CPU与存储器进行数据传输
低电平
CPU与I/O进行数据传输
WR′
写信号输出
INTA′
中断响应信号输出
ALE
地址锁存允许信号输出
DT/R′
数据发送/接收控制信号
控制数据传送方向
CPU写数据
输出高电平
CPU读数据
输出低电平
DEN′
数据允许信号
HOLD
总线请求保持信号
HLDA
总线保持响应信号