我需要计算每一行的有效地址。我知道你将DS向左移动一次并添加偏移但是当你更改默认数据段时我很困惑?对于第一行,我只是添加ES + DI而不是使用DS吗?
使用这些:Register Numbers 我知道的一个例子是正确的
IN AL, 70H
OUT DX, AX
OUT 21H , AL
答案 0 :(得分:1)
IN / OUT不使用段寄存器,I / O地址(端口号)在立即操作数中指定
IN AL, 70H ; Read one byte from I/O port 70H
OUT 21H, AL ; Write one byte to I/O port 21H
或DX寄存器
OUT DX, AX ; Write two bytes from AX to I/O port specified in DX
您为寄存器
提供了以下值
哪个字节是低字节并且是高字节(x86使用little-endian字节顺序)并不明显。假设DX的值为0022H且AX为2355H则
OUT DX, AX ; Write 2355H (AX) to port 0022H (16-bit data bus)