Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #puttime_asm
- .global puttime
- .text
- puttime:
- PUSH r16 #ser till så att vi kan använda r16
- PUSH r17 #ser till så att vi kan använda r17
- PUSH r18 #ser till så att vi kan använda r18
- PUSH r19 #ser till så att vi kan använda r19
- PUSH r20 #ser till så att vi kan använda r20
- PUSH r31 #ser till så att vi kan använda r31 för return
- mov r16, r4 #r16-r23 kan man lite på att de inte blir ändrade
- movi r4, '\n' #sparar charen för newline i r4
- call putchar #printar newline
- #inparametern på format: dddd cccc bbbb aaaa
- #mov r17, r16 #kopierar originalinparametern
- andi r18, r17, 0x000f #sparar 'aaaa' i r18
- srai r19, r17, 4 #shiftar 'bbbb' längst åt höger
- andi r19, r19, 0x000f #sparar bara 'bbbb', nollställer de tre hexbitarna till vänster
- srai r20, r17, 8 #skiftar bitarna 8 bitar åt höger, sparar 'cccc'
- andi r20, r20 0x000f #sparar bara 'cccc', nollställer de tre hexbitarna till vänster
- srai r21, r17, 12 #skiftar bitarna 12 bitar åt höger
- andi r21,r21, 0x000f #sparar bara 'dddd', nollställer de tre hexbitarna till vänster
- mov r4, r21 #sparar värdet i 'dddd' i r4 för att skicka det till hexasc
- call hexasc #gör om värdet i 'dddd' till ASCII, hexasc sparar i r2
- mov r4, r2 #flyttar returvärdet - ASCII-koden - till r4, redo för putchar
- call putchar #printar ASCII-tecknet till stdout
- mov r4, r20 #sparar värdet i 'cccc' i r4 för att skicka det till hexasc
- call hexasc #gör om värdet i 'cccc' till ASCII, hexasc sparar i r2
- mov r4, r2 #flyttar returvärdet - ASCII-koden - till r4, redo för putchar
- call putchar #printar ASCII-tecknet till stdout
- movi r4, 0x3A #lagrar ASCII-koden för tecknet ":"
- call putchar #printar ASCII-tecknet ":" till stdout
- mov r4, r19 #sparar värdet i 'bbbb' i r4 för att skicka det till hexasc
- call hexasc #gör om värdet i 'bbbb' till ASCII, hexasc sparar i r2
- mov r4, r2 #flyttar returvärdet - ASCII-koden - till r4, redo för putchar
- call putchar #printar ASCII-tecknet till stdout
- mov r4, r18 #sparar värdet i 'aaaa' i r4 för att skicka det till hexasc
- call hexasc #gör om värdet i 'aaaa' till ASCII, hexasc sparar i r2
- mov r4, r2 #flyttar returvärdet - ASCII-koden - till r4, redo för putchar
- call putchar #printar ASCII-tecknet till stdout
- POP r31
- POP r20
- POP r19
- POP r18
- POP r17
- POP r16
- ret #exits the program
- .end
Add Comment
Please, Sign In to add comment