assembly 8086中的IN和OUT指令

f2uvfpb9  于 2022-12-23  发布在  其他
关注(0)|答案(1)|浏览(312)

在8086中,inout指令使用存储在AL或AX寄存器中的PIC端口地址,该地址进一步用于out指令。
如果我们在in指令中不给予任何端口号,会发生什么情况?
out指令是否仍然有效?
如果是,那么如何选择PIC端口以及选择哪个端口?

chhqkbe1

chhqkbe11#

实际上,端口地址存储在dx中,而不是ax中。您要写入的数据将存储在axal中。
inout的工作方式与大多数其他操作不同,因为

out dx,al
in al,dx

即使寄存器大小不匹配,也完全有效。这类似于mov al, byte ptr [bx],因为操作数使用寄存器作为访问内存的方式,而不是将其直接存储到寄存器本身。
我从来没有使用过不指定端口的汇编程序,但是由于必须使用常量值或DX,如果只提供了一个操作数,那么想象一下有一个汇编程序使用DX并不会太夸张(有点像一些6502汇编器让你输入LSR A来在A寄存器上执行右移位,而其他汇编器只使用LSR就可以了。)
选择哪个端口取决于你自己,你需要阅读相关外设的文档,以确定需要哪个端口号。记住,如果你的端口号大于255,你需要使用DX。否则,你可以将端口号作为常量。

相关问题