Мы поставили перед собой задачу получить 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