Переведите двоичное число 11011011 в восьмеричную и шестнадцатеричную систему счисления - Assembler
Формулировка задачи:
Нужно написать программы для 16 разрядного ассемблера:
Переведите двоичное число 11011011 в восьмеричную и шестнадцатеричную систему счисления.
Решение задачи: «Переведите двоичное число 11011011 в восьмеричную и шестнадцатеричную систему счисления»
textual
Листинг программы
.model small .stack 100h .data CrLf db 0Dh, 0Ah, '$' .code main proc mov ax, @data mov ds, ax mov ax, 11011011b call ShowBin call NewLine call ShowOct mov ax, 4C00h int 21h main endp NewLine proc push ax push bx push cx push dx push di mov ah, 09h lea dx, [CrLf] int 21h pop di pop dx pop cx pop bx pop ax ret NewLine endp ;выводит на экран в двоичной системе счисления содержимое регистра AX ; входные данные: ; ax - число для отображения ShowBin proc push ax push bx push cx mov bx, ax ; из-за распределения регистров ; при выводе на экран с помощью int 29h, ; выводимое число будет находится в bx mov cx, 16 ; переменная цикла равна количеству бит в слове @@For: mov ax, '0' ; в регистрах al=код символа '0', ah=00h shl bx, 1 ; выделение бита adc al, ah ; сложение кода символа '0' со значением выделенного бита int 29h loop @@For pop cx pop bx pop ax ret ShowBin endp ;выводит на экран в 8 системе счисления содержимое регистра AX ; входные данные: ; ax - число для отображения ShowOct proc push ax push cx push dx ; Начинаем перевод числа AX в строку mov cl, ((16-1)/3)*3 ; 16-битный регистр, будем выводить по 3 бита (0..7) mov dx, ax ; Сохраняем число в DX @@Repeat: mov ax, dx ; Восстанавливаем число в AX shr ax, cl ; Сдвигаем на CL бит вправо (делим на 8*i) and al, 07h ; Получаем в AL цифру 0..7 (остаток от деления на 8) add al, '0' ; Получаем в AL символ цифры int 29h ; Выводим символ в AL на экран sub cl, 3 ; Уменьшаем CL на 3 для следующей цифры jnc @@Repeat ; Если знаковый CL >= 0, то повторяем pop dx pop cx pop ax ret ShowOct endp end main
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д