Correction TP 2 d'archi
4 participants
Ninfos Ponots 2010 :: Divers :: News
Page 1 sur 1
Correction TP 2 d'archi
Faites vous plaisir ^^
TITLE codage.asm
.MODEL small ; Could be any model except flat
.STACK ; Stack Segment
.DATA ; Data Segment
msg BYTE "engage le jeu que je le gagne" ,"$"
InvMsg BYTE 40 dup(" ")
Saut BYTE 13,10, "$"
Palin BYTE "La phrase est un palindrome", "$"
NoPalin BYTE "La phrase n'est pas un palindrome", "$"
Initial BYTE "Le message initial est : " ,"$"
Inverse BYTE "Le message inverse est : " ,"$"
SansBl BYTE "Le message I sans blanc est : " ,"$"
SansB2 BYTE "Le message II sans blanc est : " ,"$"
MsgS BYTE 40 Dup (" ")
InvMsgS BYTE 40 Dup (" " )
.CODE ; Code Segment
debut:
mov ax , @data ; mise en place de DS
mov ds , ax ; en passant par AX
AffichageInitial:
lea DX, Initial
mov AH, 09h
int 21h
lea DX, msg
int 21h
lea DX, Saut
int 21h
InverserMsg:
lea BX, msg
mov AL , '$'
cbw ; AX = 0021h
push AX ; empile la fin de chaine
mov AL, [BX] ; premier lettre de msg
; dans AL
Empiler:
push AX
inc BX
mov AL, [BX]
cmp AL, "$" ; si Al != $
jnz Empiler ; alors on va à Empiler
mov bx, offset InvMsg ; sinon on passe en séquence
Depiler:
pop AX
mov [BX], AL
inc BX
cmp AL, "$"
jnz Depiler
AfficherInverser:
lea DX, Inverse ;on affiche le message Inverse
mov AH, 09h
int 21h
lea DX, InvMsg ;on affiche le message InvMsg
int 21h
lea DX, Saut ;on saute une ligne
int 21h
EtudePalindrome:
lea BX, msg
dec BX
lea SI , MsgS
PalinInitial :
inc BX
mov AL, [BX]
cmp AL, ' '
jz PalinInitial
mov [SI], AL
inc SI
cmp AL, '$'
jnz PalinInitial
AfficherMsgS:
lea DX, SansBl
mov AH, 09h
int 21h
lea DX, MsgS
int 21h
lea DX, Saut
int 21h
lea BX, InvMsg
dec BX
lea SI , InvMsgS
PalinInverse :
inc BX
mov AL, [BX]
cmp AL, ' '
jz PalinInverse
mov [SI], AL
inc SI
cmp AL, '$'
jnz PalinInverse
AfficherInvMsgS:
lea DX, SansB2 ;on affiche le message SansB2
mov AH, 09h
int 21h
lea DX, InvMsgS ;on affiche le message InvMsgS
int 21h
lea DX, Saut
int 21h
mov BX, offset MsgS
mov SI, offset InvMsgS
PalinCompare:
mov AL, [BX]
mov AH, [SI]
cmp AL, AH
jnz PasPalindrome ;si ce n'est pas un palindrome
inc BX
inc SI
cmp AL, "$"
jnz PalinCompare ;on continue le test
Palindrome:
lea DX, Palin ;on affiche le message Palin
jmp SuitePalindrome ;on fait un saut vers SuitePalindrome sans s'occuper de PasPalindrome
PasPalindrome:
lea DX, NoPalin ;on affiche le message NoPalin
SuitePalindrome:
mov AH, 09h
int 21h
Quit:
mov ax, 4C00h ; on rend la main au
int 21h ; DOS
END debut
TITLE codage.asm
.MODEL small ; Could be any model except flat
.STACK ; Stack Segment
.DATA ; Data Segment
msg BYTE "engage le jeu que je le gagne" ,"$"
InvMsg BYTE 40 dup(" ")
Saut BYTE 13,10, "$"
Palin BYTE "La phrase est un palindrome", "$"
NoPalin BYTE "La phrase n'est pas un palindrome", "$"
Initial BYTE "Le message initial est : " ,"$"
Inverse BYTE "Le message inverse est : " ,"$"
SansBl BYTE "Le message I sans blanc est : " ,"$"
SansB2 BYTE "Le message II sans blanc est : " ,"$"
MsgS BYTE 40 Dup (" ")
InvMsgS BYTE 40 Dup (" " )
.CODE ; Code Segment
debut:
mov ax , @data ; mise en place de DS
mov ds , ax ; en passant par AX
AffichageInitial:
lea DX, Initial
mov AH, 09h
int 21h
lea DX, msg
int 21h
lea DX, Saut
int 21h
InverserMsg:
lea BX, msg
mov AL , '$'
cbw ; AX = 0021h
push AX ; empile la fin de chaine
mov AL, [BX] ; premier lettre de msg
; dans AL
Empiler:
push AX
inc BX
mov AL, [BX]
cmp AL, "$" ; si Al != $
jnz Empiler ; alors on va à Empiler
mov bx, offset InvMsg ; sinon on passe en séquence
Depiler:
pop AX
mov [BX], AL
inc BX
cmp AL, "$"
jnz Depiler
AfficherInverser:
lea DX, Inverse ;on affiche le message Inverse
mov AH, 09h
int 21h
lea DX, InvMsg ;on affiche le message InvMsg
int 21h
lea DX, Saut ;on saute une ligne
int 21h
EtudePalindrome:
lea BX, msg
dec BX
lea SI , MsgS
PalinInitial :
inc BX
mov AL, [BX]
cmp AL, ' '
jz PalinInitial
mov [SI], AL
inc SI
cmp AL, '$'
jnz PalinInitial
AfficherMsgS:
lea DX, SansBl
mov AH, 09h
int 21h
lea DX, MsgS
int 21h
lea DX, Saut
int 21h
lea BX, InvMsg
dec BX
lea SI , InvMsgS
PalinInverse :
inc BX
mov AL, [BX]
cmp AL, ' '
jz PalinInverse
mov [SI], AL
inc SI
cmp AL, '$'
jnz PalinInverse
AfficherInvMsgS:
lea DX, SansB2 ;on affiche le message SansB2
mov AH, 09h
int 21h
lea DX, InvMsgS ;on affiche le message InvMsgS
int 21h
lea DX, Saut
int 21h
mov BX, offset MsgS
mov SI, offset InvMsgS
PalinCompare:
mov AL, [BX]
mov AH, [SI]
cmp AL, AH
jnz PasPalindrome ;si ce n'est pas un palindrome
inc BX
inc SI
cmp AL, "$"
jnz PalinCompare ;on continue le test
Palindrome:
lea DX, Palin ;on affiche le message Palin
jmp SuitePalindrome ;on fait un saut vers SuitePalindrome sans s'occuper de PasPalindrome
PasPalindrome:
lea DX, NoPalin ;on affiche le message NoPalin
SuitePalindrome:
mov AH, 09h
int 21h
Quit:
mov ax, 4C00h ; on rend la main au
int 21h ; DOS
END debut
Re: Correction TP 2 d'archi
cool, merci zus
benju- Ninfo
- Messages : 11
Date d'inscription : 28/11/2008
Age : 34
Localisation : ba devant le pc xD
Re: Correction TP 2 d'archi
Merci beaucoup <3
Anthony.B- Bizut Ninfo
- Messages : 6
Date d'inscription : 06/12/2008
Age : 34
Localisation : Far Far Away
Re: Correction TP 2 d'archi
Grands merci, zuzu ! Que le Grand Caleçon Ardent te bénisse et t'accompagne !
Pyroproctos- Bizut Ninfo
- Messages : 1
Date d'inscription : 09/12/2008
Age : 33
Localisation : Hrrmmm !
Ninfos Ponots 2010 :: Divers :: News
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|