The DLX-560 Instruction Architecture

Ähnliche Dokumente
Die DLX-560 Befehlssatzarchitektur

Computersysteme. Die DLX-560 Architektur

Computersysteme. Die DLX-560 Architektur

Prozessor-Architektur, DLX-Befehlssatz und Assembler. Entwurfsprinzipien beim Prozessor-Design

Rechnerarchitektur. Marián Vajteršic und Helmut A. Mayer

Arithmetik, Register und Speicherzugriff. Grundlagen der Rechnerarchitektur Assembler 9

Computersysteme. Serie 11

Pipelining for DLX 560 Prozessor. Pipelining : implementation-technique. Pipelining makes CPUs fast. pipe stages

DLX Befehlsübersicht

Assembler am Beispiel der MIPS Architektur

Grundlagen der Rechnerarchitektur. MIPS Assembler

Computersysteme. Fragestunde

2. Teilklausur Informatik II

Darstellung von Instruktionen. Grundlagen der Rechnerarchitektur Assembler 21

21. Februar Name:. Vorname. Matr.-Nr:. Studiengang

Beispiel: A[300] = h + A[300]

28. März Name:. Vorname. Matr.-Nr:. Studiengang

Datenpfad einer einfachen MIPS CPU

Datenpfad einer einfachen MIPS CPU

Weitere Arithmetik. Grundlagen der Rechnerarchitektur Assembler 33

32 Bit Konstanten und Adressierung. Grundlagen der Rechnerarchitektur Assembler 78

Digitaltechnik und Rechnerstrukturen. 2. Entwurf eines einfachen Prozessors

X ST Steuerndes Werk Y ST Z ST X R Z R

Datenpfad einer einfachen MIPS CPU

Sprungbefehle und Kontroll-Strukturen

Technische Informatik I - HS 18

24. Februar Name:. Vorname. Matr.-Nr:. Studiengang

Mikroprozessortechnik. 03. April 2012

Mikroprozessoren Grundlagen AVR-Controller Input / Output (I/O) Interrupt Mathematische Operationen

Introduction to Python. Introduction. First Steps in Python. pseudo random numbers. May 2016

Problem: Keine Integers in JavaCard. ToDo: Rechnen mit Bytes und Shorts

Technische Informatik I - HS 18

TIn 1: Feedback Laboratories. Lecture 4 Data transfer. Question: What is the IP? Institut für Embedded Systems. Institut für Embedded Systems

Grundlagen der Rechnerarchitektur

RISC-Prozessoren (1)

Notwendigkeit für andere Instruktionsformate

Datenpfad einer einfachen MIPS CPU

Kap.3 Mikroarchitektur. Prozessoren, interne Sicht

Assembler (NASM) Crashkurs von Sönke Schmidt

Übung 3: VHDL Darstellungen (Blockdiagramme)

Klausur Mikroprozessortechnik 29. März 2010

Introduction to Python. Introduction. First Steps in Python. pseudo random numbers. May 2018

PONS DIE DREI??? FRAGEZEICHEN, ARCTIC ADVENTURE: ENGLISCH LERNEN MIT JUSTUS, PETER UND BOB

Datapath. Data Register# Register# PC Address instruction. Register#

Technische Informatik 1 Übung 5: Eingabe/Ausgabe (Computerübung) Georgia Giannopoulou, ETZ G & 18.

Unterstützung von Jump Tables

Use of the LPM (Load Program Memory)

Übung Praktische Informatik II

Institut für Informatik Prof. Dr. D. Hogrefe Dipl.-Inf. R. Soltwisch, Dipl.-Inform. M. Ebner, Prof. Dr. D. Hogrefe Informatik II - SS 04.

Rechnernetze und Organisation

Offenbar hängt das Ergebnis nur von der Summe der beiden Argumente ab...

Finite Difference Method (FDM)

DLX-Assembler-Programmierung Kutil, 2010

Weather forecast in Accra

Informatik für Mathematiker und Physiker Woche 7. David Sommer

Struktur der CPU (1) Die Adress- und Datenpfad der CPU: Befehl holen. Vorlesung Rechnerarchitektur und Rechnertechnik SS Memory Adress Register

Kontrollpfad der hypothetischen CPU

Ressourcenmanagement in Netzwerken SS06 Vorl. 12,

Kontrollpfad der hypothetischen CPU

Lehrveranstaltung: PR Rechnerorganisation Blatt 8. Thomas Aichholzer

Wie man heute die Liebe fürs Leben findet

1. Teilklausur zur Vorlesung Grundlagen der Rechnerarchitektur

Ein Stern in dunkler Nacht Die schoensten Weihnachtsgeschichten. Click here if your download doesn"t start automatically

Level 2 German, 2016

Das Zeitalter der Fünf 3: Götter (German Edition)

Auch hier wieder. Control. RegDst Branch MemRead MemtoReg ALUOp MemWrite ALUSrc RegWrite. Instruction[31 26] (also: das Opcode Field der Instruktion)

Mikrocomputertechnik

Informatik - Übungsstunde

Was heißt Denken?: Vorlesung Wintersemester 1951/52. [Was bedeutet das alles?] (Reclams Universal-Bibliothek) (German Edition)

... Adressierung und Befehlsfolgen (1) Speicherbelegung. Hauptspeicheradressen. Inhalt von Speicherbelegungen: Operanden - Zahlen - Zeichen Befehle

Registration of residence at Citizens Office (Bürgerbüro)

Technische Informatik I - HS 18

Befehle zur Verarbeitung von Daten ( data processing ):

Informatik für Mathematiker und Physiker Woche 2. David Sommer

Programmiersprachen Einführung in C

DAS ZUFRIEDENE GEHIRN: FREI VON DEPRESSIONEN, TRAUMATA, ADHS, SUCHT UND ANGST. MIT DER BRAIN-STATE-TECHNOLOGIE DAS LEBEN AUSBALANCIEREN (GE

Handbuch der therapeutischen Seelsorge: Die Seelsorge-Praxis / Gesprächsführung in der Seelsorge (German Edition)

FEM Isoparametric Concept

05. Assembler-Programmierung. Datenstrukturen des ATMega32. Literatur

Konfiguration von eduroam. Configuring eduroam

D-BAUG Informatik I. Exercise session: week 1 HS 2018

Max und Moritz: Eine Bubengeschichte in Sieben Streichen (German Edition)

PONS DIE DREI??? FRAGEZEICHEN, ARCTIC ADVENTURE: ENGLISCH LERNEN MIT JUSTUS, PETER UND BOB

Datenpfaderweiterung Der Single Cycle Datenpfad des MIPS Prozessors soll um die Instruktion min $t0, $t1, $t2 erweitert werden, welche den kleineren

Rechnerstrukturen Sommersemester 2003

Prinzipieller Aufbau und Funktionsweise eines Prozessors

Die Bedeutung neurowissenschaftlicher Erkenntnisse für die Werbung (German Edition)

Technische Informatik 1

FEBE Die Frontend-Backend-Lösung für Excel

Technische Informatik 1 Übung 2 Assembler (Rechenübung) Georgia Giannopoulou (ggeorgia@tik.ee.ethz.ch) 22./23. Oktober 2015

SAMPLE EXAMINATION BOOKLET

Technische Informatik I Übung 3: Assembler

Zusammenfassung: Grundlagen der Informatik Zahlensysteme, b-adische Darstellung, Umrechnung Beispiel: Umrechnung von ( ) 10 ins Dualsystem

Tube Analyzer LogViewer 2.3

Computersysteme. Stacks Anwendung in der Assembler-Programmierung

Reparaturen kompakt - Küche + Bad: Waschbecken, Fliesen, Spüle, Armaturen, Dunstabzugshaube... (German Edition)

Einführung Programmierpraktikum C Michael Zwick

Was ist die Performance Ratio?

Transkript:

The DLX-560 Instrction Architectre We have learnt several things in the previos chapter and now we want to apply them by implementing them in an eample architectre: DLX, prononced as dele What are the specifications? 1

Specifications of DLX GPR-Architectre, load-store ( =Register-Register) Addressing: Displacement, Immediate, Indirect Fast simple instrctions (load, store, add,...) 8-bit, 16-bit, 32-bit Integer 32-bit, 64-bit Floating-point fied-length instrction format, few formats at least 16 GPRs 2

Instrction fetch Instrction decode/ register fetch Eecte/ address calclation emory access Write back 4 Add NPC Zero? Branch taken Cond PC Instrction memory IR Registers A B ALU ALU otpt Data memory LD 16 Sign 32 etend lmm DLX-Data Path with Clock Cycle 3

Register The processor has 32 GPRs. Each register is 32-bit long. They are represented in the form of R0,..,R31. R0 has the vale 0 and cannot be overwritten (Writing to R0 has no effect) R31 stores the retrn address of Jmp and Link-instrctions Frthermore, 32 FP-Register eists. Each is 32 bit long. F0,..,F31 This can be sed as individal Single-Register pairwise as Doble-Register F0, F2,...,F30. Between the register of different kinds, special ove instrctions eists 4

Data Type 8-bit bytes. 16-bit half words. 32-bit word. For Integers. All these are either nsigned Integer or in 2's complement. 32-bit Singles. 64-bit Dobles. In IEEE Standard 754. Loading of bytes and half words can either be done with leading 0s (nsigned) or with replication of the sign bit (2 s complement). 5

Addressing odes Displacement and Immediate Throgh reasonable sage of R0 and 0, for addressing modes can be realised: Displacement: Load R1, 1000(R2); Immediate: Load R1, #1000; Indirect: Load R1, 0(R2); Direct: Load R1, 1000(R0); 6

Instrctions Format I Instrction 6 5 5 16 Opcode rs1 rd Immediate Loads and Stores of bytes, words, half words All immediate-instrctions (rd rs1 op immediate) Conditional Branching (rs1 : register, rd nsed) Jmp register, Jmp and link register (rd = 0, rs1 = destination, immediate = 0) R Instrction 6 Opcode 5 rs1 5 rs2 5 rd 11 Fnction Register-Register ALU Operations: rd rs1 fnc rs2 fnc (Fnction) determines what shall be done: Add, Sb,... Read/write to special registers and moves J Instrction 6 Opcode Jmp and Jmp and link Trap and Retrn from eception 26 Displacement (wird z PC addiert) 7

Instrctions with emory Access Instrctions Name Eplanations LW R1,30(R2) Load word Regs [R1] 32 em [30+Regs [R2] ] LW R1,1000(R0) Load word Regs [R1] 32 em [1000+0] LB R1,40(R3) Load byte Regs [R1] 32 (em [40+Regs [R3] ] 0 ) 24 # # em[40+regs[r3] ] LBU R1,40(R3) Load byte nsigned Regs [R1] 32 0 24 # # em[40+regs [R3] ] LH R1,40(R3) Load half word Regs [R1] 32 (em[40+regs [R3] ] 0 ) 16 # # em [40+Regs [R3] ] # # em[41+regs [R3] ] LF F0,50(R3) Load float Regs [F0] 32 em [50+Regs [R3] ] LD F0,50(R2) Load doble Regs [F0] # #Regs [F1] 64 em[50+regs [R2] ] SW 500(R4),R3 Store word em [500+Regs [R4] ] 32 Regs [R3] SF 40(R3),F0 Store float em [40+Regs [R3] ] 32 Regs [F0] SD 40(R3),F0 Store doble em[40+regs [R3] ] 32 Regs [F0]; em[44+regs [R3] ] 32 Regs [F1] SH 502(R2),R3 Store half em[502+regs [R2] 16 Regs [R31] ] 16...31 SB 41(R3),R2 Store byte em[41+regs [R3] ] 8 Regs [R2] 24...31 8

Instrction fetch Instrction decode/ register fetch Eecte/ address calclation emory access Write back 4 Add + NPC Zero? Branch taken Cond PC Instrction memory IR Registers A B ALU + ALU otpt Data memory LD LW R30, 200(R2) 16 Sign 32 etend lmm DLX-Data Path with Clock Cycle 9

Instrction fetch Instrction decode/ register fetch Eecte/ address calclation emory access Write back 4 Add + NPC Zero? Branch taken Cond PC Instrction memory IR Registers A B ALU + ALU otpt Data memory LD SW 200(R3), R28 16 Sign 32 etend lmm DLX-Data Path with Clock Cycles 10

ALU-Instrctions Instrctions Name Eplanations SUB R1, R2, R3 Sbtract Regs[R1] Regs[R2] Regs[R3] ADDI Rl, R2, #3 Add immediate Regs [Rl] Regs [R2]+3 LHI R1, #42 Load high immediate Regs [R1] 42 # #0 16 11

Instrction fetch Instrction decode/ register fetch Eecte/ address calclation emory access Write back 4 Add + NPC Zero? Branch taken Cond PC Instrction memory IR Registers A B ALU + ALU otpt Data memory LD ADD R30, R4, R18 16 Sign 32 etend lmm DLX-Data Path with Clock Cycle 12

Compare-Instrctions Instrctions Name Eplanations SLLI R1,R2,#5 Shift left logical immediate Regs [R1] Regs [R2]<<5 SLT R1, R2, R3 Set less than if (Regs[R2]<Regs[R3]) Regs [R1] 1 else Regs [R1] 0 13

Jmp Instrctions Instrctions Name Eplanations J name Jmp PC name; ((PC+4) - 2 25 ) name < ((PC+4)+2 25 ) JAL name Jmp and link Regs[R31] PC+4; PC name; ( (PC+4) 2 25 ) name < ( (PC+4) +2 25 ) JALR R2 Jmp and link register Regs [R31] PC+4; PC Regs [R2] JR R3 Jmp register PC Regs [R3] BEQZ R4,name Branch eqal zero if (Regs [R4] =0) PC name; ( (PC+4) 2 15 ) name < ( (PC+4) +2 15 ) BNEZ R4,name Branch not eqal zero if (Regs [R4] 0) PC name; ( (PC+4) 2 15 ) < name < ( (PC+4) +2 15 ) 14

Instrction fetch Instrction decode/ register fetch Eecte/ address calclation emory access Write back 4 Add + NPC Zero? Branch taken Cond PC Instrction memory IR Registers A B ALU + ALU otpt Data memory LD BEQZ R20, #68 16 Sign 32 etend lmm DLX-Data Path with Clock Cycle 15

The synta for the PC relative jmp instrctions is a little bit confsing, becase the parameter stated as an operand is to be nderstood as displacement to the PC. The first row shold be: J offset means PC <--- PC+4 + offset with -2 25 <= offset < +2 25 That wold mean that one wold have to state the displacement at relative addresses eplicitly in assembler programs. That makes the maintenance of sch programs nbelievably difficlt. Hence, it is allowed to introdce names for the effective addresses. These are written like labels in the assembler program. Of corse, the compiler ses the actal offsets bt a program written with those labels is mch simpler to nderstand for the reader. 16

Floating Point Instrctions Instrctions Name Eplanations ADDS F2, F0, F1 Add single precision floating point nmbers ULTD F4, F0, F2 ltiply doble precision floating point nmbers Regs[F2] Regs[F0] + Regs[F1] Regs[F4]##Regs[F5] Regs[F0]##Regs[F1] * Regs[F2]##Regs[F3] 17

Instrction type/opcode Instrction meaning Data transfers ove data between registers and memory, or between the integer and FP or special registers; only memory address mode is 16-bit displacement + contents of a GPR LB,LBU,SB Load byte, load byte nsigned, store byte LH, LHU, SH Load half word, load half word nsigned, store half word LW, SW Load word, siore word (to/from integer registers) LF, LD, SF, SD Load SP float, load DP float, store SP float, store DP float OVI2S, NOVS2I ove from/to GPR to/from a special register OVF, OVD Copy one FP register or a DP pair to another register or pair OVFP2I,OVI2FP ove 32 bits from/to FP registers to/from integer registers Arithmetic/logical Operations on integer or logical data in GPRs; signed arithmetic trap on overflow ADD, ADDI, ADDU, ADDUI Add, add immediate (all immediates are 16 bits); signed and nsigned SUB, SUBI, SUBU, SUBUI Sbtract, sbtract immediate; signed and nsigned ULT,ULTU,DIV,DIVU ltiply and divide, signed and nsigned; operands mst be FP registers; all operations take and yield 32-bit vales AND,ANDI And, and immediate OR,ORI,XOR,XORI LHI Or, or immediate, eclsive or, eclsive or immediate LHI Load high immediate loads pper half of register with immediate SLL, SRL, SRA, SLLI, SRLI, Shifts: both immediate (S l) and variable form (S ); shifts are shift left logical, right SRAI logical, right arithmetic S_, S_ I Set conditional: _ may be LT, GT, LE, GE, EQ, NE Control Conditional branches and jmps; PC-relative or throgh register BEQZ,BNEZ Branch GPR eqal/not eqal to zero; 16-bit offset from PC+4 BFPT,BFPF Test comparison bit in the FP stats register and branch; 16-bit offset from PC+4 J, JR Jmps: 26-bit offset from PC+4 (J) or target in register (JR) JAL, JALR Jmp and link: save PC+4 in R31, target is PC-relative (JAL) or a register (JALR) TRAP Transfer to operating system at a vectored address RFE Retrn to ser code from an eception; restore ser mode Floating point FP operations on DP and SP formats ADDD,ADDF Add DP. SP nmbers SUBD,SUBF ULTD,ULTF ltiply DP, SP floating point DIVD, DIVF Divide DP, SP floating point CVTF2D, CVTF2I, CVTD2F, Convert instrctions: CVT2y converts from type to type y, where and y are I CVTD2I, CVTI2F, CVTI2D (integer), D (doble precision), or F (single precision). Both operands are FPRs. 18 _D,_ F DP and SP compares: _ = LT, GT, LE, GE, EQ, NE; sets bit in FP stats register

α Beispiele für Assembler-Programmierng Sortieren zweier Zahlen A nd B. A steht an Adresse 1000, B an Adresse 1004 Die größere Zahl soll am Ende in 1000 stehen, die kleinere in 1004 Inpt: Natürliche Zahlen A nd B Otpt: A nd B in der Reihenfolge der Größe ethode: A, B einlesen A >= B? nein C = A A = B B= C ja IF A < B Then Endif Otpt A Otpt B C = A A = B B = C } A, B asgeben ω 19

Wir wollen dafür ein Assemblerprogramm schreiben. Wir setzen voras, dass die Operanden an den Adressen 1000 nd 1004 im Speicher stehen nd das Ergebnis sortiert an den selben Adressen entstehen soll: Register: R1 : A R2 : B R3 : Hilfsregister R4: Hilfsregister Start LW R1, 1000(R0) /Lade erste Zahl nach R1 LW R2, 1004(R0) /Lade zweite Zahl nach R2 SUB R4, R1, R2 /R4 negativ falls R2>R1 SLT R3, R4, R0 /R3 ngleich 0, falls R4 negativ BEQZ R3, Asgabe /Zahlen bereits in der richtigen Reihenfolge ADD R4, R1, R0 /Vertaschen: R4 := R1 ADD R1, R2, R0 /Vertaschen: R1 := R2 ADD R2, R4, R0 /Vertaschen: R2 := R4 Asgabe SW 1000(R0), R1 /Asgabe des aimms SW 1004(R0), R2 /Asgabe des inimms TRAP /Ende des Programms 20

α Berechnng des GGT zweier Zahlen A nd B. Inpt: Natürliche Zahlen A nd B Otpt: GGT(A,B) ethode: A, B einlesen A = B? nein ja While A <> B Do GGT = A If A<B Then { C = A A = B B = C } Endif A = A B A < B? ja C = A A = B B= C A = A-B nein GGT = A ω 21

