Stepashka20
@Stepashka20
(☞゚ヮ゚)☞

Почему не выводит число на экран?

Вывести строку не проблема,туториалов много,а вот с числом происходит странное.Вместо числа выводит кракозябры
SECTION .DATA
	x:         dq 0x12345678

SECTION .TEXT
	GLOBAL _start 

_start:
	mov eax,4            ; 'write' system call = 4
	mov ebx,1            ; file descriptor 1 = STDOUT
	mov ecx,x             ;write car
	mov edx,32          ; length of string to write
	int 80h                  ; call the kernel
	
	; Terminate program
	mov eax,1            ; 'exit' system call
	mov ebx,0            ; exit with error code 0
	int 80h              ; call the kernel
  • Вопрос задан
  • 122 просмотра
Пригласить эксперта
Ответы на вопрос 2
@galaxy
Само собой. Число-то в бинарном виде лежит, а чтобы распечатать циферки, нужны ASCII-коды:
db 0x31, 0x32, 0x33 ... 0x38

Пишите свой itoa() на ассембелере - код, который переведет число в строку. Алгоритм элементарный
Ответ написан
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
А что вы ожидаете получить от функции, выводящей строку, если передали ей адрес, по которому находится не строка.
Естественно, что функция интерпретирует данные по переданному адресу как строку, то есть последовательность кодов символов.
Хотите вывести число - сначала преобразуйте его в строку.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы