Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //GETINT
- getint:
- .data
- tmpBuf: .skip 64
- found: .long 0
- .text
- enter $8, $0
- cmp $0, inpos #jämför inpos med 63(max)
- jb doInImg #hoppa om till doInImg inpos >= 63
- jmp findInt #annars börja hämta ints
- doInImg:
- call inimage #gör inimage
- findInt:
- subl %eax, %eax #resetta eax
- mov inbuf, %bl
- blank: cmp $32, %bl #kollar om tecknet är blankt
- je nextChar #hoppar till framflytt av pekare
- checkChar:
- add $1, found #om blanka slut found > 0
- cmp $0, inpos #jämför inpos med 0 (slut)
- jbe done #hoppa till done när slut på buffert
- cmp $43, %bl #43 == +
- je storeInt #lägger in + i tmpBuff
- cmp $45, %bl #45 == -
- je storeInt #lägger in - i tmpBuff
- cmp $48, %bl #48 == 0
- jae checkBig #om större än 0, kolla om den är mindre än 9
- cmp $2, found #om man kommer hir är det inte +/- eller 0-9
- jae done #om man hittat mer än ett tecken gå till done, annars error
- jmp error #om felaktigt tecken och den har hittat mindre än 1 tecken innan, hoppa till error
- //0 = 48, 9 = 57
- nextChar:
- //här har ja problem
- //första tecknet blir rätt.
- //har ingen aning om hur jag ska flytta mig till nästa
- sub $1, inpos #flytta pekare 1
- sub $4, inbuf #subbar inbuf för att få nästa tecken
- //funkar inte, hitta lösning
- cmp $0, found #om found == 0 har det bara varit blanka, leta efter fler
- je blank #hoppa till att leta efter blanka
- jmp checkChar #annars kontrollera nästa tecken
- checkBig:
- cmp $57, %bl #57 = 9
- jbe storeInt #om 9 eller mindre spara talet
- jmp error #annars error
- storeInt:
- imul $10, %eax #multiplicera med 10, detta för att få 1'tal 10'tal osv osv
- cmp $48, %bl #om 0 addera inget och hoppa till nextChar
- je nextChar #hoppa till nextChar
- cmp $49, %bl #om 1 hoppa till add1
- je add1 #hoppa till add1
- cmp $50, %bl
- je add2
- cmp $51, %bl
- je add3
- cmp $52, %bl
- je add4
- cmp $53, %bl
- je add5
- cmp $54, %bl
- je add6
- cmp $55, %bl
- je add7
- cmp $56, %bl
- je add8
- cmp $57, %bl
- je add9 #slut på addera
- error: pushl $err
- call puts
- done: movl found, %ebx #flyttar värdet i found till ebx
- subl %ebx,found #värdet av ebx minus värdet av found till found (found blir 0)
- leave
- ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement