MASM,地址9ffffh

时间:2015-02-24 20:32:26

标签: debugging assembly masm

我有一些奇怪的事情。 这是代码示例。

CODESEGMENT segment
    assume CS: CODESEGMENT, DS: CODESEGMENT, SS: NOTHING, ES:NOTHING
    org 100h
    BEGIN:      mov AX, 9fffh
                mov DS, AX
                mov CX, DS:000FH
                ;-----------------------------------------------------
                ;End of program, exit to DOS
                ;-----------------------------------------------------
                mov AX, 4c00h
                int 21h
CODESEGMENT ends
end BEGIN

和此代码

CODESEGMENT segment
    assume CS: CODESEGMENT, DS: CODESEGMENT, SS: NOTHING, ES:NOTHING
    org 100h
    BEGIN:      mov AX, 9000h
                mov DS, AX
                mov BX, [0FFFFH]
                ;-----------------------------------------------------
                ;End of program, exit to DOS
                ;-----------------------------------------------------
                mov AX, 4c00h
                int 21h
CODESEGMENT ends
end BEGIN

我认为当我从DS获得偏移时,例如,

DS = 9000h
offset = FFFFh

DS = 9000h * 10h = 90000h
                   +
                   0FFFFh
                   =
                   9FFFFh

以这种方式思考我写了这两个代码。 我认为这些代码做了同样的事情 - 从地址9FFFFh读取CX两个字节,但我看了masm调试器(afd)并且明白我错了。

第一个代码:DS = 9fffh, offset = 000fh

第二个代码DS = 9000h, offset = ffffh

我使用masm是因为我是学生,我已经习惯了。 请一些人告诉我我的错误在哪里。

0 个答案:

没有答案