2012-11-29 37 views
1

使用nasm32,x86彙編語言。我想從數據段中讀取一些數字。如何使用x86程序集從數據段中讀取數據?

.model small 
.stack 
.data 
    DATA1 DB 53H,"$" 
    DATA2 DB 17H,"$" 
.code 
.startup 
    mov dx, @data 
    mov dx, offset DATA1 
    add dl,30h 
    mov ah, 02h 
    int 21h 

    mov dl, dh 
    add dl, 30h 
    mov ah, 02h 
    int 12h 
    .exit 
end 

此代碼返回剛剛

我應該DATA1 53H(= 83(十進制))值將返回。 (以ascii字符)

但奇怪的數字是回報。發生了什麼?我不明白這個結果。

我該如何解決這個問題?

回答

1

你沒有設置ds。

mov dx, @data 

您是不是要找這樣的:

push @data 
pop ds 
+0

但錯誤返回。 「不允許立即操作數」 –

+0

int21h,AH = 02h'將字符輸出爲dl,您將dx初始化爲DATA1的地址,而不是該地址上的數據。第三,53h是'S',你爲什麼期望它打印'20'? –

+0

謝謝你的回答!那麼,如何讀取DATA1的地址數據呢? 'MOV DX,偏移量DATA1'表示DX < - DATA1的地址?哦,53h是'S',但是,我的意思是數字(十進制,83)。我想打印DATA1的數字,如'83'。所以,我增加了30h來製作ascii代碼。 –

相關問題