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

Assembleur

 > 

Processeurs

 > 

X86

 > 

Assembleur


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

Assembleur

mardi 10 mai 2011 à 16:42:07 | Assembleur

tesma

Bonjour, y'aurait-il un code pour le jeu du pendu en assembleur?? je dois réaliser un projet de ce type, mais je sais pas par ou commencer.
mercredi 11 mai 2011 à 00:37:13 | Re : Assembleur

patatalo

Membre Club Administrateur CodeS-SourceS
salut,

Facile, tu commences par le sol, ensuite tu fais l'échafaud et pour finir le bonhomme, mais tout projet commence par le papier ( surtout pour un pendu ;-).

Il faut que tu saches quel processeur et assembleur tu utiliseras. Connaitre un minimum le langage machine (doc intel, amd, instructions, mnémoniques, registres, ...)

Ensuite, tu devras déterminer avec quel système d'exploitation, ce qui te donneras le format de l'executable et l'API à utiliser pour acceder aux périphériques.

Puis viendras l'analyse du programme, les algorithmes et enfin, la programmation.

Sur que si tu trouves un code tout fait, meme en C, il y auras moins de boulot. Tu peux aussi savoir à peu près où tu vas et cherher des exemples d'utilisation d'API qui n'ont pas forcement de rapport avec un jeu du pendu.

Tu peux aussi regarder les "hello world" et autres codes pour mieux voir certaines choses.

@++
jeudi 12 mai 2011 à 12:13:14 | Re : Assembleur

tesma

Salut, bien sur, j'ai déjà fait un mini projet dessus, mais pour le pendu, c'est mal embarqué, j'utilise emu 8086 pour ça.
mardi 31 mai 2011 à 10:06:23 | Re : Assembleur

tesma

Salut,
J'ai essayé de bidouiller un code pour le pendu en ASM X86, j'utiise le logiciel emu8086, mais le code me produit des erreurs, pourriez-vous m'aider à debugger ce dernier:
Code:


org 0x7C00
stack equ 0x7B80 ; stack (grows downwards, of course)
lives equ 0x7B80 ; place to store number of lives
target_word equ 0x7B82 ; place to store target word
max_target_len equ 60 ; maximum length of target word
guessed equ 0x7BC0 ; bitmap - one bit per ASCII char 0..127
; set if guessed

cli

; set the stack pointer
xor ax,ax
mov ss,ax
mov ds,ax
mov es,ax
mov sp,stack

cld

say_hello:
; print welcome message
mov bh,2
.hello_msg:
mov bl,5
.equals_loop:
mov al,'='
call putc
dec bl
jnz .equals_loop
dec bh
jz .end
mov si,.message
call puts
jmp .hello_msg
.end:
mov si,newline
call puts
jmp read_guess

.message: db " Hangman! ",0
newline: db 13,10,0
backspace: db 8,32,8,0

read_guess:
mov si,.message
call puts
mov di,target_word
; read keyboard presses until enter is pressed
.loop:
xor ah,ah
int 0x16
; now al=character
cmp al,8 ; backspace?
je .backspace
cmp al,13 ; enter?
je .enter
cmp di,(target_word+max_target_len)
je .loop
and al,0x7F
mov [di],al
inc di
call putc
jmp .loop
.backspace:
cmp di,target_word
je .loop
dec di
mov si,backspace
call puts
jmp .loop
.enter:
mov [di],byte 0 ; null-terminate string
call clear_line ; clear line to hide target
mov [lives],word 10 ; reset lives counter
; clear guessed bitmap
mov di,guessed
mov cx,16
xor al,al
rep stosb
mov [guessed+4],byte 1 ; space always revealed
jmp guess

.message: db "Target: ",0
.message_end:

guess:
mov si,.word_str
call puts
xor bp,bp
mov ax,bp
mov cx,bp
.print_word_loop:
; has this character been revealed?
mov al,[target_word+bp]
test al,al
jz .end
call split8
mov bl,[guessed+bx]
test bl,dl
jz .not_revealed
.is_revealed:
call putc
inc bp
jmp .print_word_loop
.not_revealed:
inc cl
mov al,'-'
call putc
inc bp
jmp .print_word_loop
.end:
mov si,.lives_str
call puts
mov ax,[lives]
call putint
test cl,cl ; neither putint nor puts clobbers cx
jz you_win
mov si,.guess_str
call puts

; read a guess character from the keyboard
xor ah,ah
int 0x16
and al,0x7F
; print it :)
call putc

; already guessed?
call split8
mov cl,[guessed+bx]
test cl,dl
jnz .already_guessed
or cl,dl
mov [guessed+bx],cl

; deduct a life if this char is not in the word
mov si,target_word
mov dl,al
.loop:
lodsb
test al,al
jz .fail
cmp al,dl
je .end2
jmp .loop
.fail:
; dec life counter
dec word [lives]
jz you_die
.already_guessed:
.end2:
call up_line
call up_line
jmp guess

