; Exemple #1 d'appel de afficher: ; ------------------------------- ; Programme Principal: ; -------------------- AffLigne: LOADA MsgLigne,i ; -- Paramètre #1 = Adr. MsgLigne STOREA d#-2,s ; ADDSP d#-2,i ; JSR Afficher ; Afficher MsgLigne STOP ; ; Espace réservé: ; --------------- ; Message écrit sur plusieurs lignes. MsgLigne: .ASCII /On peut écrire sur/ .BYTE h#0A ; *Saut de ligne = 0A (base 16) .ASCII /plusieurs/ ; .BYTE h#0A ; .ASCII /lignes/ ; .BYTE h#0A ; .ASCII /avec/ ; .BYTE h#0A ; .ASCII /un/ ; .BYTE h#0A ; .ASCII /appel/ ; .BYTE h#0A ; .ASCII /de "JSR Afficher"./ .BYTE h#00 ; Sous-programme Afficher: ; ------------------------ ; ------- Afficher ; Affiche une chaîne de caractères ASCII jusqu'à ce qu'il ; rencontre un caractère nul. Un paramètre qui est ; l'addresse du message sur la pile. ; vieuxX: .EQUATE d#0 ; sauvegarde X vieuxA: .EQUATE d#2 ; sauvegarde A adRet: .EQUATE d#4 ; adresse de retour addrMsg: .EQUATE d#6 ; addresse du message à afficher ; Afficher: ADDSP d#-4,i ; espace local sauvegarde STOREA vieuxA,s ; sauvegarde A STOREX vieuxX,s ; sauvegarde X LOADB addrMsg,s ; B := addresse du message LOADX d#0,i ; X := 0 LOADA d#0,i ; A := 0 EncorA: LDBYTA ,x ; LOOP BREQ FiniA ; EXIT WHEN Message(X) = 0; CHARO ,x ; afficher Message(X); ADDX d#1,i ; X := X + 1; BR EncorA ; END LOOP; FiniA: LOADA adRet,s ; adresse retour STOREA addrMsg,s ; déplacée sur paramètre LOADA vieuxA,s ; restaure A LOADX vieuxX,s ; restaure X ADDSP d#6,i ; nettoyer pile RTS ; .END ;