Wir wollen dafür ein Assemblerprogramm schreiben. Wir setzen voras, dass die Operanden an den Adressen 1000 nd 1004 im Speicher stehen nd das Ergebnis an der Adresse 1008 entstehen soll: Register: R1 : R2 : R3 : A B Hilfsregister Start LW R1, 1000(R0) LW R2, 1004(R0) Loop SEQ R3, R1, R2 BNEZ R3, Ende SLT R3, R1, R2 BEQZ R3, Weiter ADD R3, R1, R0 ADD R1, R2, R0 ADD R2, R3, R0 Weiter SUB R1, R1, R2 J Loop Ende SW 1008(R0), R1 TRAP 22

Beispiele für Assembler-Programmierng ergen zweier sortierter Listen der Länge 25. Die eine ist ab Adresse 1000 im Speicher, die andere ab Adresse 1100. Die sortierte Gesamtliste soll ab Adresse 2000 in den Speicher geschrieben werden. Sortiert heißt: Das kleinste Element steht in der Zelle mit der kleinsten Adresse nd von da an afsteigend. Inpt: Zwei sortierte Listen A i nd B j Otpt: Eine sortierte Gesamtliste ethode: Das jeweils kleinste Element der einen Liste wird mit dem jeweils kleinsten Element der zweiten Liste verglichen. Das kleinere von beiden wird in die Gesamtliste gespeichert. Ein nees nnmehr kleinstes Element wird as der Liste geladen, as der das eben gespeicherte Element kam. Sobald eine der Listen verbracht ist, speichert man die restlichen Elemente der anderen Liste in der Reihenfolge, in der sie bereits sind. 23

α i, j =0; A i, B j einlesen A i < B j? nein ja A i speichern i = i+1 Nees A i einlesen B j speichern j = j+1 Nees B j einlesen nein i = 25? j = 25? nein ja ja B j speichern j = j+1 Nees B j einlesen A i speichern i = i+1 Nees A i einlesen nein j = 25? i = 25? nein ω 24

Register: R1 : Zeiger af die Speicherzellen von A R2 : Zeiger af die Speicherzellen von B R3 : Zeiger af die Speicherzellen der Ergebnisliste R4 : A i R5: B j R6 : Hilfsregister START ADD R1, R0, R0 / Initialisieren von R1 mit 0 ADD R2, R0, R0 / Initialisieren von R2 mit 0 ADD R3, R0, R0 / Initialisieren von R3 mit 0 LW R4, 1000(R1) / Laden von A 0 LW R5, 1100(R2) / Laden von B 0 LOOP SGT R6, R4, R5 / Welches ist das Kleinere? BEQZ R6, R4KL / Springen, falls R4 kleiner SW 2000(R3), R5 / Speichern von B j ADDI R3, R3, #4 / R3 zeigt af die nächste freie Zelle ADDI R2, R2,#4 / R2 zeigt af nächstes B j LW R5, 1100(R2) / Laden des nächsten B j SUBI R6, R2, #100 / prüfen, ob die Liste B schon leer BEQZ R6, ARAUS / wenn ja, Restliste A rasschreiben J LOOP / wenn nein, neer Vergleich 25

