03、认识8086处理器


上一节:02、汇编语言的前世今生
下一节:04、原书第2章习题

01、8086的通用寄存器

8086的8个通用寄存器均为16位(2个字)的,其中A/B/C/D-X可拆分为两个8位的寄存器AH、AL,BH、BL等等:
在这里插入图片描述
在这里插入图片描述
课后习题:
在这里插入图片描述
在这里插入图片描述

02、8086的内存访问和字节序

8086使用低端字节序进行内存访问和存储,从寄存器SI中将C05B存入地址0x02处,则低字节5B存入低地址0x02处,高字节数据C0存入高地址0x03处。
在这里插入图片描述
课后习题:
在这里插入图片描述

03、程序的分段

在这里插入图片描述

  • A1为操作码:将0C00处的一个字传送到AX寄存器中;
  • 0603为操作码:将AX中的内容 加上 地址0C02出的一个字,结果存在AX中;

04、程序的重定位

第一次将地址0x00放入IPR寄存器中,处理器将从IPR中取地址去内存中取指令执行:
在这里插入图片描述
第一次执行完之后将当前指令的地址加上当前指令的长度为下一条指令的地址存入IPR中,作为第二次执行的地址:
在这里插入图片描述
若程序的地址发生变化:
在这里插入图片描述
则程序中还使用原理0X0C000X0C02则会导致程序到错误的地址取指令执行,会发生错误。这是由于程序中使用的地址0X0C000X0C02均为绝对地址。使用绝对地址的程序不能在别的内存上正确的执行。

05、段地址和偏移地址

处理器增加一个DSR寄存器用于存放数据的物理起始地址
原先的IPR寄存器存放指令的物理起始地址
在这里插入图片描述

  • 处理器使用IPR中的地址访问内存取指令执行
  • 取得指令操作码A1表示传送指令,操作数0x0000为偏移地址
  • 处理器使用 偏移地址 + DSR寄存器内数据段起始地址作为物理地址,开始执行传送指令。
  • 执行完毕之后,IPR寄存器变为下一条指令地址。

06、8086内存访问困境

8086中有20根地址线,可以访问2^20=1048576=1024K=1M个地址:
在这里插入图片描述
但是8086中的数据段寄存器DS代码段寄存器CS均为16位,无法容纳20位。

07、8086选择段地址策略

在这里插入图片描述

  • 8086使用地址0xXXXX0的地址空间做为有效地址
  • 如将0x30CE0右移4位(除以16)得到0x30CE传入代码段寄存器CS
  • 若取地址时,将0x30CE左移4位(乘以16)得到地址0x30CE0作为有效地址。

08、8086使用段地址和偏移地址访问内存过程

在这里插入图片描述

  • 使用CS内地址左移4位 + IP内偏移量 = 有效地址,以此来访问内存

在这里插入图片描述

  • 使用DS内地址左移4位 + 指令中的内偏移量 = 有效地址
  • 以此来访问内存,即将数0x053C送入AX寄存器
  • 同时IP指令指针寄存器中的地址自动加上当前指令的长度,变为下一条指令的偏移地址0x0003

09、逻辑地址和分段的灵活性

在这里插入图片描述

  • 地址0x22567可以使用上图中的基地址+偏移地址的形式表示
  • 其中0x12560不能作为基地址,因为此时的偏移地址位0x1007超过了0xFFFF,8086处理器表示不了

在这里插入图片描述

  • 由于段内偏移地址最大位0xFFFF,所以段的最大长度为65535字节= 64KB

课后习题:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
上一节:02、汇编语言的前世今生
下一节:04、原书第2章习题

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

「已注销」

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值