计算装配中的有效地址

时间:2014-02-22 22:20:15

标签: assembly x86-16

我需要计算每一行的有效地址。我知道你将DS向左移动一次并添加偏移但是当你更改默认数据段时我很困惑?对于第一行,我只是添加ES + DI而不是使用DS吗?

使用这些:Register Numbers 我知道的一个例子是正确的

IN    AL, 70H

OUT  DX,  AX

OUT    21H ,  AL

1 个答案:

答案 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

您为寄存器

提供了以下值

enter image description here

哪个字节是低字节并且是高字节(x86使用little-endian字节顺序)并不明显。假设DX的值为0022H且AX为2355H则

OUT  DX,  AX   ; Write 2355H (AX) to port 0022H (16-bit data bus)

http://en.wikipedia.org/wiki/Intel_8086