【发布时间】:2013-10-18 08:48:54
【问题描述】:
我有一个 64 位 NASM 汇编作业,用于将输入文本的字母大写(所有字母应为小写,句首除外)。我对汇编程序完全陌生,当我阅读这样的文本时,我无法找到如何从字符串中增量读取每个字符:
section .data
prompt db "Enter your text: ", 10
length equ $ - prompt
text times 255 db 0
textsize equ $ - text
section .text
global main
main:
mov rax, 1
mov rdi, 1
mov rsi, prompt
mov rdx, length
syscall ;print prompt
mov rax, 0
mov rdi, 0
mov rsi, text
mov rdx, textsize
syscall ;read text input from keyboard
exit:
mov rax, 60
mov rdi, 0
syscall
另外,我不确定如何找出文本何时结束,因此我可以知道何时必须退出程序。我应该对文本大小进行一些操作还是有一些显示 EOL 的特殊符号之王?谢谢你的回答。
【问题讨论】:
-
sys_read(syscall 0) 返回在raxIIRC 中读取的字符数。
标签: linux assembly char x86-64 nasm