Другие языки программирования и технологии
Ассемблер. из двоичной в одиннадцатиричную.
Нам в универе дали задачу написать прогу для перевода чисел из одной системы счисления в другую, мне достался вариант из 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

Настолько непонятно, что вы даже не смогли понять, на каком ассемблере ведётся преподавание?
.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

Если все совсем плохо - реши эту задачку на си или паскале, поставь бреакпоинт и открой встроенным дизассемблером. Там увидишь нужный тебе код, попробуй в нем разобраться.
Помочь объяснить получше, чем препод - пожалуй мог бы, не знаю, правда, сколько в итоге это времени займёт. Но польза точно будет. Помочь сделать - увольте :)
Похожие вопросы
- Информатика, ассемблер, перевод двоичной в восьмую степень
- Как перевести число из двоичной системы счисления в восьмеричную в Ассемблер (tasm) Программа должна быть простой!
- Как перевести число из восьмеричной системы счисления в двоичную в Ассемблер (tasm) Программа должна быть простой!
- Ассемблер, двоичный код, и машинный код это одно и тоже?
- Что может ассемблер?
- Почему многие программисты ненавидят ассемблер?Ведь у него куча плюсов!Он позволяет максимально задействовать
- Помогите с переводом в двоичную систему исчисления
- Вопрос по изучению языка Ассемблера под MS DOS. (Нужны советы по программному обеспечению/программированию)
- С помощью команд fpu вычислить площадь круга, исходя из введѐнного диаметра. Ассемблер...
- Ассемблер сегодня и завтра.