.model small
.code
N186606359:
mov ax, @data
mov ds, ax
mov es, ax
jmp Start
Error:
mov ah, 9
lea dx, ErrMsg
int 21h
Start:
lea dx, Prompt
mov ah, 9
int 21h
lea dx, OctBuff
inc ah
int 21h
; Начало преобразования
lea si, OctBuff + 2
lea di, BinBuff
xor ch, ch
mov cl, [si - 1]
jcxz Error
cmp byte ptr [si], "-"
jne DoLoop
movsb
dec cx
jz Error
DoLoop:
mov dl, 3
lodsb
sub al, "0"
cmp al, 8
jae Error
shl al, 5
mov dh, al
BitLoop:
rol dh, 1
mov al, 1
and al, dh
or al, "0"
stosb
dec dl
jnz BitLoop
loop DoLoop
mov byte ptr [di], "$"
; Преобразование закончено
lea dx, BinMsg
mov ah, 9
int 21h
lea dx, BinBuff
int 21h
xor ah, ah
int 16h
mov ah, 4Ch
int 21h
.data
OctBuff db 27, ?,27 dup (?)
BinBuff db 80 dup (?)
Prompt db "Введите восьмеричное число: ", 10, 36
BinMsg db 10, "Двоичное число: ", 10, 36
ErrMsg db 10, "Ошибка! $"
WaitWsg db 10, 10, "Для продолжения нажмите любую клавишу... $"
.stack 100h
end N186606359
