Advertisement
gon2

Untitled

Nov 2nd, 2018
158
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. *-----------------------------------------------------------
  2. * Title      : Smalamálsverkefni 2
  3. * Written by : Guðmundur Óli Norland
  4. * Date       : 02/11/2018
  5. * Description: Tölvuhögun
  6. *-----------------------------------------------------------
  7.    
  8. START:  ORG    $1000
  9.  
  10.         LEA     stringn,A1      ; Hlöðum upphafsstrengnum í A1
  11.         MOVE.B  #14,D0          ; Skipun 14 birtir núll-enda streng
  12.         TRAP    #15
  13.        
  14.         MOVE.B  #4,D0           ; Skipun 4 les tölu frá lyklaborðinu og geymir í D1
  15.         TRAP    #15
  16.         MOVE.B  D1,(n)          ; Geymum í minninu sem við tókum frá
  17.        
  18.         BSR.W   nFact           ; Förum í undir-rútínu, return address á stakkinn
  19.  
  20.         BSR.W   displayN        ; Förum í undir-rútínu, return address á stakkinn
  21.        
  22.         LEA     stringnf,A1     ; Hlöðum strengnum fyrir nf í A1
  23.         MOVE.B  #14,D0
  24.         TRAP    #15             ; Birtum skilaboðin
  25.        
  26.         MOVE.L  (nf),D1         ; nf í D1 fyrir birtingu
  27.         MOVE.B  #3,D0           ; Skipun 3 birtir tölu geymd í D1.L
  28.         TRAP    #15
  29.                
  30.         BRA     END
  31.        
  32. nFact:
  33.         MOVEM       D0-D7/A0-A6,-(SP)   ; vistum öll gisti á stakknum (A7 = SP)
  34.      
  35.         CMP.B       #0,(n)        ; ef n<0 gefum við villu
  36.         BLT         NEGATIVE
  37.      
  38.         CMP.B       #9,(n)        ; ef n>9 gefum við villu
  39.         BGT         OVERMAX
  40.      
  41.         MOVE.B      #1,D2         ; i
  42.         MOVE.B      #1,D3         ; nF, gerum þetta því 0!=1
  43.  
  44. LOOP:
  45.         CMP.L       D1,D2         ; berum saman n og i
  46.         BGT         nfEND         ; hættum þegar i > n
  47.  
  48.         MULU.W      D2,D3         ; margföldum i og nf og geymum í D3, 9! er yfir word og getum því ekki reiknað 10! eða stærra
  49.         ADDI.B      #1,D2         ; i++
  50.         BRA         LOOP
  51.  
  52. nfEND:  
  53.         MOVE.L      D3,(nf)             ; geymum í minninu sem við tókum frá
  54.         MOVEM       (SP)+,D0-D7/A0-A6   ; endurheimtum öll gögn af stakknum
  55.         RTS                             ; sækjum return addressið úr stakkinum
  56.  
  57. displayN:
  58.         MOVEM       D0-D1,-(SP)   ; vistum gisti á stakknum (A7 = SP)
  59.         MOVE.B      (n),D1  
  60.         MOVE.B      #3,D0
  61.         TRAP        #15           ; birtum n
  62.         MOVEM       (SP)+,D0-D1   ; endurheimtum gögn af stakkinum
  63.         RTS                       ; sækjum return addressið úr stakkinum
  64.  
  65. NEGATIVE:
  66.         ;; vistum ekki gisti því þetta er error rútína
  67.  
  68.         BSR.W     displayN          ; Förum í undir-rútínu
  69.        
  70.         LEA       negativeStr,A1    ; hlöðum villuskilaboðunum í A1
  71.         MOVE.B    #14,D0
  72.         TRAP      #15               ; birtum skilaboðin
  73.        
  74.         BRA END                     ; forritið endar
  75.  
  76. OVERMAX:
  77.         ;; vistum ekki gisti því þetta er error rútína
  78.        
  79.         BSR.W     displayN      ; Förum í undir-rútínu
  80.        
  81.         LEA       overmaxStr,A1 ; hlöðum villuskilaboðunum í A1
  82.         MOVE.B    #14,D0
  83.         TRAP      #15           ; birtum skilaboðin        
  84.        
  85. END     SIMHALT                 ; halt simulator
  86.        
  87. ; Tökum frá minni fyrir n og nFact
  88. n           DS.L    1
  89. nF          DS.L    1
  90.  
  91. ; Strengir til að birta
  92. stringn     DC.B    'Sláðu inn tolu: ',0
  93. stringnf    DC.B    '! = ',0
  94. negativeStr DC.B    '! Er ekki skilgreint',0
  95. overmaxStr  DC.B    '! er of hatt gildi fyrir thetta forrit',0
  96.  
  97.  
  98.             END    START
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement