【发布时间】:2016-03-09 23:14:44
【问题描述】:
(NASM 的所有新手都在努力学习)
我已将第一个命令行参数放入寄存器 eax。可以是 1-20 个小写字符的字符串。
我现在想遍历这个字符串,一次将一个字符复制到程序内存中的字节数组 A 中,并将字符串 N 的长度也存储在内存中。在程序的这一点上,我检查了字符串是合法的输入,并且在长度和大小写方面都很好。
这是一个粗略的结构 (?),似乎不起作用:
section .bss ; uninitialized data
N resd 1 ; length of string
A resb 1 ; byte array A
section .text
asm_main:
// legal input checking code
mov edx, 0
loop2:
mov al, [eax+edx]
mov [A+edx],al
inc edx
cmp al, 0
jz done_loop2
jmp loop2
done_loop2:
mov [N], edx
call print_int
mov eax, A
call print_string
// code for jumps to errors and end of main
(我只打印大小和字符串来检查循环是否正常工作) 我得到了意想不到的输出:例如 输入“你好”给我 -6193920 hxETmcxbt=Se6o=Eaco/oa
任何帮助将不胜感激,谢谢! :)
【问题讨论】: