Поделить трехзначное число - Assembler

Узнай цену своей работы

Формулировка задачи:

Нужно поделить трехзначное число и потом вывести сумму его цифр
%TITLE "‚*и Є®¬¬Ґ*в*аЁ© Їа®Ја*¬¬л"
INCLUDE IO.ASM
 
MODEL   small
 
ST1 SEGMENT             
    DB 128 DUP(?)
ST1 ENDS
 
DATA SEGMENT
    
N   db  140
sum db  0
des db  10  
DATA ENDS

CODE SEGMENT            
ASSUME SS:ST1,DS:DATA,CS:CODE   
push    ds
    sub ax, ax
    push    ax
    mov ax, data    
    mov ds, ax
    
mov al,N
sub ah,ah
    div des
    add sum,ah
    sub ah,ah
    div des
    add sum,ah
    add sum,al
outint  ax

Exit:
    finish
ENDS
 
END
В чем ошибка? Выводит 1025

Решение задачи: «Поделить трехзначное число»

textual
Листинг программы
  mov   al,N         ; AL  = 140 (8Ch)
  sub   ah,ah        ; AH  = 00  (лучше используй: XOR AH,AH) 
  div   des          ; AL  = 14  (0Eh)
* add   sum,ah       ; sum = 00
* sub   ah,ah        ; AH  = 00
* div   des          ; AL  = 01  (AH = 04)
* add   sum,ah       ; sum = 04
* add   sum,al       ; sum = 05
  
  outint* ax         ; AX = 0401h, или 1025d  (твой результат)

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

Код выполняет деление трехзначного числа, используя регистры AL и AH. Переменная N содержит трехзначное число, которое делится на 14. Результат деления сохраняется в переменной Sum. Вот список действий:

  1. mov al, N — AL = 140 (8Ch)
  2. sub ah, ah — AH = 00
  3. div des — AL = 14 (0Eh)
  4. add sum, ah — Sum = 00
  5. sub ah, ah — AH = 00
  6. div des — AL = 01 (AH = 04)
  7. add sum, ah — Sum = 04
  8. add sum, al — Sum = 05
  9. outint ax — AX = 0401h, или 1025d (результат)

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


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

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

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