【发布时间】:2018-04-19 22:21:41
【问题描述】:
我正在Assembly 中开发一个简单的16 位实模式内核,作为DOS 克隆内核。我目前正在尝试通过获取用户输入的每个字符并将其附加到数组中来将用户输入作为字符串读取。该函数应该将数组(为什么我还没有实现)作为字符串返回。但是,我的以下代码不起作用。为什么?提前致谢。我正在使用 NASM 汇编器,如果它有所作为的话。
7 section .bss:
8 INPUT_STRING: resb 4
9 section .text:
....
39 scans:
40 mov ah, 0x00
41 .repeat:
42 int 16h
43 cmp al, 0
44 je .done
45 cmp al, 0x0D
46 ; jump straight to returning the array, implement later
47 mov [INPUT_STRING+al], 1
48 add al, 4
49 jmp .repeat
50 .done:
51 ret
【问题讨论】:
-
[INPUT_STRING+al]不是有效的寻址模式。你确定它应该是al吗?我希望字符串中有一个索引。 -
我不确定......汇编中的数组让我有点困惑,但我在我的手册中找不到任何条目。我可能需要看看 TutorialsPoint 什么的。
-
数组不能真正出现在手册中 - 它们不是处理器功能,您实现它们。
-
@harold 所以为了让我自己实现这个,我必须使用该变量,将计数器存储在某个寄存器中,然后循环直到按下 Enter 键。
-
听起来不错。顺便看看16bit ModRM 选择一个你实际可以这样使用的索引的寄存器。