Найти сумму цифр данного четырехзначного числа. Где ошибка? - 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 сумма цифр

Объяснение кода листинга программы

  1. mov ax,9999 - Переменная ax принимает значение 9999.
  2. xor cx,cx — Переменная cx инициализируется как 0.
  3. mov bx,10 - Переменная bx принимает значение 10.
  4. cwd - Команда деления по модулю 10 (с остатком) с регистра bx на регистр dx.
  5. div bx - Деление регистра bx на 10 с остатком.
  6. add cx,dx - Сумма цифр числа в регистре dx добавляется к переменной cx.
  7. or ax,ax - Переменная ax устанавливается равной 0.
  8. jne @b - Если переменная cx не равна 0, то происходит переход к метке @b.
  9. В переменной cx хранится сумма цифр числа.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.6 из 5
Похожие ответы