汇编语言小结

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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功能调用

相关文档
最新文档