我正在尝试接收一个字符串,然后查看字符串的最后一个值是否为EOL(行尾)字符。我想通过读取的字符串长度并将其添加到缓冲区地址来找到最后一个元素。但这种方法似乎不起作用。
编辑:很抱歉我没有包含更多信息。变量定义如下:
然后,调用 dos 中断 来接受用户输入的字符串,代码如下:
编辑:很抱歉我没有包含更多信息。变量定义如下:
%define BUFLEN 256
SECTION .bss ; uninitialized data section
buf: resb BUFLEN ; buffer for read
newstr: resb BUFLEN ; converted string
rlen: resb 4
然后,调用 dos 中断 来接受用户输入的字符串,代码如下:
; read user input
;
mov eax, SYSCALL_READ ; read function
mov ebx, STDIN ; Arg 1: file descriptor
mov ecx, buf ; Arg 2: address of buffer
mov edx, BUFLEN ; Arg 3: buffer length
int 080h
然后我们进入循环:
test_endl:
mov ecx, [rlen]
mov esi, buf
add esi, ecx ; i want to move 'rlen' bytes into buf
mov al, [esi] ; to see what the last element is
cmp al, 10 ; compare it to EOL
jnz L1_init
dec ecx ; and then decrease 'rlen' if it is an EOL
mov [rlen], ecx\
我正在使用NASM编译和为i386机器编写代码。
nasm
?你的问题没有明确说明。但如果你在问题中包含了定义rlen
和buf
的代码部分,那将会很有帮助。我敢打赌你在定义rlen
时出现了问题。 - Michael Petch