8086CPU存储器及寄存器

存储器从读写操作上分类

一台 PC 机中,装有多个存储器芯片。这些存储器芯片从物理连接上看是独立的、不同的器件。从读写属性上看分为两类:随机存储器(RAM)和只读存储器(ROM)。随机存储器可读可写,但必须带电存储,关机后存储的内容丢失;只读存储器只能读取不能写入,关机后其中的内容不丢失。这些存储器从功能和连接上又可分为以下几类。

随机存储器、装有BIOS的ROM、接口卡上的RAM

3

3.jpg

8086PC机内存地址空间分配图

4

4.jpg

8086CPU寄存器

不同的 CPU,寄存器的个数、结构是不相同的。8086CPU 有 14 个寄存器,每个寄存器有一个名称。这些寄存器是:AX、BX、CX、DX、SI、DI、SP、BP、IP、CS、SS、DS、ES、PSW。

AX、AH、AL

8086CPU 的上一代 CPU 中的寄存器都是 8 位的,为了保证兼容,使原来基于上代 CPU 编写的程序稍加修改就可以运行在 8086 之上,8086CPU 的 AX、BX、CX、DX 这 4 个寄存器都可分为两个可独立使用的 8 位寄存器来用:

AX 可分为 AH 和 AL;

BX 可分为 BH 和 BL;

CX 可分为 CH 和 CL;

DX 可分为 DH 和 DL。

5.jpg

5

寄存器相加

1、程序段中的最后一条指令 add ax, bx,在执行前 ax 和 bx 中的数据都为 8226H,相加后所得的值为:1044CH,但是 ax 为 16 位寄存器,只能存放 4 位十六进制的数据,所以最高位的 1 不能在 ax 中保存,ax 中的数据为:044CH。

2、程序段中的最后一条指令 add al,93H,在执行前,al 中的数据为 C5H,相加后所得的值为:158H,但是 al 为 8 位寄存器,只能存放两位十六进制的数据,所以最高位的 1 丢失,ax 中的数据为:0058H。

注意:在2中,此时al是做为一个独立的八位寄存器来使用的,和ah没有关系,CPU在执行指令是认为al和ah是两个不相关的寄存器(即使溢出也不会进位到ah中)

6

6.jpg

四条指令,编程计算2的4次方,仅使用mov,add指令

mov ax,2

add ax,ax

add ax,ax

add ax,ax

8086CPU给出物理地址的方法

有20位地址总线,将16位段地址和16位的偏移地址送入地址加法器,输出20为的物理地址。

地址加法器采用物理地址=段地址*16+偏移地址的方法用段地址和偏移地址来合成物理地址。

7

7.jpg

思考:一个X进制的数据左移1位,相当于乘以X。

”物理地址=段地址*16+偏移地址“的本质含义是:基础地址+偏移地址=物理地址

结论:CPU可以用不同的段地址和偏移地址形成同一个物理地址

8

8.jpg

段地址用SA表示,偏移地址用EA表示

物理地址可以转化成多种 段地址:偏移地址 组合

将物理地址转化为段地址:偏移地址

  1. 利用十六进制的特点

    • 可以把12345H拆分为12340H + 0005H。

    • 这里12340H相当于段地址乘以16(即段地址×10H),0005H就是偏移地址。

    • 那么段地址就是1234H,偏移地址就是5H。

    • 在将物理地址转换为段地址:偏移地址格式时,有一个较为简便的技巧。

    • 因为物理地址 = 段地址×16+偏移地址,而16在十六进制中表示为10H。

    • 对于给定的物理地址 (A),我们可以将其写成 (A = B\times10H + C)的形式,其中 (B) 就是段地址, (C) 就是偏移地址。

    • 例如,对于物理地址12345H:

  2. 灵活拆分物理地址

    • 一般情况下,观察物理地址的十六进制表示形式,先尝试将其拆分成一个能被10H整除的数和另一个小于10H的数。

    • 能被10H整除的数除以10H得到段地址,另一个数就是偏移地址。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值