私は3 + 3を追加するとその答えは正しいですが、私が7 + 7を追加しても機能しません。そして、私は75 + 75のような2つの数字を追加したい、その回答は150または900 + 100でなければならない答えは1000であるべきです。アセンブリ言語で2つの16ビット数値を追加するにはどうすればよいですか?
その手順は何ですか?どのような私のコードが間違っている、私はちょうど新しいアセンブリ言語だ原因すみません..
.model small
.stack 0100h
.data
num1 db ?
num2 db ?
msg1 db 13,10, "Enter 1st Number : $"
msg2 db 13,10, "Enter 2nd Number : $"
msg3 db 13,10, "The answer is : $"
.code
mov ax, @data
mov ds, ax
lea dx,msg1
mov ah,09h
int 21h
start:
mov ah,01h
int 21h
cmp al,0dh
je second
sub al,30h
push ax
mov num1,al
jmp start
second:
lea dx,msg2
mov ah,09h
int 21h
number2:
mov ah,01h
int 21h
cmp al,0dh
je ans
sub al,30h
push ax
mov num2,al
jmp number2
ans:
mov al,num1
add al,num2
MOV AH,9
LEA DX,MSG3
INT 21H
ADD AL,30H
MOV AH,2h
MOV DL,AL
INT 21H
jmp start
end
内の記事の多くは、これが同じですol '問題:複数桁の数字。文字列を数字(atoi)と逆の(itoa)に変換する方法を見てください。そこにはたくさんの質問があるはずです。 –
私は逆にする方法を知っていますが、今問題を解決する方法がわかりません。私のコードを修正するのに役立つものがありますか?ありがとう –
マーガレットはちょうどあなたに解決策を与えました。数字を表す複数桁の文字列を数値に変換しようとしています。これを行うための万能薬の指示はありませんが、文字列を右から左にループし、テキストから整数に変換して乗算する必要があります。 Googleに 'atoi'のためのアセンブリの例がたくさんあります。 –