Advertisement
Guest User

Untitled

a guest
Aug 13th, 2017
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.17 KB | None | 0 0
  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
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement