![]() ![]() |
![]() ![]() |
;*********** WINDLX Bsp. 1: Grösster gemeinsamer Teiler ************* ;*********** (c) 1991 Günther Raidl ************* ;------------------------------------------------------------------------ ; benoetigt Modul INPUT. ; Programmanfang bei Symbol main ; Liest zwei positive, ganzzahlige Werte von stdin ein, berechnet den ggT ; und gibt das Ergebnis auf stdout aus ;------------------------------------------------------------------------ .data ;*** Prompts für Parametereingabe Prompt1: .asciiz "Erster Wert: " Prompt2: .asciiz "Zweiter Wert: " ;*** Daten für printf-Trap PrintfFormat: .asciiz "ggT=%d\n\n" .align 2 PrintfPar: .word PrintfFormat PrintfValue: .space 4 .text .global main main: ;*** Zwei ganzzahlige, positive Werte in R1 und R2 einlesen addi r1,r0,Prompt1 jal InputUnsigned ;Uns.-Integer in R1 einlesen add r2,r1,r0 ;R2 := R1 addi r1,r0,Prompt2 jal InputUnsigned ;Uns.-Integer in R1 einlesen Loop: ;*** Ist R1 oder R2 groesser oder sind beide gleich? seq r3,r1,r2 ;R1 == R2 ? bnez r3,Result sgt r3,r1,r2 ;R1 > R2 ? bnez r3,r1Greater r2Greater: ;*** r1 von r2 subtrahieren sub r2,r2,r1 j Loop r1Greater: ;*** r2 von r1 subtrahieren sub r1,r1,r2 j Loop Result: ;*** Ergebnis (R1) ausgeben sw PrintfValue,r1 addi r14,r0,PrintfPar trap 5 ;*** Programmende trap 0 |
![]() ![]() |
![]() ![]() |