|
发表于 2024-1-2 21:42:17
|
显示全部楼层
这是因为8086的内部数据总线宽度是16位(即2字节),而每个存储单元的大小是8位(即1字节)。当从奇地址开始读取一个字时,8086需要先读取低字节(低地址)的数据,然后再读取高字节(高地址)的数据,这两次读取分别需要两个总线周期。
你可以将8086想象成一个小偷,他手上只能拿住一个字节大小的东西。当他需要偷一个双字节(即两个字节)的东西时,他需要先偷一半(一字节),然后回去再偷另一半,这样就需要两次行动。
下面是一个示例代码,展示了如何从奇地址开始读取一个字:
- org 100h
- section .data
- myData dw 0xAABB ; 存储一个字
- section .text
- mov bx, offset myData ; 将myData的地址赋值给寄存器bx
- mov al, byte [bx] ; 读取低字节(低地址)
- mov ah, byte [bx+1] ; 读取高字节(高地址)
- ; 这样,al和ah中就保存了myData的两个字节
- mov ax, 4C00h
- int 21h
复制代码
希望这个例子能帮助你理解为什么从奇地址读取一个字需要两个总线周期。如果还有其他问题,请随时提问!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |
|