鱼C论坛

 找回密码
 立即注册
查看: 216|回复: 1

一个很重要的问题

[复制链接]
发表于 2024-1-2 21:42:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
8086从奇地址开始读取一个字,需要花费两个总线周期,为什么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-1-2 21:42:17 | 显示全部楼层
这是因为8086的内部数据总线宽度是16位(即2字节),而每个存储单元的大小是8位(即1字节)。当从奇地址开始读取一个字时,8086需要先读取低字节(低地址)的数据,然后再读取高字节(高地址)的数据,这两次读取分别需要两个总线周期。

你可以将8086想象成一个小偷,他手上只能拿住一个字节大小的东西。当他需要偷一个双字节(即两个字节)的东西时,他需要先偷一半(一字节),然后回去再偷另一半,这样就需要两次行动。

下面是一个示例代码,展示了如何从奇地址开始读取一个字:

  1. org 100h

  2. section .data
  3. myData dw 0xAABB    ; 存储一个字

  4. section .text
  5. mov bx, offset myData   ; 将myData的地址赋值给寄存器bx
  6. mov al, byte [bx]      ; 读取低字节(低地址)
  7. mov ah, byte [bx+1]    ; 读取高字节(高地址)

  8. ; 这样,al和ah中就保存了myData的两个字节

  9. mov ax, 4C00h
  10. int 21h
复制代码


希望这个例子能帮助你理解为什么从奇地址读取一个字需要两个总线周期。如果还有其他问题,请随时提问!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-28 04:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表