begin process at 2012 05 25 03:53:33
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Assembleur

 > 

Divers

 > 

Débutant(e)

 > 

ERREUR DE SEGMENTATION en asm


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

ERREUR DE SEGMENTATION en asm

lundi 26 avril 2010 à 00:52:15 | ERREUR DE SEGMENTATION en asm

tahsgh

salam;
jai le code suivant
-----------------------------------------
global main

SECTION . text

main :
jmp start
data: dw 60, 55, 45, 50, 40, 35, 25, 30, 10, 0
data2: dw 328, 329, 898, 8923, 8293, 2345, 10, 877, 355, 98
dw 888, 533, 2000, 1020, 30, 200, 761, 167, 90, 5
swapflag: db 0
swap: push ax ; save old value of ax
mov ax, [bx+si] ; load first number in ax
xchg ax, [bx+si+2] ; exchange with second number
mov [bx+si], ax ; store second number in first
pop ax ; restore old value of ax
ret ; go back to where we came from
bubblesort: push ax ; save old value of ax
push cx ; save old value of cx
push si ; save old value of si
dec cx ; last element not compared
shl cx, 1 ; turn into byte count
mainloop: mov si, 0 ; initialize array index to zero
mov byte [swapflag], 0 ; reset swap flag to no swaps
innerloop: mov ax, [bx+si] ; load number in ax
cmp ax, [bx+si+2] ; compare with next number
jbe noswap ; no swap if already in order
call swap ; swaps two elements
mov byte [swapflag], 1 ; flag that a swap has been done
noswap: add si, 2 ; advance si to next index
cmp si, cx ; are we at last index
jne innerloop ; if not compare next two
cmp byte [swapflag], 1 ; check if a swap has been done
je mainloop ; if yes make another pass
pop si ; restore old value of si
pop cx ; restore old value of cx
pop ax ; restore old value of ax
ret ; go back to where we came from
start: mov bx, [data] ; send start of array in bx
mov cx, 10 ; send count of elements in cx
call bubblesort ; call our subroutine
mov bx, [data2] ; send start of array in bx
mov cx, 20 ; send count of elements in cx
call bubblesort ; call our subroutine again
mov ax, 0x4c00 ; terminate program
int 0x21

ret
--------------------------------------------
je le compile comme suit :
nasm -f elf -g nomprog.asm
gcc -ggdb -o nomprog nomprog.o

et tout va bien;
maintenant je veut l'exécuter , je lance : ./nomprog
il m'affiche : Erreur de segmentation
pourquoi? quels est le problème? aidez moi s'il vous plait .
lundi 26 avril 2010 à 19:41:57 | Re : ERREUR DE SEGMENTATION en asm

ghuysmans99

Membre Club
Essaie ça avec une VM sous MS-DOS. Linux n'a jamais supporté ça.
---
VB.NET is good ... VB6 is better
mardi 27 avril 2010 à 07:51:25 | Re : ERREUR DE SEGMENTATION en asm

patatalo

Membre Club Administrateur CodeS-SourceS
salut,

c'est exactement ce que te dis ghuysmans99, tu tentes de faire tourner un programme MSDOS sous Linux. C'est comme de tenter de faire tourner un programme Linux sous Windows ou un programme Mac sur un intel.

Si tu veux utiliser gdb, tu dois convertir ton programe en 32 bits et pour Linux, ce qui ne sera pas très compliqué étant donné que tu n'as qu'un appel au systeme: programme terminate que tu traduiras par un syscall Linux sys_exit.

l'autre solution consisterait à utiliser debug pour msdos ou n'importe quel autre debugger 16 bits.

@++
mardi 27 avril 2010 à 12:22:52 | Re : ERREUR DE SEGMENTATION en asm

patatalo

Membre Club Administrateur CodeS-SourceS
re,


A l'époque, j'utilisais turbo debugger de Borland mais je n'ai pas trouvé de lien pour le télécharger.

@++
mardi 27 avril 2010 à 20:00:25 | Re : ERREUR DE SEGMENTATION en asm

ghuysmans99

Membre Club
Tu peux aussi utiliser sous un vrai DOS (ce n'est pas la console Windows) Insight qui est gratuit et open-source pour débugger tes programmes.
---
VB.NET is good ... VB6 is better
mercredi 28 avril 2010 à 11:41:02 | Re : ERREUR DE SEGMENTATION en asm

tahsgh

Salam,
Merci de vos réponces,
Mais je suis obligé de travailler sous Linux(ubuntu 9.10),
est ce qu'il y a une méthode pour adapter ce code sous linux,
Merci
mercredi 28 avril 2010 à 18:34:55 | Re : ERREUR DE SEGMENTATION en asm

ghuysmans99

Membre Club
VirtualBox c'est fait pour
---
VB.NET is good ... VB6 is better
mercredi 28 avril 2010 à 20:31:14 | Re : ERREUR DE SEGMENTATION en asm

patatalo

Membre Club Administrateur CodeS-SourceS
re,


autre solution:
http://www.docmirror.net/fr/linux/howto/os/DOSEMU-HOWTO/DOSEMU-HOWTO-1.html

@++


Cette discussion est classée dans : mov, ax, cx, bx, of


Répondre à ce message

Sujets en rapport avec ce message

boot system [ par henri12 ] salut je viens de trouver ce code qui permer de lancer un fichier sur une disquettr a: exemple systemje voudrais qu il me lance le jeu pong sur a:  j problem en asm [ par tahsgh ] salam, j'ai le code suivant: ; bubble sort and swap subroutines saving and restoring registers ;[org 0x0100] jmp start data: dw verification d'un code [ par marooh ] Bonjour, j'ai écrit un code assembleur qui consiste à créer un tableau de 20 cases , de les remplir,de trouver le maximum et de faire la moyenne.mais Executer 2 action en meme temps [ par HirOinEvOl ] Bonjour, je souhaite exécuter les deux codes suivant mais simultanément pour qu'ils puissent tournés en parrallèles. Je n'ai trouvé aucun moyen de l débutant besoin d'aide sur programme ... [ par babar34fr ] Bonjour a tous je vient vers vous afin d'avoir un peu d'aide , Débutant en asm , j'ai télécharger le logicie w32dasm ( en parlant de celui-ci , est-ce [ASM] Que la vie était simple sous MS-DOS 16 bits (scan mémoire physique) [ par dogloop ] J'ouvre ce topic pour essayer de mieux comprendre quelles sont les différentes façons pour accéder à toute la RAM (et aussi peut être la ROM) de mon P Affichage décroissant et alphabétique de 2 listes(Nom_Prénom et Note) [ par m_didi9 ] [code=autre]Data SEGMENT Mess1 DB 10,13, 'Entrez la liste des Noms :' DB 10, 13, '$' Mess2 DB 'Entrez la liste des Notes :' DB 10, 13, '$' Mess3 interruption [ par aboulkhir ] salut j essaye de gerer le clavier en interruption en asselmbleur voila mon programme je travaille sous debug en invite de commande de windowsclimo Affichage [ par AMENO ] Cher amis aidez moi, c'est une partie de mon examen de noel. et je suis bloquerenfin il 'sagit d'un programme que l'on doit entrer jsuqu a 32 caracter afficher un pixel [ par oclone ] hello, j'aimerais faire une librairie graphique en c++ mais pour cela il faut deja que je puisse afficher un point, j'ai pensé que la meilleur solutio


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,137 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales