试图将一个字节加载到 DX,但加载了错误的值

Trying to load a byte into DX, but the wrong value is getting loaded

我正在尝试将第三个值 (03h) 加载到 DX 中,但加载的值是错误的。我不明白这是怎么回事。

DATA SEGMENT
STRING1 DB 01h,02h,03h,04h

DATA ENDS 

CODE SEGMENT
ASSUME CS:CODE, DS:DATA
START:
MOV AX,DATA
MOV DS, AX
LEA BX, STRING1
INC BX
MOV DX, [BX+1]

HLT
CODE ENDS
END  START

输出: 结果 DX 的值是 0403

output screenshot from debug.exe

I am trying to load the third value (03h) into DX,

是的,但是您要求它从地址 STRING+2 和 STRING+3 加载 16 位值,因此它加载 03 和 04,作为小端字节序的 16 位值:0403。 DX 是一个 16 位寄存器,使用它你要求进行 16 位传输。

如果您只需要一个字节,则使用 DL,例如,而不是 DX

否则,你可以在数据段中使用DW。数据大小和传输大小需要匹配。