1 %line 1+1 cmdline.txt 2 3 4 5 [section .data] 6 7 8 LF equ 10 9 NULL equ 0 10 TRUE equ 1 11 FALSE equ 0 12 EXIT_SUCCESS equ 0 13 STDIN equ 0 14 STDOUT equ 1 15 STDERR equ 2 16 SYS_read equ 0 17 SYS_write equ 1 18 SYS_open equ 2 19 SYS_close equ 3 20 SYS_fork equ 57 21 SYS_exit equ 60 22 SYS_creat equ 85 23 SYS_time equ 201 24 25 26 00000000 0A00 newLine db LF, NULL 27 28 [section .text] 29 [global main] 30 main: 31 32 33 34 35 36 00000000 4989FC mov r12, rdi 37 00000003 4989F5 mov r13, rsi 38 39 40 41 42 printArguments: 43 00000006 48C7C7[00000000] mov rdi, newLine 44 0000000D E830000000 call printString 45 00000012 48C7C300000000 mov rbx, 0 46 printLoop: 47 00000019 498B7CDD00 mov rdi, qword [r13+rbx*8] 48 0000001E E81F000000 call printString 49 00000023 48C7C7[00000000] mov rdi, newLine 50 0000002A E813000000 call printString 51 0000002F 48FFC3 inc rbx 52 00000032 4C39E3 cmp rbx, r12 53 00000035 7CE0 jl printLoop 54 55 56 exampleDone: 57 00000037 48C7C03C000000 mov rax, SYS_exit 58 0000003E 48C7C700000000 mov rdi, EXIT_SUCCESS 59 00000045 0F05 syscall 60 61 62 63 64 65 66 67 68 69 70 [global printString] 71 printString: 72 00000047 55 push rbp 73 00000048 4889E5 mov rbp, rsp 74 0000004B 53 push rbx 75 76 77 0000004C 4889FB mov rbx, rdi 78 0000004F 48C7C200000000 mov rdx, 0 79 strCountLoop: 80 00000056 803B00 cmp byte [rbx], NULL 81 00000059 7406 je strCountDone 82 0000005B 48FFC2 inc rdx 83 0000005E 48FFC3 inc rbx 84 00000061 EBF1 jmp strCountLoop 85 strCountDone: 86 00000063 4883FA00 cmp rdx, 0 87 00000067 740F je prtDone 88 89 90 00000069 48C7C001000000 mov rax, SYS_write 91 00000070 4889FE mov rsi, rdi 92 00000073 BF01000000 mov edi, STDOUT 93 94 00000078 0F05 syscall 95 96 97 prtDone: 98 0000007A 5B pop rbx 99 0000007B 5D pop rbp 100 0000007C C3 ret 101