微机原理与接口技术 期末复习总结 - 图文 联系客服

发布时间 : 星期五 文章微机原理与接口技术 期末复习总结 - 图文更新完毕开始阅读64d2e202ba68a98271fe910ef12d2af90242a866

微机原理与接口技术

2、 8086CPU由总线接口部件BIU和执行部件EU组成。BIU和EU的操作是异步的,是

并行的,为8086取指令和执行指令的并行操作体统硬件支持。

BIU是CPU与存储器和I/O设备的接口,负责与存储器,I/O接口进行数据传送 8086CPU的BIU中的指令队列为6字节,可以预取6字节的指令代码:8088CPU为4字节。BIU要保证指令队列始终是满的,当指令队列有2个空字节(8088为1个)时,BIU将自动取指令到指令队列。遵循的是先进先出原则(按顺序存放,并按顺序取到EU中去) 而堆栈是先进后出

3、 8086处理器的启动 4、寄存器结构(重点?)

8086微处理器包含有13个16位的寄存器和9位标志位。 4个通用寄存器(AX,BX,CX,DX) 4个段寄存器(CS,DS,SS,ES)

4个指针和变址寄存器(SP,BP,SI,DI) 指令指针(IP) 1)、通用寄存器

(1)8086含4个16位数据寄存器,它们又可分为8个8位寄存器,即: ?AX ?AH,AL ?BX?BH,BL ?CX?CH,CL ?DX?DH,DL

常用来存放参与运算的操作数或运算结果 (2)数据寄存器特有的习惯用法

?AX:Accumulator累加器。多用于存放中间运算结果。所有I/O指令必须都通过AX与接口传送信息; ?BX:(Base Register)基址寄存器。在间接寻址中用于存放基地址; ?CX:(Count Register)计数寄存器用于在循环或串操作指令中存放循环次数或重复次数; ?DX:Data Register数据寄存器。在32位乘除法运算时,存放高16位数;在间接寻址的I/O指令中存放I/O端口地址。 2)、指针和变址寄存器(专用寄存器)(16位) ?SP:(Stack Pointer)堆栈指针寄存器,其内容为栈顶的偏移地址; ?BP:(Base Pointer)基址指针寄存器,常用于在访问内存时存放内存单元的偏移地址。 ?SI:(Source Index)源变址寄存器(传送数据串时用) ?DI:(Destination Index)目标变址寄存器(传送数据串时用) 变址寄存器常用于指令的间接寻址或变址寻址。 3)、段寄存器(属于BIU) CS:(Code Segment)代码段寄存器,代码段用于存放指令代码 DS:(Data Segment)数据段寄存器(与SI,DI共用) ES:(Extra Segment)附加段寄存器,数据段和附加段用来存放操作数 SS:(Stack Segment)堆栈段寄存器,堆栈段用于存放返回地址,保存寄存器内容,传递参数(与SP,BP共用)主要功能是暂时存放数据和地址,通常用来保护断点和现场。 4)、指令指针(IP)

16位指令指针寄存器,其内容为下一条要执行的指令的偏移地址。(与CS共同表示)

5 / 66

微机原理与接口技术

5)、标志寄存器 (1)状态标志: ?进位标志位(CF):运算结果的最高位有进位或有借位,则CF=1 ?辅助进位标志位(AF):运算结果的低四位有进位或借位,则AF=1(一般在BCD码运算中)

?溢出标志位(OF):运算结果有溢出,则OF=1 ?零标志位(ZF):反映指令的执行是否产生一个为零的结果 ?符号标志位(SF):指出该指令的执行是否产生一个负的结果,当最高位为1时,SF=1, ?奇偶标志位(PF):表示指令运算结果的低8位“1”个数是否为偶数,则PF=1 (2)控制标志位

?中断允许标志位(IF):表示CPU是否能够响应外部可屏蔽中断请求,IF=1,允许中断 ?跟踪标志(TF):CPU单步执行 ?方向标志(DF):若用指令STD将DF=1,数据串操作过程中地址自动递减 5、8086的引脚及其功能(重点掌握以下引脚)

?AD15~AD0:双向三态的地址总线,输入/输出信号。传送地址时,单向,三态输出;传送数据,双向,三态输入输出

?INTR:可屏蔽中断请求输入信号,高电平有效。可通过设置IF的值来控制。 ?NMI:非屏蔽中断输入信号。不能用软件进行屏蔽。

?RESET:复位输入信号,高电平有效。复位的初始状态见 ?MN/MX:最小最大模式输入控制信号。

最小工作模式,指系统中只有8088/8086CPU一个微处理器,最小模式也称为单处理器模式(MN/MX接电源)

最大工作模式,指系统包含两个或两个以上的微处理器(MN/MX接地) 6.存储器组织

字:低位字节放在低地址中,高位字节放在高地址中 地址从上到下,从低到高 字:1123H

当一个字存入存储器时需要占用两个存储单元,字单元的地址采用它的低地址来表示

例如(0004H)=1234H,即字单元:(0004H)单元存放的是34H,(0005H)单元存放的是12H。而(0004H)=34H为字节单元 双字:(32位),高位字存段地址,低位字存偏移量

