我想添加两个号码,但有一个问题我无法找到它请帮助我!
由于
.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
答案 0 :(得分:2)
dx
未初始化且包含add dx, ax
的垃圾邮件。
答案 1 :(得分:0)
mov ah, 9
int 21h
mov ah, 9
int 21h
这将打印指向的$ -terminated字符串。我们现在还不太了解
dx
中的内容,但它很可能指向代表您的号码的$ -terminated字符串!
你在添加这两个号码时做得很好。 dx
应该保持14或0Eh。这是在ax
中打印两位数的“技巧”......
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!
这是“从记忆中”变得非常不稳定,所以可能是错的。我怀疑这是不是“你应该”这样做的方式; 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!
被记录为“供内部使用”,但我最后一次使用它时曾经工作过。祝你好运!