Преобразование двоичного числа в символьном виде - Assembler/TASM
Формулировка задачи:
Нужна помощь в программе: есть строка на входе, введенная с клавиатуры, содержащая в себе двоичное число, эту строку нужно преобразовать в двоичное число(уже не строка), понятное для ассемблера для дальнейших действий, вот код, где происходит преобразование, в дебаггере видно как изменяется строка в число, но не могу вывести это число. Поэтому не могу проверить, верно ли все преобразовано, чтобы в дальнейшем выполнять действия. Прошу помощи, может я где накосячил сам, буду благодарен.
.MODEL SMALL data segment string db 20 dup ('$') data ends code segment assume cs:code,ds:data start: mov ax, data mov ds, ax mov ah,0ah lea dx,string int 21h mov string+1,0ah mov ah,9 lea dx,string+1 mov ah,09h int 21h mov ah, 10h int 16h xor ax,ax mov cx,4 mov si,0 xor bx,bx ;lea dx,string @m1: mov bl, byte ptr string[si+1] sub bl,30h add ax,bx shl ax,1 inc si dec cx cmp cx,0 mov ah,09h int 21h jne @m1 cmp bx,'$' mov ax, 4c00h int 21h code ends end start
Решение задачи: «Преобразование двоичного числа в символьном виде»
textual
Листинг программы
; входные данные: ; ax - число для отображения ShowBin proc
Объяснение кода листинга программы
- Задаём старшие биты регистра AX как 1000 (13), младшие биты не трогаем (в данном случае это не имеет значения, так как дальше всё равно используется регистр DX)
- Выводим на экран первый символ, соответствующий младшему биту регистра DX (символы от 0 до 9 и A-F)
- Сбрасываем младший бит регистра DX
- Выводим на экран второй символ, соответствующий младшему биту регистра DX
- Сбрасываем младший бит регистра DX
- Продолжаем аналогичные шаги для всех младших битов регистра DX
- Возвращаем управление в вызывающую программу ShowBin endp
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д