как очистить / обнулить переменную в ассемблере nasm (x64)? - PullRequest
0 голосов
/ 26 апреля 2020

Я пытаюсь создать ассемблерную программу с небольшим l oop и сравнением строк. Однако, когда я снова переключаюсь на основную функцию (в unknown), input не пусто и все еще заполнено введенной строкой. Но пользователь должен иметь возможность ввести другую строку. Как очистить эту input переменную / метку?

Мой код:

section .data:
  input: resb 16
  welcome_msg: db "Welcome to this a bit more complex assembler program!", 0x0a
  welcome_msg_len equ $-welcome_msg
  msg_1: db "Type exit to exit the program", 0x0a
  msg_1_len equ $-msg_1
  msg_2: db "Unknown command!", 0x0a
  msg_2_len equ $-msg_1
  exit: db "exit", 0x0a

section .text
global _start
_start:
  jmp main

unknown:
  jmp main

exit_func:
  ; exit the programm
  mov rax, 60
  mov rdi, 0
  syscall

main:
  ; print the welcome_msg
  mov rax, 1
  mov rdi, 1
  mov rsi, welcome_msg
  mov rdx, welcome_msg_len
  syscall
  ; print the msg_1
  mov rax, 1
  mov rdi, 1
  mov rsi, msg_1
  mov rdx, msg_1_len
  syscall
  ; wait for user input
  mov rax, 0
  mov rdi, 0
  mov rsi, input
  mov rdx, 16
  syscall
  ; compare the input
  mov rdi, exit
  mov rsi, input
  mov rcx, 4
  repe cmpsb
  je exit_func
  ; print the msg_1
  mov rax, 1
  mov rdi, 1
  mov rsi, msg_2
  mov rdx, msg_2_len
  syscall
  jmp unknown

...