Deug Mias CLM D. Etiemble TD n° 11 : Programmation assembleur On utilise le processeur S4-2004, défini en annexe. 1 Exécution d’instructions On suppose que la configuration de départ est donnée par la table 1, où le contenu des registres, les adresses et contenus des cases mémoires sont exprimés en hexadécimal. Registre CP R0 R1 R2 R3 R4 R5 R6 R7 Table 1 Contenu (hexadécimal) 4000 0 50 256 8000 FFFF 3000 128 7FFF Adresse (hexadécimal) Contenu (hexadécimal) 0000 0001 3000 3001 3002 3003 4000 4321 5555 5000 8456 4000 0123 Instruction à exécuter Soit les instructions assembleur suivantes a) ADD R3, R1, R2 b) ADD R0,R1,R3 c) AND R3, R4, R2 d) LD R6, (R5+2) e) ST (R5+0), R7 f) OR R7, R2, R6 g) BLT R3,+48 h) BGE R4,+100 i) BEQ R0, + 15 Donner le contenu en hexadécimal des registres et des cases mémoire modifiés après exécution des instructions assembleur notées a) à i). Les registres modifiés peuvent être les registres généraux et le compteur de programme CP. NB - On repart à chaque fois de la configuration de la table 1 !!! Donner le codage en hexadécimal des instructions suivantes a) ADD R3, R1, R2 b) LD R6, (R5+2) c) ST (R5 -2), R6 d) LIM R7, 9 2 Programmes assembleur 1 2004 Deug Mias CLM D. Etiemble a) Que fait le programme ci-dessous ? Que contiennent les registres R1 et R3 à la fin du programme ? ADD R3, R0,R0 ; SUB R1,R1,R2 ; BLT R1,+2 ; ADDI R3,R3,1 ; BEQ R0, -4 ; ADD R1,R1,R2 ; b) Que fait le programme ci-dessous ? Que contient le registre R3 à la fin du programme ? ADDI R2,R1,9 LD R3, (R1+0) ADDI R1,R1,1 SUB R5, R1, R2 BGT R5,+6 LD R4, (R1+0) SUB R5, R4, R3 BLE R5, -6 ADD R3, R4, R0 BEQ R0, -8 FIN : 3 Programmation assembleur Ecrire les programmes assembleur correspondant aux programmes Pascal suivants On supposera que les variables a, b , c sont initialement dans les registres R1, R2 et R3. a) if a+b > c then begin a := a+b ; c:= c+1; end else begin a := a-b ; c:= c-1 ; end b) c:=0 ; for a:= 1 to 10 do c:= c+a ; c) while a < 30 do begin a:= a+b ; c:= c+1 end 2 2004