Я работаю над программой на языке ассемблера, которая будет вычислять сумму цифр целого числа, которое будет введено клиентом. Номер всегда будет 10 цифр. Я очень новичок в собрании, и я понятия не имею, как действовать дальше. Вот то, что я написал до сих пор:Как добавить цифры числа в сборку x86
SECTION .data
msg1: db "Enter a number 10 digits long: "
len1: equ $-msg1
msg2: db "The sum of the digits is "
len2: db $-msg2
SECTION .bss
num: resb 10
sum: resb 3
SECTION .text
global _start
_start: nop
start:
;prompt for number
mov eax, 4
mov ebx, 1
mov ecx, msg1
mov edx, len1
int 080h
;input number
mov eax, 3
mov ebx, 0
mov ecx, num
mov edx, 10
int 080h
init:
mov esi, num
mov edi, sum
add_digits:
;loop 10 times
;retrieve next digit
;add '0' to convert to number
;add to sum
;subtract 0 to sum
;print results
mov eax, 4
mov ebx, 1
mov ecx, msg2
mov edx, len2
int 080h
mov eax, 4
mov ebx, 1
mov ecx, sum
mov edx, 3
int 080h
;exit
exit:
mov eax, 1
mov ebx, 0
int 080h
Мне просто нужно знать, как реализовать псевдокод в «add_digits». Кроме того, дайте мне знать, если я написал код из-за плохого/неправильного. Очень ценится.
Домашнее задание, случайно? –
У меня есть вариант этого как домашнее задание, но это основное ядро того, что мне нужно сделать, и у меня есть идея, как его написать. –
Самая левая цифра числа - это остаток от деления числа на 10. Фактор, с другой стороны, дает вам номер с самой правой цифрой, стертой. Повторяйте до тех пор, пока он не опустится до нуля. –