Другие языки программирования и технологии

Как перевести число из двоичной системы счисления в восьмеричную в Ассемблер (tasm) Программа должна быть простой!

title N186606306
ideal
model small
p286

codeseg
    startupcode
    mov ah, 9
    mov dx, offset Prompt
    int 21h
    mov [EndMarker - 1], 0
    mov [Count], 1
InpLoop:
    mov ah, 8
    int 21h
    cmp al, 13
    je Print
    mov dl, al
    sub al, 30h
    cmp al, 2
    jae InpLoop
    lea si, [EndMarker - 1]
    mov cl, [Count]
    mov ah, 2
    int 21h
    rcr dl, 1
ShiftLoop:
    rcl [byte si], 1
    mov al, [si]
    shl al, 5
    dec si
    dec cl
    jnz ShiftLoop
    jnc InpLoop
    inc [Count]
    mov [byte si], 1
    jmp InpLoop

Print:
    mov ah, 9
    mov dx, offset Result
    int 21h
    xor cx, cx
    mov cl, [Count]
    mov si, offset EndMarker
    sub si, cx
    mov dx, si
PrintLoop:
    lodsb
    and al, 7
    or al, 30h
    int 29h
    loop PrintLoop

    mov dx, offset WaitPrompt
    mov ah, 9
    int 21h
    mov ax, 0C08h
    int 21h
    mov ax, 4C00h
    int 21h
    exitcode

dataseg
  Prompt db 'Введите двоичное число: ', 13, 10, 36
  Result db 13, 10, 'Восьмеричное число: ', 13, 10, 36
  WaitPrompt db 13, 10, 10, 'Для завершения работы нажмите любую клавишу... $'
  Count db ?
  OctBuff db 78 dup (?)
  EndMarker db '$'

stack 100h
    end

Владимир Команич
Владимир Команич
51 590
Лучший ответ

Похожие вопросы