Задание в Debug - Assembler
Формулировка задачи:
Всем доброго дня.
тут такое дело мне надо написать для получившихся значений, команды для вывода результатов в двоичном виде
регистр AX = 0177
DX = 000F
кто подскажет как это вообще делается?)
Решение задачи: «Задание в Debug»
textual
Листинг программы
;Значение передается через AX mov bx,ax ;сохраняем ax в bx mov ah,2 ;функция 2 - вывод символа на экран mov cx,16 ;количество выводимых символов, равно разрядности числа lp: mov dl,'0' ;символ ноль rcl bx,1 ;вращаем bx на 1 разряд влево через признак переноса adc dl,0 ;добавляем значение переноса к dl int 21h ;выводим символ loop lp ;выводим все символы
Объяснение кода листинга программы
- Задано значение, которое нужно вывести на экран.
- В первых двух строках кода значение из регистра AX сохраняется в регистре BX.
- Далее, в регистре AH устанавливается значение 2, что соответствует функции вывода символа на экран.
- В регистре CX устанавливается значение 16, что соответствует количеству выводимых символов — разрядности числа.
- Затем, в цикле, происходит вывод числа, начиная с младшего бита.
- В каждой итерации цикла в регистре DL устанавливается значение символа от '0' до '9'.
- При помощи операции RCL (вращение регистра на 1 разряд влево через признак переноса) старший бит числа сдвигается влево, при этом младший бит сдвигается вправо, а в регистре DL сохраняется значение переноса.
- При помощи операции ADC (сложение с переносом) к значению в регистре DL добавляется значение переноса.
- При помощи команды INT 21h значение в регистре DL выводится на экран.
- При помощи команды LOOP начинается новая итерация цикла.
- Цикл продолжается до тех пор, пока все 16 символов не будут выведены на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д