Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .text
- .globl _start
- start = 0
- max = 31
- _start:
- mov $start,%r15 /* starting value for loop */
- mov $0x30,%r12 /* value of 0 in hex to ascii*/
- loop:
- // division for 2-digit number
- mov $0,%rdx /* clear remainder for division */
- mov %r15,%rax /* set rax to be divided */
- mov $10,%r10 /* set divisor */
- div %r10 /* divide */
- mov %rax,%r14 /* store quotient */
- mov %rdx,%r13 /* store remainder */
- // modify msg
- add $0x30,%r14 /* convert to ascii */
- add $0x30,%r13 /* convert to ascii */
- mov %r13b,msg+7 /* modify single byte in msg */
- // skip if first digit is 0
- cmp %r12,%r14
- je print
- mov %r14b,msg+6 /* modify single byte in msg */
- print:
- // print out
- mov $len,%rdx /* length of string */
- mov $msg,%rsi /* string */
- mov $1,%rdi /* stdout */
- mov $1,%rax /* write */
- syscall
- // loop
- inc %r15 /* increment register */
- cmp $max,%r15 /* compare max to increment value */
- jne loop /* back to loop if not equal */
- // exit
- mov $0,%rdi /* exit status */
- mov $60,%rax /* syscall 60 = exit */
- syscall
- .data
- msg: .ascii "Loop: \n"
- len = . - msg
Add Comment
Please, Sign In to add comment