【发布时间】:2018-12-06 08:12:13
【问题描述】:
我正在编写一个程序,它会询问你的名字,然后像这样打印出来:
<name> is your name?
这是我当前的代码:
section .data
promptText: db "What is your name: ", 0
promptTextLength: equ $ - promptText
secondText: db " is your name?", 0
section .bss
name resb 15
section .text:
global _start
_start:
; Print prompt message
mov rax, 1
mov rdi, 1
mov rsi, promptText
mov rdx, promptTextLength
syscall
; Get name
mov rax, 0
mov rdi, 0
mov rsi, name
mov rdx, 15
syscall
; Somehow concatenate "name" and "secondText"
; Print second message
mov rax, 1
mov rdi, 1
mov rsi, nameAndSecondText
mov rdx, nameAndSecondTextLength
syscall
; Exit 0
mov rax, 60
mov rdi, 0
syscall
所以,几乎可以添加name 和secondText,然后将它们打印到终端。
然而,
我不想只调用两次SYS_WRITE,要打印两个字符串,我需要将name 和secondText 组合到它们自己的变量中。
谢谢!
P.S 抱歉,如果我使用了错误的术语,我已经习惯了更高级别的语言,例如 Python、C 等。
【问题讨论】:
标签: assembly 64-bit nasm x86-64