Поделить трехзначное число - Assembler
Формулировка задачи:
Нужно поделить трехзначное число и потом вывести сумму его цифр
В чем ошибка? Выводит 1025
%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
Решение задачи: «Поделить трехзначное число»
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. Вот список действий:
- mov al, N — AL = 140 (8Ch)
- sub ah, ah — AH = 00
- 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 (результат)
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д