1 %line 1+1 screen_input.asm 2 3 [section .data] 4 LF equ 10 5 NULL equ 0 6 TRUE equ 1 7 FALSE equ 0 8 EXIT_SUCCESS equ 0 9 STDIN equ 0 10 STDOUT equ 1 11 STDERR equ 2 12 SYS_read equ 0 13 SYS_write equ 1 14 SYS_open equ 2 15 SYS_close equ 3 16 SYS_fork equ 57 17 SYS_exit equ 60 18 SYS_creat equ 85 19 SYS_time equ 201 20 21 STRLEN equ 9 22 23 00000000 73616C76652C207075- testo db "salve, puoi scrivere qui sotto:", LF, NULL 24 00000000 6F6920736372697665- 25 00000000 72652071756920736F- 26 00000000 74746F3A0A00 27 00000021 0A0A00 newline db LF, LF, NULL 28 29 [section .bss] 30 00000000 chr resb 1 31 00000001 inputline resb STRLEN 32 33 [section .text] 34 [global _start] 35 _start: 36 37 38 00000000 48C7C7[00000000] mov rdi, testo 39 00000007 E862000000 call printstring 40 41 42 0000000C 48C7C3[00000000] mov rbx, inputline 43 00000013 49C7C400000000 mov r12, 0 44 45 ReadCharacters: 46 0000001A 48C7C000000000 mov rax, SYS_read 47 00000021 48C7C700000000 mov rdi, STDIN 48 00000028 488D3425[00000000] lea rsi, byte[chr] 49 00000030 48C7C201000000 mov rdx, 1 50 00000037 0F05 syscall 51 52 00000039 8A0425[00000000] mov al, byte[chr] 53 54 00000040 3C0A cmp al, LF 55 00000042 740E je ReadDone 56 57 00000044 49FFC4 inc r12 58 00000047 4983FC09 cmp r12, STRLEN 59 0000004B 73CB jae ReadCharacters 60 0000004D 8803 mov byte[rbx], al 61 0000004F 48FFC3 inc rbx 62 63 00000052 EBC4 jmp ReadCharacters 64 65 ReadDone: 66 00000054 C60300 mov byte[rbx], NULL 67 68 00000057 48C7C7[00000000] mov rdi, inputline 69 0000005E E80B000000 call printstring 70 71 00000063 48C7C03C000000 mov rax, SYS_exit 72 0000006A 48C7C700000000 mov rdi, EXIT_SUCCESS 73 00000071 0F05 syscall 74 75 76 77 78 [global printstring] 79 printstring: 80 81 00000073 53 push rbx 82 00000074 4889FB mov rbx, rdi 83 00000077 48C7C200000000 mov rdx, 0 84 85 stringcountloop: 86 0000007E 803B00 cmp byte [rbx], NULL 87 00000081 7406 je stringcountdone 88 00000083 48FFC2 inc rdx 89 00000086 48FFC3 inc rbx 90 00000089 EBF1 jmp stringcountloop 91 stringcountdone: 92 0000008B 4883FA00 cmp rdx, NULL 93 0000008F 7411 je printdone 94 95 00000091 48C7C001000000 mov rax, SYS_write 96 00000098 4889FE mov rsi, rdi 97 0000009B 48C7C701000000 mov rdi, STDOUT 98 000000A2 0F05 syscall 99 100 printdone: 101 000000A4 5B pop rbx 102 000000A5 C3 ret 103