R4KL SW 2000(R3), R4 / R4 enthält das nnmehr kleinste Elt. ADDI R3, R3, #4 / Zeiger af die nächste freie Zelle ADDI R1, R1,#4 / R1 zeigt af nees A i LW R4, 1000(R1) / Laden des nächsten A i SUBI R6, R1, #100 / prüfen, ob die Liste A bereits leer BEQZ R6, BRAUS / wenn ja, Sprng nach BRAUS J LOOP / wenn nein, erneter Vergleich ARAUS SW 2000(R3), R4 / Ab hier wird der Rest von A ADDI R3, R3, #4 / herasgeschrieben ADDI R1, R1,#4 / R1 zeigt af nächstes A i LW R4, 1000(R1) / Laden des nächsten A i SUBI R6, R1, #100 / prüfen, ob alle Elemente von A bereits BNEZ R6, ARAUS / verarbeitet sind J ENDE BRAUS SW 2000(R3), R5 / ab hier wird der Rest von B ADDI R3, R3, #4 / herasgeschrieben ADDI R2, R2,#4 / R2 zeigt af nächstes B j LW R5, 1100(R2) / Laden des nächsten B j SUBI R6, R2, #100 / prüfen, ob alle Elemente von B bereits BNEZ R6, BRAUS / verarbeitet sind ENDE HALT 26

Testen einer Zahl af Primalität Die Zahl steht in Adresse 1000 im Speicher. Wenn es eine Primzahl ist, soll nach dem Programm eine 1 in Adresse 1004 stehen, wenn sie teilbar ist eine 0. 27

α R1 einlesen R3 = R1-2 R4= R1 R4 = R1 R3 = R3-1 R3<2? nein R4 > R3? ja nein R4 = R3? ja nein R4= R4-R3 0 speichern 1 speichern ω 28

Register: R1 : Af Primalität z prüfende Zahl R2 : Konstante 2 R3 : Drchläft alle kleineren Zahlen nd prüft ob sie R1 teilen R4 : Kopie von R1 für Teilbarkeitstest R5: Hilfsregister START ADDI R2, R0, #2 / Initialisieren von R2 mit 2 LW R1, 1000(R0) / Laden der z testenden Zahl ADD R4, R0, R1 / Kopieren von R1 SUBI R3, R4,#2 / Erster Teilerkandidat LOOP1 SLT R5, R3, R2 / Ist R3 kleiner als 2? BNEZ R5, PRIZAHL / R1 hat keine nichttrivialen Teiler LOOP2 SGT R5, R4,R3 / ist R4>R3? BEQZ R5, GLEICHTEST / wenn nicht, mss R4=R3 geprüft werden SUB R4, R4, R3 / R4 m R3 verringern J LOOP2 / Nächster Drchlaf der inneren Schleife GLEICHTEST SEQ R5, R4, R3 / Ist R3 gleich R4 BNEZ R5, NICHTPRI / Dann teilt R3 die Zahl in R1 ADD R4, R0, R1 / Setzten von R4 af rsprünglichen Wert SUBI R3, R3,#1 / verringern von R3 m 1 J LOOP1 / neer Test af Teilbarkeit PRIZAHL ADDI R5, R0, #1 / Erzegen einer 1 in R5 SW 1004(R0), R5 / Schreiben der 1 in 1004 J ENDE / ENDE NICHTPRI SW 1004(R0), R0 / Schreiben der 0 nach 1004 ENDE HALT 29