Преобразовать целое без знака в его восьмеричное символьное представление - Assembler
Формулировка задачи:
Написать и протестировать функцию, которая преобразует целое без знака в его
восьмеричное символьное представление.
Желательно использовать model tiny
Решение задачи: «Преобразовать целое без знака в его восьмеричное символьное представление - Assembler»
textual
Листинг программы
.model tiny .code org 100h main proc jmp start ;Данные CrLf db 0Dh, 0Ah, '$' X dw 1234o start: ;программа mov ax, [X] call ShowOct int 20h main endp ;выводит на экран в 8 системе счисления содержимое регистра AX ; входные данные: ; ax - число для отображения ShowOct proc push ax push bx push cx push dx mov dx, ax mov bx, 0 mov cl, 3 @@DivBy8: inc bx mov ax, dx and ax, 7 push ax shr dx, cl jnz @@DivBy8 mov ah, 02h @@Show: pop dx add dl, '0' int 21h dec bx jnz @@Show pop dx pop cx pop bx pop ax ret ShowOct endp end main
Объяснение кода листинга программы
- .model tiny - это директива компилятора, которая указывает, какой моделью памяти будет пользоваться программа.
- org 100h - это директива, которая определяет точку входа в программу.
- jmp start - это команда, которая перенаправляет выполнение программы на метку
start
. - CrLf db 0Dh, 0Ah, '$' - это описание строки, которая будет выводиться на экран при завершении работы программы.
- X dw 1234o - это описание переменной, которая содержит число для отображения.
- mov ax, [X] - это команда, которая загружает в регистр AX значение переменной X.
- call ShowOct - это команда, которая вызывает процедуру ShowOct.
- int 20h - это команда, которая завершает работу программы.
- ShowOct proc - это определение процедуры ShowOct.
- push ax - это команда, которая сохраняет текущее значение регистра AX в стеке.
- push bx - это команда, которая сохраняет текущее значение регистра BX в стеке.
- push cx - это команда, которая сохраняет текущее значение регистра CX в стеке.
- push dx - это команда, которая сохраняет текущее значение регистра DX в стеке.
- mov dx, ax - это команда, которая копирует значение регистра AX в регистр DX.
- mov bx, 0 - это команда, которая инициализирует переменную BX значением 0.
- mov cl, 3 - это команда, которая инициализирует переменную CX значением 3.
- @@DivBy8: - это метка, которая обозначает начало цикла деления числа на 8.
- inc bx - это команда, которая увеличивает значение переменной BX на 1.
- mov ax, dx - это команда, которая копирует значение регистра DX в регистр AX.
- and ax, 7 - это команда, которая применяет побитовую операцию И к значению регистра AX и числу 7.
- push ax - это команда, которая сохраняет текущее значение регистра AX в стеке.
- shr dx, cl - это команда, которая применяет побитовую операцию Сдвиг вправо к значению регистра DX и переменной CX.
- jnz @@DivBy8 - это команда, которая перенаправляет выполнение программы на метку
@@DivBy8
, если результат последней операции не равен 0. - mov ah, 02h - это команда, которая устанавливает значение регистра AH равным 02, что соответствует коду функции вывода символов на экран.
- @@Show: - это метка, которая обозначает начало цикла вывода символов.
- pop dx - это команда, которая загружает из стека значение регистра DX.
- add dl, '0' - это команда, которая добавляет символ в регистр DL и затем конвертирует его в верхний регистр.
- int 21h - это команда, которая вызывает функцию вывода символов на экран.
- dec bx - это команда, которая уменьшает значение переменной BX на 1.
- jnz @@Show - это команда, которая перенаправляет выполнение программы на метку
@@Show
, если значение переменной BX не равно 0. - pop dx - это команда, которая загружает из стека значение регистра DX.
- pop cx - это команда, которая загружает из стека значение регистра CX.
- pop bx - это команда, которая загружает из стека значение регистра BX.
- pop ax - это команда, которая загружает из стека значение регистра AX.
- ret - это команда, которая завершает выполнение процедуры и возвращает управление в основную программу.
- ShowOct endp - это определение конца процедуры ShowOct.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д