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

Ассемблер. из двоичной в одиннадцатиричную.

Нам в универе дали задачу написать прогу для перевода чисел из одной системы счисления в другую, мне достался вариант из 2 в 11 систему. Но с ассемблером у нас вся группа испытывает проблемы, ибо препод непонятно объясняет.. . Не могли бы помочь?
> препод непонятно объясняет
Настолько непонятно, что вы даже не смогли понять, на каком ассемблере ведётся преподавание?

.x64
option casemap :none

includelib msvcrt.lib

printf proto :dword, :vararg
_getch proto
_putch proto :dword
_exit proto :dword

InputBin proto
WriteElev proto :qword

.data
Prompt db "Введите число в двоичной системе: ", 13, 10, 0
Result db "Число в одиннадцатеричной системе: ", 13, 10, "%s", 0

.code
N166705380:
    invoke printf, addr Prompt
    invoke InputBin
    invoke WriteElev, rax
    invoke _getch
    invoke _exit, 0
   
InputBin proc uses rbx rdi
    xor rbx, rbx
    mov r12d, ebx
InpBinRep:
    invoke _getch
    cmp al, 8
    jne @F
    mov ecx, r12d
    jecxz InpBinRep
    dec r12d
   
    invoke _putch, 8
    invoke _putch, 32
    invoke _putch, 8
    shr rbx, 1
    jmp InpBinRep
@@:
    cmp al, 13
    jne @F
    mov ecx, r12d
    jecxz InpBinRep
    jmp InpBinQuit
@@:
    mov edi, eax
    cmp al, 30h
    jb InpBinRep
    cmp al, 31h
    ja InpBinRep
    bt rbx, 63
    jc InpBinRep
    rcr al, 1
    rcl rbx, 1
    inc r12d
    invoke _putch, edi
    jmp InpBinRep
InpBinQuit:
    invoke _putch, 10
    mov rax, rbx
    ret
InputBin endp

WriteElev proc Number :qword
    local Buff[24] :byte
    std
    lea rdi, Buff+23
    xor al, al
    stosb
    mov rbx, 11
    mov rax, rcx
WrElevRep:
    xor rdx, rdx
    div rbx
    or dl, 30h
    cmp dl, 39h
    jbe @F
    add dl, 7
@@:
    xchg rdx, rax
    stosb
    xchg rax, rdx
    test rax, rax
    jnz WrElevRep
    cld
    inc rdi
    invoke printf, addr Result, rdi
    ret
WriteElev endp

    end N166705380

AS
Abdizhahan Sarsenbi
51 590
Лучший ответ
Если все совсем плохо - реши эту задачку на си или паскале, поставь бреакпоинт и открой встроенным дизассемблером. Там увидишь нужный тебе код, попробуй в нем разобраться.
Ашот Бабаян
Ашот Бабаян
75 061
Помочь объяснить получше, чем препод - пожалуй мог бы, не знаю, правда, сколько в итоге это времени займёт. Но польза точно будет. Помочь сделать - увольте :)
Никита Зотов
Никита Зотов
14 686