Advertisement
gon2

Smalamálsverkefni 1

Oct 9th, 2018
224
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. *-----------------------------------------------------------
  2. * Title      :  Smalamálsverkefni 1
  3. * Written by :  Guðmundur Óli Norland    
  4. * Date       :  09/10/2018
  5. * Description:  Tölvuhögun
  6. *-----------------------------------------------------------
  7. START   ORG    $1000
  8.    
  9. READ:   LEA     enterMsg,A1         hlöðum upphafsskilaboðunum í registerið A1    
  10.         MOVE.B  #14,D0
  11.         TRAP    #15                 keyrum I/O skipun 14 (birtir streng)
  12.        
  13.         LEA     NAME,A1             geymum inputið í "name"
  14.         MOVE.B  #2,D0               keyrum I/O skipun 2, les inn streng frá notanda
  15.         TRAP    #15
  16.        
  17.         MOVE.B  D1,D4
  18.  
  19. CHECK:  CMP     D4,D2               D4 geymir lengd strengsins, loopum þangað til að teljarinn hefur náð lengdinni
  20.         BEQ     DISP                ef við náum hingað er strengurinn á réttu formi
  21.         MOVE.B  (A1),D1             færum stafinn á þessu svæði í D1
  22.  
  23.         CMP     #$20,D1             bil eru leyfileg
  24.         BEQ     SPACE
  25.         CMP     #$41,D1             ef stafurinn hefur minna hexagildi en A fæst alltaf villa
  26.         BLO     ERROR
  27.         CMP     #$7A,D1             stafurinn stærra hexagildi en z fæst alltaf villa
  28.         BHI     ERROR
  29.        
  30.         CMP     #0,D7               0 í D7 -> hástafur, 1 í D7 -> lástafur
  31.         BEQ     HIGH
  32.         BHI     LOW                
  33.                        
  34.        
  35. INCR:   ADD     #1,D2               bætum við teljarann
  36.         MOVE.B  (A1),D6             geymum síðasta staf
  37.         ADD     #1,A1               bendum á svæðið fyrir ofan
  38.         BSR     CHECK
  39.  
  40. SPACE:  CMP     #$20,D6             skoðum hvort síðasti stafur var líka bil, viljum það ekki
  41.         BEQ     ERROR
  42.         MOVE.B  #0,D7               setjum 0 til að fá hástaf á eftir bili
  43.         MOVE.B  #1,D5               þurfum allavega eitt bil til að geta verið með fullt nafn
  44.         BSR     INCR
  45.  
  46. HIGH:   CMP     #$5A,D1             ascii gildið verður að vera minna en gildi Z
  47.         BHI     ERROR
  48.         MOVE.B  #1,D7               setjum 1 til að fá lástaf á eftir hástafi
  49.         BSR     INCR
  50.        
  51. LOW:    CMP     #$61,D1             ascii gildið verður að vera hærra en gildi a
  52.         BLO     ERROR
  53.         BSR     INCR
  54.        
  55. ERROR:  LEA     errorMsg,A1         prentum villuskilaboð og hættum
  56.         MOVE.B  #14,D0
  57.         TRAP    #15
  58.         BSR     END
  59.          
  60. DISP:   CMP     #0,D5               ef það fékkst ekkert bil erum við ekki með fullt nafn          
  61.         BEQ     ERROR
  62.        
  63.         CMP     #7,D4               gerum ráð fyrir að nafn þurfi að vera að minnsta kosti 3 stafir
  64.         BLO     ERROR
  65.    
  66.         LEA     correctMsg,A1       fékkst bil og á réttu formi svo við birtum skilaboð um það
  67.         MOVE.B  #14,D0
  68.         TRAP    #15
  69.        
  70.         LEA     NAME,A1             birtum nafnið
  71.         MOVE.B  #1,D0
  72.         TRAP    #15
  73.        
  74.         LEA     lengthMsg,A1        birtum lengdartexta      
  75.         MOVE.B  #14,D0
  76.         TRAP    #15
  77.        
  78.         MOVE.B  D4,D1               birtum lengdina
  79.         MOVE.B  #3,D0
  80.         TRAP    #15
  81.        
  82.         BSR     END
  83.              
  84. END     SIMHALT
  85.  
  86. CR      EQU     $0D                 carriage return
  87. LF      EQU     $0A                 line feed
  88. NAME    DS.B    64
  89.  
  90. enterMsg      DC.B   'Sláðu inn nafnið þitt: ',0                    upphafsskilaboð
  91. errorMsg      DC.B    CR,LF,'Nafn er ekki á réttu formi',CR,LF,0    villuskilaboð
  92. correctMsg    DC.B    CR,LF,'Nafn er: ',0
  93. lengthMsg     DC.B    ', lengd er: ',0
  94.  
  95.         END     START
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement