gpt4 book ai didi

port - 英特尔 8080 指令 : OUT

转载 作者:行者123 更新时间:2023-12-04 05:22:31 28 4
gpt4 key购买 nike

我正在尝试模拟 Intel 8080 指令集,但我被这条指令卡住了 OUT D8 ,根据书Intel 8080/8085 Assembly Language Programming它说

OUT instruction places the contents of the accumulator on the eight-bit data bus and the number of the selected port on the sixteen-bit address bus. Since the number of ports ranges from 0 through 255, the port number is duplicated on the address bus.



问题是我不明白这是做什么的。谁能给我解释一下,或者给我推荐一篇解释它的文章或一本书。

最佳答案

一种思考方式是 8080 及其衍生产品具有 17 位地址总线,而不是通常引用的 16 位总线。该地址总线的最高位是芯片的输入/输出请求线 (IORQ)。

当您使用正常的加载和存储时,最高位总是被重置。当您执行 in 或 out 时,始终设置最高位。

英特尔命名这条线并期望它用于与外围芯片通信,因此名称,可用寻址形式更加有限,访问的扩展成本以及程序计数器和堆栈指针都不能指向这一事实地址空间的区域。

这给英特尔留下了一个问题,即他们有 16 位地址总线要填充,但只采用了 8 位参数。他们实际上做的是将累加器加载到前 8 位。所以如果你有:

LD A, 0xfe
OUT (0xdc)

然后将值 0xfe 输出到端口地址 0xfedc。

(旁白:为 Zilog 语法而不是 Intel 表示歉意;可能有趣的是 Z80 添加了一堆指令,如 OUT (C), A,这些指令确实将整个 BC 转储到地址总线上,而不仅仅是 C,并且大多数 Z80 微型制造商都非常乐意使用完整的 16 位地址,因为它允许他们使用简化的逻辑“如果此地址线为低,则正在寻址组件”,同时仍为外部外围设备留出合适的范围)

关于port - 英特尔 8080 指令 : OUT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13551973/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com