Перевод чисел из десятичной системы в двоичную
Если я вместо shr использую shl, вообще только нули выдает
Помогите пожалуйста =)
Код:
call read_int
mov [input], eax
mov ebx, eax
cmp eax, 0
jl Error
mov eax, 0 ;
mov ecx, 8 ;
Start: shr ebx, 1 ; Вот
adc eax, 0 ; эта
call print_int ; часть
mov eax, 0 ;
loop Start ;
call print_nl
call print_nl
jmp exit
Error: call print_nl
mov eax, error_msg
call print_string
call print_nl
call print_nl
jmp exit
mov [input], eax
mov ebx, eax
cmp eax, 0
jl Error
mov eax, 0 ;
mov ecx, 8 ;
Start: shr ebx, 1 ; Вот
adc eax, 0 ; эта
call print_int ; часть
mov eax, 0 ;
loop Start ;
call print_nl
call print_nl
jmp exit
Error: call print_nl
mov eax, error_msg
call print_string
call print_nl
call print_nl
jmp exit
У меня всё выводит верно.
Код:
section .bss
pislo resd 1
section .data
msgpattern db "%d",0
msginput db "Введите число (dec):",0
msgoutput db "Число (bin):",0
section .text
extern putchar
extern scanf
extern printf
global main
main:
push msginput
call printf
add esp, 4
push pislo
push msgpattern
call scanf
add esp,8
push msgoutput
call printf
add esp, 4
mov ecx,32
mov ebx,[pislo]
print:
xor eax,eax
shl ebx, 1
adc eax, 0x30
push ecx
push ebx
push eax
call putchar
add esp,4
pop ebx
pop ecx
loop print
push 0xA
call putchar
add esp, 4
ret 0
pislo resd 1
section .data
msgpattern db "%d",0
msginput db "Введите число (dec):",0
msgoutput db "Число (bin):",0
section .text
extern putchar
extern scanf
extern printf
global main
main:
push msginput
call printf
add esp, 4
push pislo
push msgpattern
call scanf
add esp,8
push msgoutput
call printf
add esp, 4
mov ecx,32
mov ebx,[pislo]
print:
xor eax,eax
shl ebx, 1
adc eax, 0x30
push ecx
push ebx
push eax
call putchar
add esp,4
pop ebx
pop ecx
loop print
push 0xA
call putchar
add esp, 4
ret 0
Цитата: CassandraDied
У меня всё выводит верно.
Не пойму тогда. Я делал это через VirtualBox, в Убунту. Может быть из-за этого проблема..
Все равно спасибо большое!
Цитата: RooceeD
[quote=CassandraDied;82724]У меня всё выводит верно.
Не пойму тогда. Я делал это через VirtualBox, в Убунту. Может быть из-за этого проблема..
Все равно спасибо большое![/quote]
Может быть, стоит посмотреть в отладчике?
Попробуй shr заменить на rcr. Не уверен, что shr устанавливает бит в cf, хотя у меня устанавливал.