-4

我想添加两个数字,但有一个问题我找不到,请帮助我!

谢谢

.model small
.stack
.data

        data1 dw 6
        data2 dw 8
.code

main:

mov ax,@data
mov ds,ax
mov ax, data1
add ax, data2
add dx,ax
sub dx,'0'
mov ah,09h
int 21h
mov ah,1
int 21h

end main
4

2 回答 2

2

dx未初始化并在 处包含垃圾add dx, ax

于 2013-01-11T09:43:59.680 回答
0

mov ah, 9
int 21h

这将打印一个由 . 指向的以 $ 结尾的字符串dx。我们目前还不太清楚其中的内容dx,但它极不可能指向代表您的号码的以 $ 结尾的字符串!

您在添加这两个数字方面做得很好。ax应保持 14 或 0Eh。al这是在... 中打印两位数字的“技巧”

; split the number in al
; "tens" place in ah, "ones" place in al
aam
; convert both digits from a "number"
; to ascii characters representing the numbers
add ax, 3030h
; we want to print leftmost character first
; so swap 'em
xchg al, ah
; print al
int 29h
; swap 'em back
xchg al, ah
; print al
int 29h
; please exit cleanly!

那是“从记忆中”变得非常不稳定,所以可能是错误的。我怀疑这是否是您“应该”这样做的方式int 29h被记录为“供内部使用”,但我上次做dos时曾经工作过。祝你好运!

于 2013-01-11T16:57:45.810 回答