汇编语言小结
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
汇编语言复习小结
一、8088/8086的功能结构
1、总线接口单元(BIU)。由指令队列、指令指针(IP)、段寄存器、地址加法器和总线控制逻辑等构成。该单元管理着8088与系统总线的接口,负责CPU对存储器和外设进行访问。
2、执行单元(EU)。由ALU、通用寄存器、地址寄存器、标志寄存器和指令译码逻辑等构成,它负责指令的译码、执行和数据的运算。
3、指令预取(指令队列)。8088的BIU维护着长度为4字节的指令队列,该队列按照“先进先出(FIFO)”的方式进行工作。
二、8088/8086的寄存器结构
8088/8086的寄存器组有8个通用寄存器、4个段寄存器、1个标志寄存器和1个指令指针寄存器,均为16位。分类方法如下:
三、8088/8086的存储器结构
将存储器空间分成许多逻辑段(Segment)来管理。每个存储器单元可以用“段基地址:段内偏移地址”表达其准确的物理位置。
(十六进制)5位物理地址=4位段地址左移1位+偏移地址
小端方式:低字节对低地址、高字节对高地址。
四、为什么能并行执行?
答:执行单元(运算器)和总线接口-指令队列单元这两部分同时工作就是一种并行操作方式,执行单元从指令队列头部获取指令,只要队列不是空的,它就能一直执行无需等待。同一时间内,总线接口单元从内存中读取指令,填入队列尾部,尽量保证队列处于“满”的状态(8086满队列是六条指令)。也就是说,取指令和执行指令并行完成,基本上互不干扰。
五、8088/8086的数据寻址方式
1、立即数寻址方式
2、寄存器寻址方式
3、存储器寻址方式
(1)直接寻址方式
(2)寄存器间接寻址方式
(3)寄存器相对寻址方式
(4)基址变址寻址方式
(5)相对基址变址寻址方式
六、五大类指令分类:
方法一(按指令功能分类):
1、数据传送类指令:
MOV(传送指令)
XCHG(交换指令)
XLAT(换码指令)
PUSH(进栈指令)
POP(出栈指令)
LEA(地址传送指令)
标志操作指令
2、算术运算类指令:
加法指令:ADD ADC INC
减法指令:SUB SBB DEC NEG CMP
符号扩展指令:CBW CWD
乘法指令:MUL IMUL
除法指令:DIV IDIV
十进制调整指令
3、位操作类指令:
逻辑运算指令:AND OR XOR TEST NOT
移位指令:SHL SHR SAL SAR
循环位移指令:ROL ROR RCL RCR
4、控制转移类指令:
无条件转移指令:JMP
条件转移指令:JCC(30条)
循环指令:LOOP LOOPE LOOPNE JCXZ
子程序指令:CALL RET
中断指令和系统调用功能:INT IRET INTO
5、处理器控制类指令
方法二(按操作数的搭配关系分类):
九种合法:
reg mem<——imm
reg mem seg<——reg
reg seg<—— mem
reg mem<——seg
七种不合法:
mem<——mem
seg<——seg
seg<——imm
imm<——均不能
方法三(按如何影响标志位分类):
1、数据传送类指令:
(1)除标志操作指令外,其他均不影响标志位。
(2)标志操作指令可以直接改变CF、DF、IF标志的状态。
2、算术运算类指令:
(1)在加法和减法指令中,除INC和DEC不影响CF标志外,其他按定义影响全部状态标志位。
(2)符号扩展指令均不影响标志位。
(3)乘法指令影响标志OF和CF,对其他状态标志没有定义,也就是成为任意,不可预测。(这与对标志没有影响是不同的,没有影响是指不改变原来的状态)(4)除法指令使状态标志没有定义,但是却可能产生溢出。
3、位操作类指令:
(1)逻辑运算指令:AND、OR、XOR、TEST均设置CF=OF=0,根据结果设置SF、ZF和PF状态,而对AF未定义。NOT不影响标志位。
(2)移位指令:按照移入的位设置进位标志CF,根据移位后的结果影响SF、
ZF、
PF,对AF没有定义。
(3)循环移位指令:按指令功能设置进位标志CF,但不影响SF、ZF、PF、AF标志。
4、控制转移类指令:均不影响标志,但条件转移指令要利用标志。
七、操作数在指令书写中的规则:
1、两个操作数的字长要一致。
2、目的操作数不能用立即数imm。
3、两个操作数不能同为mem,不能同为seg。
4、十六进制数以字母开头时,需要在前面加0。
5、存储器操作数mem可以是字节、字、双字,类型不确定,需要用PTR说明。
6、绝大部分指令不用seg。(MOV、PUSH、POP除外)
7、绝大部分数据传送类指令不影响标志位,主要是算术运算类指令和位操作类指令影响标志位。
八、DOS功能调用