【发布时间】:2019-12-25 21:33:43
【问题描述】:
我对组装的东西完全陌生,谷歌搜索了几个小时,搜索 SO 并没有把事情弄清楚,所以我来这里问。
我想要达到的目标:
[first second]: hello (stays on the screen for 1 second)
[second second]: world (hello disappeared and now we have `world` in place of it)
而且这个流程是无限循环的
换句话说,我希望我的终端的标准输出在 hello 和 world 之间闪烁(更改),而无需添加任何换行符、编写字符串或任何其他内容,我只想将现有的、已打印的文本替换为其他文本。
我已经编写了无限循环,它将打印hello,然后等待一秒钟,然后打印world,然后等待一秒钟。我也把这段代码无限循环了。
这是我目前拥有的代码:
section .data
hello db "hello",10,0
world db "world",10,0
delay dq 1,0
section .text
global _start
_start:
mov rax, 1
mov rdi, 1
mov rsi, hello
mov rdx, 6
syscall
mov rax, 35
mov rdi, delay
mov rsi, 0
syscall
mov rax, 1
mov rdi, 1
mov rsi, world
mov rdx, 6
syscall
mov rax, 35
mov rdi, delay
mov rsi, 0
syscall
call _start
请注意,我使用 elf64 asm 格式,非常感谢您提出该格式的解决方案。
【问题讨论】:
标签: linux assembly nasm system-calls