规则字:低位字节存放在偶数地址(高位字节放在奇数地址) (如F0000H,FFFFEH为偶数地址) 非规则字:低位字节存放在奇数地址

读写一个字节时,只需访问某个存储体(奇地址存储体或偶地址存储体),相应的8位数据在数据总线上有效,而另外一个

字节数据被忽略,只需要一个总线周期

读写一个字时,若该字单元地址是从偶地址开始的,即其高字节在奇地址单元,低地址在偶地址单元,则只需执行一个总线读写周期便可完成对改字的读写操作

若该字地址从奇地址开始,则CPU需要执行连续的两个读写周期才能完成对该字的读写操作,第一次取奇地址存储体上的事数据,偶地址存储体上的8位数据被忽略,第二次取偶地址存储体上的数据,奇地址存储体上的8位数据被忽略,要两个总线读写周期 为了加快运行速度,通常从偶地址开始存放字数据

6 / 66

微机原理与接口技术

存储器操作涉及的类型 正常使用段基址 可使用段基址 偏移地址 取指令 CS SS DS DS ES SS 无 无 CS,ES,SS CS,ES,SS 无 CS,DS,ES IP SP 有效地址 SI DI 有效地址 堆栈操作 变量 源数据用 目的数据用 作为基址寄存器使用 第三章 8086指令系统

说明:8086指令系统这章为重点章节,对下面列出的指令都要求掌握。

8086寻址方式

一、数据寻址方式(重点?)

8086指令格式:

操作码 目的操作数 源操作数

无操作数:控制类指令,如HLT(暂停指令)

单操作数:只给出一个操作数地址,该操作数可在寄存器或存储器中,或指令直接给出立即数,如INC AL ; 将AL中的内容加1(增量指令) 双操作数:目的操作数 源操作数;一个操作数在寄存器中,另一个在寄存器或存储器中,或指令中直接给出立即数,不允许两个都在存储器中,目的操作数是一个地址 操作数的来源:

1. 指令中: MOV AX, 1234H 2. 寄存器中: MOV AX, BX 3. 存储器中: MOV AX, [1234H] 1、立即寻址

操作数(为一常数)直接由指令给出 (此操作数称为立即数) 立即寻址只能用于源操作数(立即数可以是8位,或16位) 例: MOV AX, 1C8FH

MOV BYTE PTR[2A00H], 8FH(BYTE PTR 指字节单元) MOV AL, 01H

错误例:

× MOV 2A00H,AX ; 错误!

指令操作例:MOV AX,3102H; AX?3102H

执行后,(AH) = 31H,(AL) = 02H

主要用来给寄存器赋初值 2、寄存器寻址

(1)操作数放在某个寄存器中

7 / 66

微机原理与接口技术

(2)源操作数与目的操作数字长要相同 (3)寄存器寻址与段地址无关

(4)注意:CS不能当目的操作数! 例:

MOV AX, BX

MOV [3F00H], AX MOV CL, AL 错误例:

× MOV AX,BL ; 字长不同

× MOV ES:AX,DX ; 寄存器与段无关 3、直接寻址

(1)指令中直接给出操作数的16位偏移地址 偏移地址也称为有效地址(EA, Effective Address)

(2)默认的段寄存器为DS,但也可以显式地指定其他段寄存器——称为段超越前缀 (3)偏移地址也可用符号地址来表示,如ADDR、VAR

例: MOV AL, [2A00H](2A00H内容存入AL中)

MOV AX ,[2A00H](2A00H内容存入AL中,2A01H内容存入AH中) MOV DX ,ES:[2A00H](段超前)P54

MOV SI,TABLE_PTR

加了[ ]表示存储单元的地址, 4、间接寻址

? 操作数的偏移地址(有效地址EA)放在寄存器中

?以SI、DI、BX间接寻址,操作数在当前数据段(DS)区域中,即数据段寄存器DS乘以16加上SI,DI或BX中的16位偏移量后作为操作数的物理地址例如指令MOV AX,[SI]中,源操作数的物理地址是DS×16+SI

?以寄存器BP间接寻址时,操作数在堆栈段(SS)区域中,即堆栈寄存器SS乘以16与BP的内容相加作为操作数的物理地址。若在指令中规定是段超越的,则BP的内容也可以与其他段寄存器相加,如MOV AX,DS:[BP]的源操作数的物理地址是DS×16+BP ? 例: MOV AX,[BX] MOV CL,CS:[DI]

错误例 :× MOV AX, [DX]

× MOV CL, [AX] × MOV [SP],AX 5、寄存器变址寻址

?EA=间址寄存器的内容加上一个8/16位的位移量 ? 例: MOV AX, [BX+8] MOV CX, TABLE[SI]

MOV AX, [BP]; 默认段寄存器为SS ? 指令操作例:MOV AX,DATA[BX]

若(DS)=6000H, (BX)=1000H, DATA=2A00H, (63A00H)=66H, (63A01H)=55H

则物理地址 = 60000H + 1000H + 2A00H = 63A00H

指令执行后:(AX)=5566H

8 / 66