-4

2 つの数字を追加したいのですが、見つけられないという問題があります。助けてください!

ありがとう

.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が、あなたの番号を表す $ で終わる文字列を指している可能性はほとんどありません!

2 つの数値を加算するまでは問題なく実行できました。ax14 または 0Eh を保持する必要があります。これは、2桁を印刷するための「トリック」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 に答える