; Test de débordement ; Lorne H. Bouchard (adapté par Ph. Gabrini mars 2006) ; debut: LDA 0,i ; 0 SUBA 0x8000,i ; - nombre (négatif) le plus petit STA res,d ; BRV deborde ; continue:LDA 1,i ; STA indic,d ; LDA 0x8000,i ; nombre (négatif) le plus petit ADDA 0x8000,i ; + nombre (négatif) le plus petit STA res,d ; BRV deborde ; STOP ; deborde: CHARO 'r',i ; cout << "r=" CHARO '=',i ; LDA res,d ; STA -2,s ; SUBSP 2,i ; CALL HEXO ; << valeur hexadécimale CHARO ' ',i ; CHARO 'V',i ; << " V=1" CHARO '=',i ; CHARO '1',i ; CHARO 0x000A,i ; << endl; LDA indic,d ; BREQ continue ; if(indic == 0) continue STOP ; ; ; HEXO: routine qui affiche en hexadécimal ; ; IN: SP+0=nombre hexa à afficher ; ; OUT: rien ; car: .EQUATE 0 ; caractère à afficher sauveA: .EQUATE 1 sauveX: .EQUATE 3 retour: .EQUATE 5 nombre: .EQUATE 7 ; donnée à afficher ; HEXO: SUBSP 5,i STA sauveA,s STX sauveX,s LDX 3,i ; 4 caractères à afficher boucleh: LDA nombre,s ROLA ; déplacement du premier caractère vers la droite ROLA ; ROLA ; ROLA ; STA nombre,s ; prochaine position ROLA ; ANDA 0x000F,i ; élimination des 3 autres caractères ADDA '0',i ; conversion en chiffre CPA '9',i ; lettre ? BRLE chiffre ADDA 7,i ; conversion en lettre chiffre: STBYTEA car,s ; caractère à afficher CHARO car,s SUBX 1,i ; caractère suivant BRGE boucleh LDA retour,s ; épilogue STA nombre,s LDA sauveA,s LDX sauveX,s ADDSP 7,i RET0 ; res: .WORD 0 indic: .WORD 0 .END