ฉันกำลังพยายามเรียนรู้วิธีใช้ linux 64bits syscall ในแอสเซมบลี
ฉันกำลังเขียนโค้ดสำหรับอ่านคีย์บอร์ดและพิมพ์บนหน้าจอเมื่อกดปุ่ม: ฉันใช้ sys_read
รหัส:
section .text
global _start
_start:
;write startmsg
mov rax, 1
mov rdi, 1
mov rsi, startmsg
mov rdx, sizestart
syscall
;using sys_read
mov ax, 0
mov rdi, 0
mov rsi, key
mov rdx, 2
syscall
;trying to see if esc is pressed then exit
mov rbx, 0x1b
cmp rbx, key
je _exit
_exit:
mov rax, 60
mov rdi, 0
syscall
section .bss
key resw 1
section .data
startmsg db 'Press a key', 10
sizestart equ $-startmsg
ตอนนี้มีสองสิ่งเกิดขึ้น: 1) มันจะพิมพ์ปุ่มบนหน้าจอโดยอัตโนมัติ (D :) 2) มันจะไม่ออกเมื่อฉันกด esc