SHARE
TWEET

Untitled

a guest Aug 13th, 2017 43 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //GETINT
  2. getint:
  3.     .data
  4. tmpBuf: .skip   64
  5. found:  .long   0
  6.     .text
  7.            
  8.     enter   $8, $0
  9.     cmp $0, inpos   #jämför inpos med 63(max)
  10.     jb  doInImg     #hoppa om till doInImg inpos >= 63
  11.     jmp findInt     #annars börja hämta ints 
  12. doInImg:
  13.     call    inimage     #gör inimage
  14. findInt:
  15.     subl    %eax, %eax  #resetta eax       
  16.     mov inbuf, %bl
  17. blank:  cmp $32, %bl    #kollar om tecknet är blankt  
  18.     je  nextChar    #hoppar till framflytt av pekare
  19. checkChar:
  20.     add $1, found   #om blanka slut found > 0
  21.     cmp $0, inpos   #jämför inpos med 0 (slut)
  22.     jbe done        #hoppa till done när slut på buffert
  23.     cmp $43, %bl    #43 == +
  24.     je  storeInt    #lägger in + i tmpBuff
  25.     cmp $45, %bl    #45 == -
  26.     je  storeInt    #lägger in - i tmpBuff
  27.     cmp $48, %bl    #48 == 0
  28.     jae checkBig    #om större än 0, kolla om den är mindre än 9
  29.     cmp $2, found   #om man kommer hir är det inte +/- eller 0-9
  30.     jae done        #om man hittat mer än ett tecken gå till done, annars error
  31.     jmp error       #om felaktigt tecken och den har hittat mindre än 1 tecken innan, hoppa till error
  32. //0 = 48, 9 = 57
  33. nextChar:
  34.     //här har ja problem
  35.     //första tecknet blir rätt.
  36.     //har ingen aning om hur jag ska flytta mig till nästa
  37.     sub $1, inpos   #flytta pekare 1
  38.     sub $4, inbuf   #subbar inbuf för att få nästa tecken
  39.     //funkar inte, hitta lösning  
  40.     cmp $0, found   #om found == 0 har det bara varit blanka, leta efter fler
  41.     je  blank       #hoppa till att leta efter blanka
  42.     jmp checkChar   #annars kontrollera nästa tecken
  43. checkBig:
  44.     cmp $57, %bl    #57 = 9
  45.     jbe storeInt    #om 9 eller mindre spara talet
  46.     jmp error       #annars error
  47. storeInt:
  48.     imul    $10, %eax   #multiplicera med 10, detta för att få 1'tal 10'tal osv osv
  49.     cmp $48, %bl    #om 0 addera inget och hoppa till nextChar
  50.     je  nextChar    #hoppa till nextChar
  51.     cmp $49, %bl    #om 1 hoppa till add1
  52.     je  add1        #hoppa till add1
  53.     cmp $50, %bl
  54.     je  add2
  55.     cmp $51, %bl
  56.     je  add3
  57.     cmp $52, %bl
  58.     je  add4
  59.     cmp $53, %bl
  60.     je  add5
  61.     cmp $54, %bl
  62.     je  add6
  63.     cmp $55, %bl
  64.     je  add7
  65.     cmp $56, %bl
  66.     je  add8
  67.     cmp $57, %bl
  68.     je  add9        #slut på addera
  69.  
  70. error:  pushl   $err   
  71.     call    puts
  72. done:   movl    found, %ebx #flyttar värdet i found till ebx
  73.     subl    %ebx,found  #värdet av ebx minus värdet av found till found (found blir 0)       
  74.     leave
  75.     ret
RAW Paste Data
Top