试图将一个字节加载到 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
。数据大小和传输大小需要匹配。
我正在尝试将第三个值 (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
。数据大小和传输大小需要匹配。