【发布时间】:2022-01-22 08:54:40
【问题描述】:
我是组装新手。这让我很困扰:如果处理器没有特殊的输入输出指令怎么办?
【问题讨论】:
标签: assembly io cpu-architecture
我是组装新手。这让我很困扰:如果处理器没有特殊的输入输出指令怎么办?
【问题讨论】:
标签: assembly io cpu-architecture
x86 的in 和out 指令或多或少是mov 指令的特例:
您可能说在“min”模式下运行的 8088 CPU 的M//IO 引脚实际上是引脚/A20。在这种情况下,mov al, [si] 指令用于从地址范围 0-0FFFFFh 中读取一个字节,in al, dx 用于从地址范围 100000h-10FFFFh 中读取一个字节。
mov [si], al 和 out dx, al 也是如此。
所以 8088 可以访问地址范围 0-10FFFFh。而一个80386可以访问和寻址范围0-10000FFFFh。
但是,实际上,您不会谈论“地址范围 100000h-10FFFFh”,而是谈论“I/O 地址范围”。但原理是一样的。
没有in 或out 指令的CPU(ARM、PowerPC、MIPS、TriCore、V850、m68k、680x、6502 ...)只有一个地址范围。
连接到这样一个 CPU 的所有设备(键盘、UART、鼠标......)在这个单一地址范围内都有一个地址。
在这种情况下,使用等于 x86 指令 mov al, [si] 的指令访问这些设备,而不是使用指令 in al, dx(此类 CPU 上不存在该指令)。
【讨论】: