作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试模拟 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)
OUT (C), A
,这些指令确实将整个 BC 转储到地址总线上,而不仅仅是 C,并且大多数 Z80 微型制造商都非常乐意使用完整的 16 位地址,因为它允许他们使用简化的逻辑“如果此地址线为低,则正在寻址组件”,同时仍为外部外围设备留出合适的范围)
关于port - 英特尔 8080 指令 : OUT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13551973/
我是一名优秀的程序员,十分优秀!