Найти сумму цифр данного четырехзначного числа. Где ошибка? - Assembler
Формулировка задачи:
stk SEGMENT db 256 DUP (0) stk ENDS data segment mess db ' $' data ends text SEGMENT ASSUME CS:text, DS:stk, SS:data begin: mov ax, 1234 xor dx, dx mov bl, 10 m: div bl add dl, ah inc dh xor ah, ah cmp ax, 0 jne m add dl,1 mov al,dl mov bx,0A30h xor ah,ah div bh add bl,ah xor ah,ah div bh mov dx,3030h add dx,ax mov ah,2 int 21h mov dl,dh int 21h mov dl,bl int 21h xor ah,ah int 16h mov ah,4Ch int 21h text ENDS END begin
Решение задачи: «Найти сумму цифр данного четырехзначного числа. Где ошибка?»
textual
Листинг программы
mov ax,9999 xor cx,cx mov bx,10 @@: cwd div bx add cx,dx or ax,ax jne @b; в cx сумма цифр
Объяснение кода листинга программы
- mov ax,9999 - Переменная
ax
принимает значение 9999. - xor cx,cx — Переменная
cx
инициализируется как 0. - mov bx,10 - Переменная
bx
принимает значение 10. - cwd - Команда деления по модулю 10 (с остатком) с регистра bx на регистр dx.
- div bx - Деление регистра bx на 10 с остатком.
- add cx,dx - Сумма цифр числа в регистре dx добавляется к переменной
cx
. - or ax,ax - Переменная
ax
устанавливается равной 0. - jne @b - Если переменная
cx
не равна 0, то происходит переход к метке@b
. - В переменной
cx
хранится сумма цифр числа.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д