Как сделать чтобы сумма чисел была больше 10? - Assembler
Формулировка задачи:
data segment
data ends
code segment
start:
assume cs:code, ds:data
mov ax, data
mov ds, ax
mov ah, 01h
int 21h
mov bl,al
mov ah, 01h
int 21h
mov bh,al
mov al, bl
add al, bl
sub al, bh
add al, 1
; - вывод символа результата вычисления
mov ah,02
int 21h
mov dl, dh
mov dl, '0'
int 21h
;ожидание нажатия любой клавиши
mov ah, 08h
int 21h
or al, al
mov ah, 08h ;то считать расширенный символ
int 21h ;очистив тем самым буфер клавиатуры
;конец программы
mov ax, 4C00h
int 21h
code ends
end startРешение задачи: «Как сделать чтобы сумма чисел была больше 10?»
textual
Листинг программы
data segment a db ? b db ? y db ? Message db 'y=', '$' data ends assume cs:code, ds:data code segment start: mov ax, data mov ds, ax mov ah, 01 int 21h mov a, al sub a, '0' mov ah, 01 int 21h mov b, al sub b, '0' mov al, a add al, a sub al, b add al, 1 mov y, al ;вывод сообщения mov ah, 09h lea dx, Message int 21h ;вывод результата ; - преобразование числа в символ mov al, y add al, '0' ; - вывод символа результата вычисления mov ah, 02h mov dl, al int 21h ;конец программы mov ax, 4C00h int 21h code ends end start
Объяснение кода листинга программы
- Переменные a, b и y используются для хранения чисел и промежуточных результатов.
- Код начинается с загрузки сегмента данных в регистр AX с помощью команды mov ax, data.
- Затем регистр DS устанавливается в сегмент данных с помощью команды mov ds, ax.
- Код выполняет ввод двух чисел с помощью команды mov ah, 01, int 21h. Результат сохраняется в регистрах AX и BX.
- Затем числа приводятся к строкам с помощью команд mov a, al и mov b, al, sub b, '0'.
- Результат вычисления суммы чисел сохраняется в регистре AX с помощью команд mov ah, a и add al, a.
- Затем число BX вычитается из числа AX с помощью команды sub al, b.
- К результату вычисления прибавляется единица с помощью команды add al, 1.
- Результат сохраняется в переменной y с помощью команды mov y, al.
- Выводится сообщение с помощью команды mov ah, 09h, lea dx, Message, int 21h.
- Результат вычисления преобразуется в строку с помощью команд mov al, y и add al, '0'.
- Строка выводится на экран с помощью команды mov ah, 02h, mov dl, al, int 21h.
- Программа завершается с помощью команды mov ax, 4C00h, int 21h.