Написать подпрограмму деления целых однобайтных чисел - Assembler
Формулировка задачи:
Уважаемые буду очень признателен за помощь с решением задачи в nasm
Написать подпрограмму деления целых однобайтных чисел. Параметры передавать через регистры. Результат вывести на экран
я уже всю голову сломал, я знаю что я нуб в ассемблере поэтому и прошу помощи все кто хочет постебаться на новичком и не чем не помочь будьте добры проходите мимо
SECTION .text mov ax, 125 mov bl, 5 mov [summand1],ax mov [summand2],bl div bl mov [amount],al mov dl, [amount] add dl,'0' mov al,0x02 int 0x21 mov al,0x4c int 0x21 SECTION .data summand1 db 1 summand2 db 1 amount db 1
помогите кто нибудь
неужели не кто не может помочь?
Решение задачи: «Написать подпрограмму деления целых однобайтных чисел»
textual
Листинг программы
SECTION .text mov ax, 125 mov bl, 5 mov [summand1],ax mov [summand2],bl xor dx,dx div bl mov [amount],al ; выводит результат в диапазоне 0-99 aam add ax,3030h xchg ah,al int 29h xchg ah,al int 29h mov ah,0x4c int 0x21 SECTION .data summand1 dw 1 summand2 db 1 amount db 1
Объяснение кода листинга программы
- Подпрограмма начинается с установки начального значения регистра AX равным 125, а также значения регистра BL равным 5.
- Затем происходит перенос значения регистра AX в ячейку памяти по адресу [summand1], а значение регистра BL переносится в ячейку памяти по адресу [summand2].
- Далее происходит инициализация регистра DX нулевым значением.
- Затем выполняется операция деления значения регистра AX на значение регистра BL, при этом результат сохраняется в регистре AX, а остаток от деления сохраняется в регистре DX.
- Значение регистра AX, содержащее результат деления, переносится в ячейку памяти по адресу [amount].
- Затем выполняется команда AAM, которая преобразует десятичное значение в шестнадцатеричное, при этом результат вычисления равен 03030h.
- Затем выполняется операция XCHG, которая меняет местами значения регистров AX и AL.
- После этого выполняется команда INT 29H, которая выводит результат на экран.
- Затем выполняется операция XCHG, которая меняет местами значения регистров AX и AL.
- После этого выполняется команда INT 29H, которая выводит результат на экран.
- Затем происходит установка значения регистра AH равным 4C.
- После этого выполняется команда INT 021H, которая выводит результат на экран.
- Подпрограмма завершается.