8088的内部寄存器
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
60003H 08H 60004H
. . .
?解决:存储器分段
段基址 段基址 段基址 段基址
存储器分段
低地址
段i-1 段i
最大 64KB
段i+1
高地址
逻辑地址
? 段基地址和段内偏移组成了逻辑地址
段地址 偏移地址(偏移量)
60000H
格式为:段地址 :偏移地址
段首地址
60002H 00H 12H
××× ???××× 0000
段基地址(16位)
物理地址=段基地址×16+偏移地址
16位
段基址
0000
+
段内偏移
物理地址
20位
? BIU中的地址加法器用来实现逻辑地址到物理 地址的变换
? 8088 可同时访问4个段,4个段寄存器指示了每 个段的基地址
[例]:
? 已知CS=1055H ,DS=250AH ,ES=2EF0H ,SS=8FF0H ,
地址指针寄存器
? SP:堆栈指针寄存器,其内容为栈顶的 偏移地址;
? BP:基址指针寄存器,常用于在访问内 存时存放内存单元的偏移地址。
BX与BP在应用上的区别
? 作为通用寄存器,二者均可用于存放 数据;
? 作为基址寄存器,BX通常用于寻址数 据段;BP则通常用于寻址堆栈段。
? BX一般与DS或ES搭配使用
16位 0000H-FFFFH(0-65535)
带符号数 80H-7FH(-128~127) 8000H-7FFFH(-32768~32767)
MOV AX,0FA00H MOV 8000H ,DX
;正确 ;错误
? 2、寄存器操作数
放在8个通用寄存器 或4个段寄存器 中的操作数
16 位
AX
AH
AL
DS段有一操作数,其偏移地址 =0204H ,
1)画出各段在内存中的分布
2)指出各段首地址
10550H
3)该操作数的物理地址 =?
CS
250A0H
解: 各段分布及段首址见右图所示。 2EF00H
DS
操作数的物理地址为:
ES
250AH×10H+0204H = 252A4H
8FF00H
SS
堆栈及堆栈段的使用
MOV AL, [2A00H]
MOV AL, [BX+0A00H]
MOV AL, [BX][SI] MOV AL, [DI]
SP
SP
来自百度文库
高 压栈前
高 压栈后
高 退栈后
[例]:
? 若已知(SS)=1000H
(SP)=2000H
段首
堆
? 则堆栈段的段首地址=?
栈顶
栈
? 栈顶地址=?
段
? 若该段最后一个单元 栈底
地址为10100H,则栈底=?
8088/8086的操作数分为3类
? 1、立即数(常数)
? 取值范围如下表:
8位 无符号数 00H-FFH(0-255)
变址寄存器
? SI:源变址寄存器 ? DI:目标变址寄存器 ? 变址寄存器常用于指令的间接寻址
或变址寻址。特别是在串操作指令 中,用SI存放源操作数的偏移地址 ,而用DI存放目标操作数的偏移地 址。
段寄存器
用于存放逻辑段的段基地址(逻辑段的概念后面
将要介绍)
CS:代码段寄存器
代码段用于存放指令代码
? 内存中一个按FIFO方式操作的特殊区 域
? 每次压栈和退栈均以WORD为单位 ? SS存放堆栈段地址,SP存放段内偏移
,SS:SP构成了堆栈指针 ? 堆栈用于存放返回地址、过程参数或
需要保护的数据 ? 常用于响应中断或子程序调用
堆栈操作
低
低
低
SS
SS
SS
SP
F0H
SP
F0H
SP
12H
12H
SP
数据寄存器特有的习惯用法
? AX:累加器。多用于存放中间运算结果。所有 I/O指令必须都通过AX与接口传送信息;
? BX:基址寄存器。在间接寻址中用于存放基地址 ;
? CX:计数寄存器。用于在循环或串操作指令中存 放循环次数或重复次数;
? DX:数据寄存器。在32位乘除法运算时,存放 高16位数;在间接寻址的I/O指令中存放 I/O端口地址。
8088的内部寄存器
? 含14个16位寄存器,按功能可分为三类
8个通用寄存器 4个段寄存器 2个控制寄存器
通用寄存器
数据寄存器(AX,BX,CX,DX) 地址指针寄存器(SP,BP) 变址寄存器(SI,DI)
数据寄存器
? 8088含4个16位数据寄存器,它们又 可分为8个8位寄存器,即:
– AX AH,AL – BX BH,BL – CX CH,CL – DX DH,DL 常用来存放参与运算的操作数或运算结果
DS:数据段寄存器
ES:附加段寄存器
数据段和附加段用来存放操作数
SS:堆栈段寄存器
堆栈段用于存放返回地址,保存寄存器内容
,
传递参数
控制寄存器
? IP:指令指针寄存器,其内容为下一条 要执行的指令的偏移地址
? FLAGS:标志寄存器
– 状态标志:存放运算结果的特征 – 控制标志:控制某些特殊操作 6个状态标志位(CF,SF,AF,PF,OF,ZF) 3个控制标志位(IF,TF,DF)
16 位
BX
BH
BL
16 位
CX
CH
CL
16 位
DX
DH
DL
SI
DI
只能存放字操作数
BP
SP
CS
DS
段寄存器存放
ES
当前操作数的 段基地址
SS
不允许将立即数传送到段寄存器
? 3、存储器操作数
存储器操作数
类型 存储单元个数
字节
1
字
2
双字
4
一般不允许两个操作数同时为存储器操作数
存储单元的物理地址 = 段基地址 + 偏移地址
?若指令中没有指明所涉及的段寄存器, CPU就 采用默认的段寄存器来确定操作数所在的段。
?表3.3 段寄存器使用的一些基本约定
存储器操作数的偏移地址(也称有效地址)可以通过 不同的寻址方式由指令给出。
例如,若(BX)=2000H, (SI)=0A00H, (DI)=2A00H ,则以下指令 的结果是一样的:
四、存储器寻址
? 物理地址
– 8088:20根地址线,可寻址220(1MB)个存 储单元
– CPU送到AB上的20位的地址称为物理地 址
物理地址
物理地
.
址
.
存储器的操作完全基 于物理地址。
60000H F0H 60001H 12H 60002H 1BH
?问题:
8088的内部总线和内 部寄存器均为16位, 如何生成20位地址?