微机原理与接口技术 ——80x86微处理器 西安邮电大学 计算机学院 范琳
1 2 3 4 5 第三章 80x86微处理器 80x86 微处理器简介 8086 微处理器 8086 寄存器 8086 引脚功能 8086 存储器组织 5
第三章 80x86微处理器 8086/8088寄存器结构 在8086/8088微处理器中可供程序员使用的有14个16位寄存器,这14个寄存器按其用途可分为通用寄存器、指令指针、控制寄存器和段寄存器等4类。
第三章 80x86微处理器 AH BH CH DH AL BL CL DL 15 8 7 AX BX CX DX 累加器 基址寄存器 AX BX CX DX 累加器 基址寄存器 计数寄存器 数据寄存器 SP BP SI DI CS DS SS ES IP FLAGS 堆栈指针寄存器 源变址寄存器 目的变址寄存器 指针寄存器 变址寄存器 代码段寄存器 数据段寄存器 堆栈段寄存器 附加数据段寄存器 段寄存器 指令指针寄存器 状态标志寄存器 控制寄存器 通用寄存器
第三章 80x86微处理器 AX 存放数据 IO指令中都使用AL或者AX IN AL,12H BX 存放数据 可以默认提供数据段的偏移地址 AH BH CH DH AL BL CL DL 15 8 7 AX BX CX DX 累加器 基址寄存器 计数寄存器 数据寄存器 SP BP SI DI CS DS SS ES IP FLAGS 堆栈指针寄存器 源变址寄存器 目的变址寄存器 指针寄存器 变址寄存器 代码段寄存器 数据段寄存器 堆栈段寄存器 附加数据段寄存器 段寄存器 指令指针寄存器 状态标志寄存器 控制寄存器 通用寄存器 BX 存放数据 可以默认提供数据段的偏移地址 MOV AX, BX MOV AX, [BX] CX 存放数据 提供循环程序的循环次数 LOOP指令默认让CX- - DX 存放数据 在乘除法指令中是默认寄存器 DIV BX ;(DX AX )/BX 提供IO端口地址 OUT DX, AL
第三章 80x86微处理器 SP 堆栈操作指令PUSH和POP访问它 BP 可以默认提供堆栈段的偏移地址 但是PUSH和POP不能访问它 AH BH CH DH AL BL CL DL 15 8 7 AX BX CX DX 累加器 基址寄存器 计数寄存器 数据寄存器 SP BP SI DI CS DS SS ES IP FLAGS 堆栈指针寄存器 源变址寄存器 目的变址寄存器 指针寄存器 变址寄存器 代码段寄存器 数据段寄存器 堆栈段寄存器 附加数据段寄存器 段寄存器 指令指针寄存器 状态标志寄存器 控制寄存器 通用寄存器 SP 堆栈操作指令PUSH和POP访问它 BP 可以默认提供堆栈段的偏移地址 但是PUSH和POP不能访问它 SI和DI 在串操作指令中分别指向源串和目的串
通用寄存器 这些R中,能用作地址的有哪些? 如何区分什么是地址什么是数据? 如何知道存储器操作数在哪个段内? 第三章 80x86微处理器 15 8 7 AH AL AX 累加器 BH BL BX 基址寄存器 数据寄存器 CH CL CX 计数寄存器 DH DL DX 数据寄存器 15 通用寄存器 SP 堆栈指针寄存器 指针寄存器 BP 基址寄存器 SI 源变址寄存器 变址寄存器 DI 目的变址寄存器 BX, BP, SI, DI, SP, IP 这些R中,能用作地址的有哪些? 如何区分什么是地址什么是数据? 如何知道存储器操作数在哪个段内? 注意:mov [ax],1是错的
偏移地址和段寄存器的默认关系 CS —— IP DS —— BX,SI,DI,位移量 SS —— BP,SP ES —— DI(串操作)
例题 写出下列存储器操作数的物理地址表达式: mov ax, [1000h] mov ax, [bx] mov ax, [bp+si] mov bx, [bx+di+5] 下一条要取出的指令的物理地址? ds*10H+1000H ds*10H+ bx ss*10H+ bp + si ds*10H+ bx + di + 5 cs*10H+ ip
1. 通用寄存器 有8个通用寄存器,可分为两组。 (1) 数据寄存器。 ① 累加器 AX(16位)→AH、AL(高、低各8位) ② 基址寄存器BX(16位)→BH、BL(高、低各8位) ③ 计数寄存器CX(16位)→CH、CL(高、低各8位) ④ 数据寄存器DX(16位)→DH、DL(高、低各8位) 数据寄存器的特点是,这4个16位寄存器可分为高8位(AH、BH、CH和DH)与低8位(AL、BL、CL和DL),这两组8位寄存器可分别寻址、独立操作。
(2) 指针寄存器和变址寄存器。另外4个通用寄存器是: ① 堆栈指针SP(16位) ② 基址指针BP(16位) 第三章 80x86微处理器 (2) 指针寄存器和变址寄存器。另外4个通用寄存器是: ① 堆栈指针SP(16位) ② 基址指针BP(16位) ③ 源变址寄存器SI(16位) ④ 目的变址寄存器DI(16位) 这4个16位寄存器只能按16位进行存取操作,主要用来形成操作数的地址,用于堆栈操作和变址运算中计算操作数的有效地址。
指令指针IP是一个16位专用寄存器,它指向当前需要取出的指令字节,当BIU从内存中取出一个指令字节后,IP就自动指向下一条指令 第三章 80x86微处理器 2. 控制寄存器 (1) 指令指针寄存器IP(16位) 指令指针IP是一个16位专用寄存器,它指向当前需要取出的指令字节,当BIU从内存中取出一个指令字节后,IP就自动指向下一条指令 (2) 标志寄存器FLAG(16位) 8086/8088有一个16位的标志寄存器FLAGS,在FLAGS中有意义的有9位,其中6位是状态位:CF、PF、AF、ZF、SF、OF,3位是控制位:TF、IF、DF。
标志寄存器(Flags) O D I T S Z A P C 第三章 80x86微处理器 15 14 13 12 11 10 9 8 7 6 O D I T S Z A P C 状态标志:表示处理器当前运行的状态。 CF——进位标志,运算结果有进(借)位,CF=1 AF——辅助进位标志,低4位向前有进(借)位,AF=1 ZF——零标志,结果为0, ZF=1 SF——符号标志,最高位的值 OF——溢出标志,双高位判别法确定 PF——奇/偶标志,运算结果低8位中1的个数为偶数个,PF=1 控制标志:控制处理器的某一特定功能。 IF——可屏蔽中断允许标志,IF=1表示允许 DF——方向标志,DF=0 地址增量变化;DF=1地址减量变化 TF——陷阱标志(单步执行标志)
次高位向前有进位, OF=Cs Cp=1(∵Cs=0,Cp=1) 第三章 80x86微处理器 标志寄存器举例 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 O D I T S Z A P C 0101 0100 0011 1001 + 0100 0101 0110 1010 1001 1001 1010 0011 最高位向前没有进位,CF=0 低8位中偶数为4个, PF=1 低4位向前有进位, AF=1 运算结果不为0, ZF=0 最高位=1, SF=1 次高位向前有进位, OF=Cs Cp=1(∵Cs=0,Cp=1)
第三章 80x86微处理器 Thank you!