begin process at 2012 05 25 12:04:54
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Assembleur

 > 

Divers

 > 

Débutant(e)

 > 

problem en asm


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

problem en asm

samedi 24 avril 2010 à 00:01:14 | problem en asm

tahsgh

salam,
j'ai le code suivant:
; bubble sort and swap subroutines saving and restoring registers
;[org 0x0100]
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



je suis sous linux, je le compile avec "nasm", il me genere ce résultat :

gcc -o asm2 asm2.o
/usr/lib/gcc/i486-linux-gnu/4.4.1/../../../../lib/crt1.o: In function `_start':
/build/buildd/eglibc-2.10.1/csu/../sysdeps/i386/elf/start.S:115: undefined reference to `main'
asm2.o: In function `start':
asm2.asm:(.text+0x9d): relocation truncated to fit: R_386_16 against `.text'
asm2.asm:(.text+0xaa): relocation truncated to fit: R_386_16 against `.text'
collect2: ld returned 1 exit status



j'ai pas compris quel est le probléme, voulez vous m'expliquer par détail comment proceder,
Merci



samedi 24 avril 2010 à 00:25:45 | Re : problem en asm

ghuysmans99

Membre Club
Utilise NASM sous une machine virtuelle DOS pour compiler et essayer tes programmes. Ca fait des siècles qu'on ne développe plus en 16 bits sur PC.
---
VB.NET is good ... VB6 is better
samedi 24 avril 2010 à 00:27:33 | Re : problem en asm

patatalo

Membre Club Administrateur CodeS-SourceS
salut,

C'est un problème de format. gcc s'attends à une source 32 bits mais ton programme est en mode réel.

Tu devrais generer un executable msdos car linux n'est pas prévu pour avoir une compatibilité 16 bits or le format elf ne peut être que 32 bits.

@++
samedi 24 avril 2010 à 00:48:29 | Re : problem en asm

tahsgh

salam; Merci de votre réponse
comment compiler asm sous le msdos?
et comment le déboguer?
j'ai essayer avec nasm, mais c'est une commande inconnue pour lui,
comment faire alors?
samedi 24 avril 2010 à 03:10:15 | Re : problem en asm

patatalo

Membre Club Administrateur CodeS-SourceS
re,


je n'avais pas fais attention mais tu stipule [ORG 0x100], ce qui implique un format d'executable .com.

"nasm -f bin -o monprog.com src.asm" te permettra de sortir un .com directement.

precise [bits 16] apres [org], cela assurera un binaire 16 bits.

@++


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


Répondre à ce message

Sujets en rapport avec ce message

ERREUR DE SEGMENTATION en asm [ par tahsgh ] salam; jai le code suivant ----------------------------------------- global main SECTION . text main : 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 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 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 Probleme avec NASM et ALINK [ par epineurien ] Bonjour ! Voilà ma question : Je commence à utiliser NASM mais j'ai quelques problemes avec le linker ; Alink. Avec ce code (issu de la doc. de NASM prog tri en EMU8086 [ par joneskech ] bsr,j ecrit ce programme pour le tri en EMU8086 ;mais contient des erreures pouvez_vouz m aider?#make_exe#data segment tab db 1 dup (1,9,2,6,3,5)data nasm [ par henri12 ] salut je viens de compiler ce mbr boot avec nasmnasm -fbin aboot.asm -o binexe.exele programme c est bien compiler mais en lançant d une cle usb l ima Probleme avec la pile et call [ par Mick7 ] Salut,Voila j'ai un probleme d'adresse de pile quand je fais appele a call affichage:  Main:     mov ax, 324     mov bx, 10  Boucle:     xor dx, dx    Problème de restitution d'une chaîne. [ par Sawteeth ] Bonsoir. Je viens de débuter l'assembleur et j'ai tenté de faire un petit programme qui lit une chaîne au clavier et l'affiche à l'écran. Le problème


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

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 : 0,250 sec (3)

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