ARCCRPCXRSPProcessorc v zN$0000$0001$0002$0003$0004Minne$FFFE$FFFFFigur F.1: Programmerarmodell för en enkel ackumulatormaskin.• XR = indexregister. (16 bitar). Innehåller adressen till (pekar på) en tabell iminnet.• SP = stackpekare. (16 bitar). Innehåller adressen till (pekar på) toppen avstacken, som bl a används vid subrutinanrop och avbrott.Dessa register utgör den minimala uppsättningen för en användbar maskin. Vi läggermärke till att AR är ett dataregister medan PC,XR och SP är adressregister(pekarregister).F.1.3Instruktionsrepertoar.Ett maskinspråksprogram består av• instruktioner. En instruktion består i sin tur av– operationskod (opkod), som förstås anger vad som skall göras.– operandutpekning, som anger var operanden finns. Denna utpekningkan vara mer eller mindre raffinerad. Man brukar tala om adresseringsmoder.• operander (data).Vi tar ett exempelADDA 8 ; AR = AR + M(8), dvs innehållet i minnescell 8; adderas till ackumulatornVi presenterar nu en instruktionslista:67
ARCCRProcessor7F$0000$0001c v z N $0002$0003$0004$0005$0006$0007$0008$0009$000AMinneADDA832Figur F.2: Instruktion ADDA 8 före exekveringen. Vad blir resultatet? Observeraatt alla flaggorna påverkas.Mnemonic Beskrivning Funktion FlaggorLDA A Load acc. AR = M(A) Z,NSTA A Store acc. M(A) = ARADDA A Add acc. AR = AR + M(A) C,V,Z,NSUBA A Subtract acc. AR = AR − M(A) C,V,Z,NINCA Increment acc. AR = AR + 1 C,V,Z,NDECA Decrement acc. AR = AR − 1 C,V,Z,NCMPA A Compare acc. AR − M(A) C,V,Z,NCLRA Clear acc. AR = 0 Z=1ASRA Ar. shift right acc. AR = AR/2 C,V,Z,NASLA Ar. shift left acc. AR = AR · 2 C,V,Z,NLSRA Log. shift right acc. AR = AR >> 1 C,V,Z,NANDA A bitwise and acc. AR = AR&M(A) Z,NORA A bitwise or acc. AR = AR|M(A) Z,NJMP A jump to A PC = AJMPC A jump to A if carry C = 1 → PC = AJMPV A jump to A if overflow V = 1 → PC = AJMPZ A jump to A if zero Z = 1 → PC = AJMPN A jump to A if negative N = 1 → PC = AVi är nu redo för ett litet assemblerprogram. Vi tänker oss att vi har en assemblatorför vår maskin. Programmet ska beräkna medelvärdet av två tal med tecken.Dessa finns i minnescellerna 20 och 21. Vi antar för bekvämlighetens skull att allasiffror i vårt program är hexadecimala. Det korrekta medelvärdet ska placeras i cell22. De flesta assemblatorer (även vår) vill ha källkoden snyggt inskriven i fyra fält:label, instruktion, operand och kommentar. Så här kan det se ut:; mitt första asm-program; kodSTART: LDA 20 ; hämta första operandenADDA 21 ; lägg till den andra68