Langage assemblage

Tags: #<Tag:0x00007f50a5344a48>

Bonjour,

j’ai fait de la programmation autrefois, là il s’agit d’un petit essai en assembleur pour me familiariser avec ce langage d’assemblage ce qui me permettrait d’en inclure dans du C, mais ça ne fonctionne pas. Je serais très désireux de bénéficier d’un éclairage pour comprendre ce qui ne va pas.

Je suis sous Debian Gnu/Linux 7.11 (wheezy).
Le processeur est un AMD Athlon™ II x2 250.
CPU 3 Ghz. Cache size:1024 KB. Adress sizes : 48 bits. Cl flush size : 64. CPU famille : 16.

J’ai d’abord installé nasm. Puis j’ai créé un petit fichier avec gedit, nommé : essai.asm :

1. 		.data 
2. msg :	.asciz "Hello, world !\n" 
3. len = . - msg 
4. 		.bss 
5.		.text 
6.		.global _start 
7. 
8. _start : 
9.		movl $msg,%ecx 
10.		movl $len,%edx 
11.		movl $1,%ebx 
12.		movl $4,eax 
13.		int  $0x80      # appel system 
14. 
15. exit : 
16. 		movl $0,%ebx 
17.		movl $1,%eax 
18.		int  $0x80

Le problème commence quand je passe à l’assemblage. J’applique la commande suivante :
nasm -f elf essai.asm J’obtiens : unable to open input file essai.asm.

Si vous remarquez où est le problème je serais très heureux que vous m’en fassiez part.
Avec mes remerciements anticipés et mes cordiales salutations.

J-C L

http://asm.sourceforge.net/intro/hello.html

Peut-être faut-il faire nasm -f elf ./essai.asm à la place…
Sinon, vérifie que tu es dans le bon dossier et regarde si tu vois bien ton fichier (ls -l ./essai.asm) et si ton utilisateur peut bien le lire (cat ./essai.asm).

Et paf ! Lis la doc !

J’avais lu les infos sur les différents sites internet mais il me manquait la petite lumière
qui permet d’atteindre le but. Avec persévérance c’est chose faite.
Merci pour les infos et surtout pour le " Et paf ! Lis la doc !"

Si le problème est résolu, merci de nous préciser comment et de marquer le sujet comme résolu en cliquant sur la coche dans le message contenant la solution, y compris s’il s’agit de ton propre message.

dans les 2 syntaxes d’ assemblage:

root@alpha30:/home/jb1# nasm -f elf64 es1.asm
root@alpha30:/home/jb1# ld -s -o es1 es1.o 
root@alpha30:/home/jb1# ./es1
Hello, world!
root@alpha30:/home/jb1# 

J’avais 2 fichiers .asm . Le premier étant essai et le second hello2, j’ai travaillé avec hello2 pour écrire “Hello World !” . La syntaxe serait la même avec mon premier fichier: essai. Voilà ce qui a bien fonctionné:
/Documents/Linux$ nasm -f elf64 hello2.asm -o hello2.o
/Documents/Linux$ ld -o hello2 hello2.o
hello2: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, not stripped
/Documents/Linux$ ./hello2
Hello world!
Ci-dessous mon fichier hello2.asm:

bits 64
global _start

section .data
Hello db “Hello world!”, 10

section .text
_start:
mov rax, 1 ; sys_write
mov rdi, 1 ; stdout
mov rsi, Hello
mov rdx, 13
syscall

mov rax, 60 ; sys_exit
xor rdi, rdi ; exit(0)
syscall

Mes excuses pour l’envoi précédent le message est parti inopinément alors que je tapais le texte.

J’avais 2 fichiers .asm . Le premier étant essai et le second hello2, j’ai travaillé avec hello2 pour écrire “Hello World !” . La syntaxe serait la même avec mon premier fichier: essai. Voilà ce qui a bien fonctionné:
/Documents/Linux$ nasm -f elf64 hello2.asm -o hello2.o
/Documents/Linux$ ld -o hello2 hello2.o
hello2: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, not stripped
/Documents/Linux$ ./hello2
Hello world!
Ci-dessous mon fichier hello2.asm:

bits 64
global _start

section .data
Hello db “Hello world!”, 10

section .text
_start:
mov rax, 1 ; sys_write
mov rdi, 1 ; stdout
mov rsi, Hello
mov rdx, 13
syscall

mov rax, 60 ; sys_exit
xor rdi, rdi ; exit(0)
syscall

Mes excuses pour l’envoi précédent le message est parti inopinément alors que je tapais le texte.

Ne pas tenir compte de ce qui c’est rajouté et qui n’a rien à voir avec mon message: mov rax, 60 ; sys_exit … jusqu’à syscall.

C’est la première fois que j’utilise cette messagerie; je dois bénéficier de circonstances atténuantes.
Merci.

bonsoir,
prochaine étape, debug de son exécutable,
puis manipulation de fichiers,
j’arréte de répondre, le sujet est clos
bonne soirée