.word_str: db "Word: ",0
.lives_str: db 13,10,"Lives: ",0
.guess_str: db 13,10,"Guess: ",0

you_die:
mov si,die_str
call puts
jmp start_again
die_str: db 13,10,"You die.",13,10,0

you_win:
mov si,win_str
call puts
start_again:
; wait for any key
xor ah,ah
int 0x16
; clear 5 lines
mov cl,5
.loop:
call up_line
loop .loop
; start again
jmp say_hello

win_str: db 13,10,13,10,"You survive.",13,10,0

split8:
; IN: al=value
; OUT: bx=value/8 dx=1<<(value%8)
; all other registers unchanged
pusha
mov bp,sp
xor bx,bx
mov bl,al
shr bx,3
mov [bp+8],bx ; set bx in pusha structure
mov cl,al
and cl,7
xor dx,dx
inc dx
shl dx,cl
mov [bp+10],dx ; set dx in pusha structure
popa
ret

up_line:
; move up to the previous line
; and clear it!
pusha
mov ah,3
xor bh,bh
int 0x10
; dh=row, dl=col
test dh,dh
jz .nodec
dec dh
.nodec:
xor dl,dl
mov ah,2
xor bh,bh
pusha
int 0x10
; print 80 spaces
mov cx,80
mov al,32
.loop:
call putc
loop .loop
popa ; stacktastic!
int 0x10
popa
ret

clear_line:
; print 80 backspaces, since printing backspaces
; doesn't un-line-wrap
mov bl,80
.loop:
mov si,backspace
call puts
dec bl
jnz .loop
ret

puts:
; si=string pointer
lodsb
test al,al
jz .end
call putc
jmp puts
.end:
ret


putc:
; al=character

pusha
xor bx,bx
mov ah,14
int 0x10
popa
ret

putint:
; ax=int
pusha
mov bp,sp
push word 0
mov cx,10
mov si,sp
.loop:
xor dx,dx ; simplify!
div cx
add dl,'0'
dec si
mov [si],dl
test ax,ax
jnz .loop
mov sp,si
call puts
mov sp,bp
popa
ret

times 510-($-$$) nop
dw 0xAA55


il me signale des duplications de variables partout :(!!

samedi 5 novembre 2011 à 16:42:54 | Re : Assembleur

BLUEBIBUBBLE

J'avais fait quelque chose ici, mais j'ai perdu le code source...


Cette discussion est classée dans : assembleur


Répondre à ce message

Sujets en rapport avec ce message

Assembleur ... [ par pi0up51 ] Voilà je voulais savoir qch ..Je fais un bac S spécialité Science de l'ingenieur et on fais de la programmation assembleur, sur un vieux microcontrole Deux Questions (Pas compliqué) [ par Dalamar ] Je commence en Assembleur et j'ai deux questions:1-Je travaille avec dev-c++ et je voudrais savoir comment on inclus de l'assembleur2-J'ai trouvé u Quel assembleur choisir ? [ par trinitacs ] J'aimerai savoir quel est le meilleur assembleur qui existe ou si il en faut mixer. Je début difficielment l'asm avec NASM. Faut-il choisir MASM, TASM langage c /assembleur [ par almai467 ] salut ..!mon projet de fin d'annee est un logiciel (compteur internet) qui compte la duree de la connexion internet et le cout avec le langage c je c' Programmation assembleur d'un pilote de souris serie [ par Scaq ] COUCOU, C SCAQ...J'ai du mal à recevoir les données de ma souris serie compilateur assembleur [ par morganitos ] Salut a tous ce qui liront ce message.Je débute en programmation assembleur et voici ma question : où pourrai-je trouver un assembleur, un linker ...( Petit problème pour le nul en assembleur que je suis Merci d'avance [ par rgc50 ] Trouver parmis les 5 nombres 67, 79, 15, e3, 72 le nombre le pls élevé, on le stockera le résultat en 0100 (en assembleur 68000 (MOTOROLA)). Pb assembleur très facile (pas pour moi) Merci d'avance [ par rgc50 ] Trouver parmis les 5 nombres 67, 79, 15, e3, 72 le nombre le pls élevé, on le stockera le résultat en 0100 (en assembleur 68000 (MOTOROLA)). Commander un PCF 8574 en assembleur 68000 [ par Apophis74 ] Je cherche quelqu'un qui pourrait m'adier à faire communiquer ma carte Coldfire 5307 avec une carte d'ES PCF8574 via le bus I2C en assembleur 68000. M Utilistaionde l'I2C en assembleur 68000 [ par Apophis74 ] Je cherche une source qui pourrait m'aider à utiliser le bus I2C de ma carte Coldfire 5307 en asssembleur 68000. Help me!Apophis74


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,811 sec (4)

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