Поместить статический адрес в регистр с помощью GNU AS (GAS) .intel_syntax? - PullRequest
0 голосов
/ 12 мая 2018
.intel_syntax noprefix
.global _start
.text

_start:
mov     eax, 4
mov     ebx, 1
mov     ecx, msg
mov     edx, 15
int     0x80

mov     eax, 1
mov     ebx, 14 
int     0x80

.data
msg:
.ascii "Hello, World!\n"

Я пытаюсь скомпилировать вышеуказанный код через GNU AS, используя следующие команды:

asad@Arcturus:~/Desktop/ZJNK$ as --32 -msyntax=intel code.S -o code.o
asad@Arcturus:~/Desktop/ZJNK$ ld -m elf_i386 code.o -o a.out
asad@Arcturus:~/Desktop/ZJNK$ ./a.out 
asad@Arcturus:~/Desktop/ZJNK$ 

Но я не могу получить никакого вывода на терминале.Однако код выхода по-прежнему читабелен:

asad@Arcturus:~/Desktop/ZJNK$ echo $?
14

Я использую 64-разрядную версию Linux и могу выполнить приведенный выше код через nasm после необходимых изменений.

Что могло пойти не так

1 Ответ

0 голосов
/ 12 мая 2018

Чтобы загрузить адрес сообщения, используйте

mov ecx, offset msg
...