카테고리

asm (27) bootloader_x86_grub (1) C (92) compile (11) config (76) CPP (13) CSS (1) debugging (7) gimp (1) Go (1) html (1) Java (1) JavaScript (1) kernel (19) LibreOffice (3) Linux system progamming (21) MFC (1) opencv (4) OpenGL (1) PHP (1) Python (4) qemu (29) shell (3) socket (7) troubleshooting (2) ubuntu18.04 (2) windows (1)

2018/12/06

asm 64bit 키보드 입력 처리

global      _start         
section     .text
_start:
  mov         rax, 0          ; SYS_READ를 SYS_CALL 값으로 설정
  sub         rsp, 8          ; 읽기 버퍼로 스택에 8 바이트 공간을 할당
  mov         rdi, 0          ; rdi를 0으로 설정 STDIN, 키보드 입력
  lea         rsi, [rsp]      ; const char * buf를 스택의 8 바이트 공간에 설정
  mov         rdx, 1          ; char에 대해 size_t count를 1로 설정
  syscall

    mov         rax,1
    mov         rdi,1
    mov         rsi,message
    mov         rdx,13
    syscall
    mov         rax,60
    xor         rdi,rdi
    syscall

section     .data
    message:    db          "Hello, World", 10

compile:
nasm -felf64 hello.asm && ld hello.o && ./a.out

댓글 없음:

댓글 쓰기