关于汇编中mov命令的问题
Questions on mov command in assembly
我在使用寄存器和存储数据方面遇到了一些问题。
- 在我读入一个字符之前,我想要一个大小为 100 的缓冲区,寄存器 ESI 指向该缓冲区。
我用这个吗?
mov esi, 100
存储大小为 100 的缓冲区,
然后
mov esi, [al]
inc esi
要存储我输入到esi中的当前字符并将其移动到下一个位置以存储新字符?
我也找不到如何正确检查是否输入了空终止字符。
我试过 cmp al, 0xa
检查新行
cmp eax, -1
检查eof。
注意:我有一个名为 read_char 的函数来读入一个字符以放入 al 寄存器
要在 NASM 中定义缓冲区,您可以使用 buffer times 100 db 0
你得到它的地址mov esi, buffer
将AL
中的字符存入其中,并将地址写成mov [esi], al
inc esi
how to properly check if a null terminated character is entered
null 将是字符后面的字节。为此,您需要比较 word。读取字符和后面的字节,然后比较:
mov ax, [esi]
cmp ax, 0x000A
这会测试换行符是否是这个以零结尾的字符串中的最后一项。
我在使用寄存器和存储数据方面遇到了一些问题。
- 在我读入一个字符之前,我想要一个大小为 100 的缓冲区,寄存器 ESI 指向该缓冲区。 我用这个吗?
mov esi, 100
存储大小为 100 的缓冲区,
然后
mov esi, [al]
inc esi
要存储我输入到esi中的当前字符并将其移动到下一个位置以存储新字符?
我也找不到如何正确检查是否输入了空终止字符。
我试过 cmp al, 0xa
检查新行
cmp eax, -1
检查eof。
注意:我有一个名为 read_char 的函数来读入一个字符以放入 al 寄存器
要在 NASM 中定义缓冲区,您可以使用 buffer times 100 db 0
你得到它的地址mov esi, buffer
将AL
中的字符存入其中,并将地址写成mov [esi], al
inc esi
how to properly check if a null terminated character is entered
null 将是字符后面的字节。为此,您需要比较 word。读取字符和后面的字节,然后比较:
mov ax, [esi]
cmp ax, 0x000A
这会测试换行符是否是这个以零结尾的字符串中的最后一项。