Upload
abderrahman-hilali
View
215
Download
0
Embed Size (px)
DESCRIPTION
exercice resolus de 6809
Citation preview
compte Rendu Des traveaux pratiques
ABDERRAHMANE HILALI
TITRE PAGE
INTRODUCTION
Ajouter un nombre à une liste 1
Divisibilité Par 8
Division par 5
Division par 8
Le nombres total des nombres
positives
Suppression d’un élément d’une
Liste
Trois 1 successives
Suppression d’un élément d’une
liste
Compter dans un pia et
clignoter 5 fois lors d’une
interruption IRQ
Table des Matières
Ajouter un nombre à une liste
Soit une liste ordonnée, dont la taille est
stockée dans la case mémoire $0000, et
qui commence de la case mémoire $0001
pour ajouter un élément à cette liste, on
va suivre les étapes suivantes :
1. On met un pointeur sur le dernier
élément de la liste
2. Si l’élément pointé est inférieur à la valeur de l’élément qu’on
veut ajouter on doit le décaler vers sa
position + 1
3. On recommence l’étape 2 jusqu’à
ce qu’on trouve un élément qui est
inférieur, et puis on insère.
Programme
LDA $0000 ;charger A avec le contenu de l’adresse $0000LDB $0001 ;charger B avec le contenu de l’adresse $0001LDX #$0002 ;charger X avec $0002LEAX B,X ; charger X par B+XLEAY $FF,X ;charger Y par X - 1ENCORE:CMPA ,Y ; Comparer A avec (,Y) si A est plus petit que (,Y)BLO CONTINUE ; si A et < à (,y) on saut vers ContinueSTA ,X ; sinon on stock A dans la mémoire pointée par XENDCONTINUE: CMPY #$0002 ;comparer Y avec #$0002BNE SUITE ; sils ne sont pas egaux on saute vers SuiteLDB ,Y ; sinon on charge B avec (,Y)
Début
oui
STB ,X ;on stock B dans X STA ,Y ; stock A dans Y ENDSUITE: LDB ,Y ; on charge B par (,y)STB ,X ; on stock B dans (,X)LEAX ,Y ; on charge X par (,Y)LEAY $FF,Y ; on charge Y par Y - 1BRA ENCORE ; on refaire les étapes commençons par Encore.
Organigrame
Encore
Début
A <- ($0000)
B <- ($0001)
X <- #$0002
X <- X + (B)
Y <- (X) - 1
A < (,Y)
(,X) <- (A) (fin)
fin
NonContinue
Suite
Divisibilité Par 8
LDA $0001 ;on charge A par le contenu de $0001 (linformation)CLR $0000 ; remise de $0000 a 0ANDA #$07 ; le et logique entre A et #$07BNE FIN ; il n’est pas divisible par 8 on saute vers la finLDA #$01 ;il est divisible par 8 on change la valeur de $0000 par 1STA $0000 FIN:END
organigramme
Y = $0002
B <- (,Y)
(,X) <- (B)
(,y) <- (A)
B <- (,Y)
(,X) <- (B)
X <- Y
Y <- (Y )- 1
fin
Début
Non
oui
Division par 5
CLRB ;B <- 0LDA $0002 ;charger A avec le contenu de $00002ENCORE:CMPA #$05 ; comparons A avec #$05BLO SUITE ; INCB ; incrémentation de BSUBA #$05 ; A <- A - 5BRA ENCORESUITE:STB $0000 ;sauvgarder B dans $0000 le quotientSTA $0001 ; sauvgarder A dans $0001 le reste END
Organigramme
Encore
A <- ($0001)
$0000 <- #$00
(A) ET #$07
A = 0
A <- #$01
$0000 <-(A)
FIN
Début
A <- ($0002)
A < 5
oui
Suite
Division par 8
CLRB ;B <- 0LDA $0002 ;charger A avec le contenu de $00002ENCORE:CMPA #$08 ; comparons A avec #$08BLO SUITE ; INCB ; incrémentation de BSUBA #$08 ; A <- A - 5BRA ENCORESUITE:STB $0000 ;sauvgarder B dans $0000 le quotientSTA $0001 ; sauvgarder A dans $0001 le reste END
Organigramme
Encore
A <- ($0002)
B <- (B) + 1
A <- A - #$05
$0000 <- (B)
$0001 <- (A)
FIN
Début
A <- ($0002)
A < 8
Encore
oui
Suite
Nombre Totale des nombre positives
CLRA ;A <- 0LDX #$0003 ; X <- #$0003 le début de la listeLDB $0002 ; B <- $0002 la taile de listeBEQ FIN ; si B est Nulle alore FinENCORE:TST ,X+ ;test de (,X+)BLE SUITE ;si (,X+) est inferieur ou égale à zero on saut vers suiteINCA ; sinn on incrément ASUITE:DECB ; decrementation de BBNE ENCORE ;si B est diferent de zero refaire les étapes si dessusFIN:STA $0000 ; stock A dans $0000END
Organigramme
A <- ($0002)
B <- (B) + 1
A <- A - #$08
$0000 <- (B)
$0001 <- (A)
FIN
Début
A <- #$00
X <- #$0003
B <- ($0002)
B = 0
suite
FIN
oui
non
Supprimer un élément
LDB $0003 LDX #$0004ABXSTX $0001LDX #$0004LDY #$0005LDA ,X
ENCORE:CMPA $0000BNE SUITELDA #$00STA ,XLDA ,YCMPA $0000BEQ SUITE STA ,XLEAX $01,XLEAY $01,Y SUITE:CMPY $0001BEQ FINLDB ,YCMPB $0000BNE CONTINUELDB #$00STB ,YLEAY $01,YBRA SUITECONTINUE:LDA ,YSTA ,XLEAX $01,XLEAY $01,YBRA ENCORE
TST ,X+
B = 0
A <- (A) + 1
B <- (B) - 1
$0000 <- (A)
fin
(,X) < 0
Début
B <- ($0003)
X <- #$0004
X <- X + B
STX $0001
X <- #$0004
Y <- #$0005
A <- (,X)
A = 0
A <- #$00
(,X) <- A
A <- (Y)
A = ($0000)
A <- (,X)
X <- (X)+1
Y <- (Y) + 1
FIN:
END
Trois 1 successives
LDB #$03 ; B <- #$03LDA $0001 ;A <- ($0001) la donnéeENCORE: TSTA BNE SUITE ; si A est NulleLDA #$00 ;A <- #$00 STA $0000 ; $0000 <- (A) charger A dans $0000ENDSUITE:LSLA ;left shifting, A<-BCS NUL ;si C = 1LDB #$03 ;charger B par #$03BRA TEST ; sauter vers TESTNUL:DECB ; DEcrementer BTEST:BNE ENCORE ; si B n’est pas Nulle alore refaireLDA #$FF ;charger A par #$FFSTA $0000 ; stock A dans $0000END
y = ($0001)
Compter dans un pia et clignoter 5 fois lors d’une interruption IRQ
;$FFF8 db $FC ;vectorisation;$FFF9 db $50
DDRB EQU $8002 ; initialisationORB EQU $8002CRB EQU $8003
ORG $FC00CLR CRBLDA #$FFSTA DDRBLDA #$04STA CRB
LDA #$00
COMPTAGE:STA ORB ; stocker A dans ORBBSR TEMP ;Appel du sous programme de temporisationINCA ;incrémentation de ABRA COMPTAGE ;retourner au debut du programme de comptage
TEMP: ;programme de temporisationLDX #$000A ;X <- #$000A
SOSO:LEAX $FF,X ;decrementer XBNE SOSO ; si X n’est pas nulleRTS ; retourner
ORG $FC50 ; programme d’interruptionLDB #$05 ; charger B par 5
TOTO:CLR ORB ; ORB <- 0BSR TEMP ; appel du programmme de temporisationCOM ORB ; le complement de ORB BSR TEMP ;appel du sous programme TEMPDECB ;decrementatoin de BBNE TOTO ;si b n’est pas nulle alore aller vers TOTORTI ;retourner
END:END