;==============================================================
;== TP5 : Programme test.s
;==============================================================
;Il s'agit ici d'un fichier commenté du programme test.s
;
; La première zone correspond à la zone "programme"
; Le début de chaque ligne correspond à la zone programme. Elle comporte :
; Code assembleur : colonnes 1,2,3 (label, code, operande)
;La fin de chaque ligne est un commentaire comportant
; Le PC corresponsant à l'adresse de l'instruction en cours : colonne 4
; L'adresse en RAM de l'éventuelle opérande : colonne 5
; Le registre I (instruction en cours) : colonne 6
; Accumulateur, Z et C après exécution de l'instruction en cours : colonnes 7,8 et 9
; Commentaire global : colonne 10
;
;Les constantes indiquées sous forme 0xxx sont en hexadécimal.
;
;La deuxieme zone correspond a la zone des données. De même, elle comporte
; Code assembleur : colonne 1,2,3 (nom variable, valeur, adresse)
; Valeur variable : colonne 4,5,6 (décimal, binaire et hexadécimal)
;
;=================================================================
;== Zone programme
;=================================================================
;label code operande; PC I AD accu C Z Commentaire
:DEBUT NOP ZERO ; 0x00 0x0 0x39 0x00 0 0
LDA DATA0 ; 0x02 0xA 0x30 0xFF 0 0 (DATA0 : donnée à l'adresse 0x30)
XOR DATA1 ; 0x04 0x1 0x31 0x3A 0 0 (A = 0xFF XOR 0xC5)
AND DATA2 ; 0x06 0x2 0x32 0x10 0 0 (A = 0x3A AND 0x10)
OR DATA3 ; 0x08 0x3 0x33 0x31 0 0 (A = 0x10 OR 0x21)
ADD DATA4 ; 0x0A 0x4 0x34 0x00 1 1 (A = 0x31 + 0xCF)
ADC DATA5 ; 0x0C 0x5 0x35 0x01 0 0 (A = 0x00 + 0x00 + 1)
SUB DATA6 ; 0x0E 0x6 0x36 0xFF 1 0 (A = 0x01 - 0x02)
SBC DATA7 ; 0x10 0x7 0x37 0x00 0 1 (A = 0xFF - 0xFD - 1)
XOR DATA1 ; 0x12 0x1 0x31 0xC5 0 0 (A = 0x00 XOR 0xC5)
ROL ZERO ; 0x14 0x8 0x39 0x8A 0 0 (A = ROL(0xC5))
ROR ZERO ; 0x16 0x9 0x39 0xC5 0 0 (A = ROR(0x8A))
STA RESULT ; 0x18 0xB 0x3B 0xC5 0 0 (Memoire[0x3B] <- 0xC5)
LDA ZERO ; 0x1A 0xA 0x39 0x00 0 1 (A <- Memoire[0x39])
LDA RESULT ; 0x1C 0xA 0x3B 0xC5 0 0 (A <- Memoire[0x3B])
LDA COUNT ; 0x1E 0xA 0x38 0x03 0 0 (A <- Memoire[0x38])
OUT UN ; 0x20 0xC 0x3A 0x03 0 0 (BZ <- Memoire[0x3A][0])
:COMPT1 SUB UN ; 0x22 0x6 0x3A 0x02 0 0 (A = 0x03 - 0x01)
JNC COMPT1 ; 0x24 0xE 0x22 0x02 X 0 Retour à COMPT1 3 fois
LDA COUNT ; 0x26 0xA 0x38 0x03 0 0 (A <- Memoire[0x38])
OUT ZERO ; 0x28 0xC 0x39 0x03 0 0 (BZ <- Memoire[0x39][0])
:COMPT2 SUB UN ; 0x2A 0x6 0x3A 0x02 0 0 (A = 0x03 - 0x01)
JNZ COMPT2 ; 0x2C 0xF 0x2A 0x02 0 0 Retour à COMPT2 2 fois
JMP DEBUT ; 0x2E 0xD 0x00 0x00 0 1 Retour à debut
;===================================================================
;== Zone donnees
;===================================================================
;Nom variable Valeur Ad Décimal Binaire Hexadécimal
:DATA0 .db 255 ; 0x30 255 11111111 0xFF
:DATA1 .db 197 ; 0x31 197 11000101 0xC5
:DATA2 .db 16 ; 0x32 16 00010000 0x10
:DATA3 .db 33 ; 0x33 33 00100001 0x21
:DATA4 .db 207 ; 0x34 207 11001111 0xCF
:DATA5 .db 0 ; 0x35 0 00000000 0x00
:DATA6 .db 2 ; 0x36 2 00000010 0x02
:DATA7 .db 254 ; 0x37 254 11111110 0xFD
:COUNT .db 3 ; 0x38 3 00000011 0x03
:ZERO .db 0 ; 0x39 0 00000000 0x00
:UN .db 1 ; 0x3A 1 00000001 0x01
:RESULT .db 0 ; 0x3B 0 00000000 0x00
;== TP5 : Programme test.s
;==============================================================
;Il s'agit ici d'un fichier commenté du programme test.s
;
; La première zone correspond à la zone "programme"
; Le début de chaque ligne correspond à la zone programme. Elle comporte :
; Code assembleur : colonnes 1,2,3 (label, code, operande)
;La fin de chaque ligne est un commentaire comportant
; Le PC corresponsant à l'adresse de l'instruction en cours : colonne 4
; L'adresse en RAM de l'éventuelle opérande : colonne 5
; Le registre I (instruction en cours) : colonne 6
; Accumulateur, Z et C après exécution de l'instruction en cours : colonnes 7,8 et 9
; Commentaire global : colonne 10
;
;Les constantes indiquées sous forme 0xxx sont en hexadécimal.
;
;La deuxieme zone correspond a la zone des données. De même, elle comporte
; Code assembleur : colonne 1,2,3 (nom variable, valeur, adresse)
; Valeur variable : colonne 4,5,6 (décimal, binaire et hexadécimal)
;
;=================================================================
;== Zone programme
;=================================================================
;label code operande; PC I AD accu C Z Commentaire
:DEBUT NOP ZERO ; 0x00 0x0 0x39 0x00 0 0
LDA DATA0 ; 0x02 0xA 0x30 0xFF 0 0 (DATA0 : donnée à l'adresse 0x30)
XOR DATA1 ; 0x04 0x1 0x31 0x3A 0 0 (A = 0xFF XOR 0xC5)
AND DATA2 ; 0x06 0x2 0x32 0x10 0 0 (A = 0x3A AND 0x10)
OR DATA3 ; 0x08 0x3 0x33 0x31 0 0 (A = 0x10 OR 0x21)
ADD DATA4 ; 0x0A 0x4 0x34 0x00 1 1 (A = 0x31 + 0xCF)
ADC DATA5 ; 0x0C 0x5 0x35 0x01 0 0 (A = 0x00 + 0x00 + 1)
SUB DATA6 ; 0x0E 0x6 0x36 0xFF 1 0 (A = 0x01 - 0x02)
SBC DATA7 ; 0x10 0x7 0x37 0x00 0 1 (A = 0xFF - 0xFD - 1)
XOR DATA1 ; 0x12 0x1 0x31 0xC5 0 0 (A = 0x00 XOR 0xC5)
ROL ZERO ; 0x14 0x8 0x39 0x8A 0 0 (A = ROL(0xC5))
ROR ZERO ; 0x16 0x9 0x39 0xC5 0 0 (A = ROR(0x8A))
STA RESULT ; 0x18 0xB 0x3B 0xC5 0 0 (Memoire[0x3B] <- 0xC5)
LDA ZERO ; 0x1A 0xA 0x39 0x00 0 1 (A <- Memoire[0x39])
LDA RESULT ; 0x1C 0xA 0x3B 0xC5 0 0 (A <- Memoire[0x3B])
LDA COUNT ; 0x1E 0xA 0x38 0x03 0 0 (A <- Memoire[0x38])
OUT UN ; 0x20 0xC 0x3A 0x03 0 0 (BZ <- Memoire[0x3A][0])
:COMPT1 SUB UN ; 0x22 0x6 0x3A 0x02 0 0 (A = 0x03 - 0x01)
JNC COMPT1 ; 0x24 0xE 0x22 0x02 X 0 Retour à COMPT1 3 fois
LDA COUNT ; 0x26 0xA 0x38 0x03 0 0 (A <- Memoire[0x38])
OUT ZERO ; 0x28 0xC 0x39 0x03 0 0 (BZ <- Memoire[0x39][0])
:COMPT2 SUB UN ; 0x2A 0x6 0x3A 0x02 0 0 (A = 0x03 - 0x01)
JNZ COMPT2 ; 0x2C 0xF 0x2A 0x02 0 0 Retour à COMPT2 2 fois
JMP DEBUT ; 0x2E 0xD 0x00 0x00 0 1 Retour à debut
;===================================================================
;== Zone donnees
;===================================================================
;Nom variable Valeur Ad Décimal Binaire Hexadécimal
:DATA0 .db 255 ; 0x30 255 11111111 0xFF
:DATA1 .db 197 ; 0x31 197 11000101 0xC5
:DATA2 .db 16 ; 0x32 16 00010000 0x10
:DATA3 .db 33 ; 0x33 33 00100001 0x21
:DATA4 .db 207 ; 0x34 207 11001111 0xCF
:DATA5 .db 0 ; 0x35 0 00000000 0x00
:DATA6 .db 2 ; 0x36 2 00000010 0x02
:DATA7 .db 254 ; 0x37 254 11111110 0xFD
:COUNT .db 3 ; 0x38 3 00000011 0x03
:ZERO .db 0 ; 0x39 0 00000000 0x00
:UN .db 1 ; 0x3A 1 00000001 0x01
:RESULT .db 0 ; 0x3B 0 00000000 0x00