Привет, сетяне! Подскажите пожалуйста, почему в этой проге строка выводится, а значение, которое в numer ,нет? Код (Text): SECTION .text global _start: _start: mov eax, 5 mov [numer], eax mov eax, 4 mov ebx, 1 mov ecx, numer mov edx, 2 int 0x80 mov eax, 4 mov ebx, 1 mov ecx, hello mov edx, 6 int 0x80 mov eax,1 mov ebx, 0 int 0x80 SECTION .data hello db "Hello", 0xa numer db 0 Заранее спасибо! P.S. для моредаторов: извините, если не в ту тему написал...
почему не выводиться? выводиться. запусти программку с перенаправлением и увидишь: Код (Text): ./a.out | hexdump -C ps. так между делом стоит повнимательнее следить за размерами. затолкать в numer eax -- в один байт четыре -- это есть не совсем правильно. да и отправляя numer во write, стоит размер правильно указывать
Код (Text): VEhES@debian:~/CODING/ASSEMBLER/code$ nasm -felf function.asm;ld function.o -o function VEhES@debian:~/CODING/ASSEMBLER/code$ ./function Hello VEhES@debian:~/CODING/ASSEMBLER/code$ Вот что я имел в виду Я не понимаю, почему прога выводит Hello, но не выводит 5? Код (Text): VEhES@debian:~/CODING/ASSEMBLER/code$ nasm -felf function.asm;ld function.o -o function VEhES@debian:~/CODING/ASSEMBLER/code$ ./function 5Hello VEhES@debian:~/CODING/ASSEMBLER/code$
я понял что ты имел в виду. но совету моему запустить с перенаправлением, чтобы изучить вывод детально ты не последовал, как я понял. ещё раз, выполняешь команду: Код (Text): $ ./function | hexdump -C и медитируешь. просветление придёт.
если тебе надо 5 вывести то надо Код (Text): _start: mov eax,0x35 mov numer,eax mov eax, 4 mov ebx, 1 lea ecx, numer mov edx, 2 int 0x80
Т.е. все числа, которые я вывожу на экран, я должен представлять в ASCII символах? Т.е. добавлять у ним всегда 30h? Это же так неудобно... неужели просто нельзя вывести значение, которое в регистре или в переменной?
VEhES Не знаю, как под UNIX, но под DOS можно воспользоваться 11h-й функцией 10h-го прерывания и заменить ASCII-таблицу на свою, в которой первые десять символов будут 0-9.
да хочешь удобства переходи на Це или напиши свою функцию для ядра, которая буде выводить число из регистра на экран