【发布时间】:2019-10-24 23:16:41
【问题描述】:
我们的任务是从用户那里获取 5 个输入
输入的数字应该从 9 中减去,然后我们应该合计所有的总差
例如输入 5,2,4,7,1 9-5= 4 , 9-2=7, 9-4=5, 9-7= 2, 9-1= 8 那么我们需要将结果相加,所以 4+7+5+2+8= 26
并显示结果
我已经进行了计算并将它们放在一个循环中,但总和只显示最后一次计算的值而不是总和
.model small
.stack 100h
.data
num1 db
num2 db 9
result db ?
sum db
msg1 db 10, 13,"Enter a number: $", 10, 13
msg2 db 10, 13,"Difference is: $",10, 13
msg3 db 10, 13,"Sum is: $",10, 13
.code
main proc
mov ax, @data
mov ds, ax
mov cx,5
process:
mov dx, offset msg1
mov ah,9 ; used to print the string/msg with
int 21h ;this
mov ah, 1 ;READ a Character from Console,
;Echo it on screen and save the
;value entered in AL register
int 21h
sub al, 30h ;keep the value enter in bcd form
mov num1, al ;move num1 to al
;al is used for input
;sub al, 30h
mov al, num2 ;move num2 to al
sub al, num1 ;
mov result, al ;move whats in al to result
mov bl,al
add sum,bl
;add al,sum
mov ah,0 ;clears whats in ah
aaa ;used to convert the result to bcd
;and first digit is stored in ah
;second digit stored in al
add ah, 30h ;convert whats in ah to ascii by adding 30h
add al, 30h ;convert whats in al to ascii by adding 30h
mov bx, ax ;saving whats in ah and al in bx register
mov dx, offset msg2
mov ah,9 ; used to print the string/msg
int 21h
;the following is used to print whats in the bh register
;dl is used for output
;2 or 2h means to write/print whats in dl
;so the value to be printed is moved to dl
mov ah,2
mov dl, bh
int 21h
;the following is used to print whats in bl
mov ah,2
mov dl, bl
int 21h
loop process
mov dx, offset msg3
mov ah,9 ; used to print the string/msg
int 21h
mov ah,2
mov dl, bh
int 21h
;the following is used to print whats in bl
mov ah,2
mov dl, bl
int 21h
mov ah, 4ch ;4ch means to return to OS i.e. the end
;of program
int 21h
main endp ;ends the code
end main ;ends main
我的预期是 26。相反,我得到 8
【问题讨论】: