3 + 3을 추가하면 답변이 정확하지만 7 + 7을 추가하면 작동하지 않습니다. 그리고 나는 75 + 75와 같은 두 개의 숫자를 더하고 싶습니다. 그 답은 150이나 900 + 100이어야합니다. 대답은 1000이어야합니다.두 개의 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'를위한 많은 예제가 있습니다. –