我在程序中遇到了问题。基本上我要做的是检查字符串中的点后面是否有空格,如果没有在点后面添加空格。但是由于我的缓冲区大小有限,我不知道如何解决这个问题,因此如果我添加空格,缓冲区的最后一个字母将被删除?或者我做错了吗?谢谢你的帮助提前:) 例如:Hello.Hi = Hello。喜
MOV cx, ax
MOV si, offset readBuf
MOV di, offset writeBuf
work:
MOV dl, [si]
CMP dl, '.'
JE dot
increase:
MOV [di], dl
INC si
INC di
LOOP work
dot:
CMP dl+1, ' '
JNE noSpace
JMP increase
noSpace:
答案 0 :(得分:0)
代码存在一些问题。第一个是这一行:
CMP dl+1, ' '
这是dl
中的值加1,并将其与不是您想要的空格字符进行比较。你想要的是比较下一个字符,所以你必须将它加载到MOV dl, [si]
或类似的寄存器中。
第二个问题是算法。从psuedo-code开始,然后从中创建汇编语言版本通常最简单。例如:
请注意,“加载字符”表示同时获取字符并递增si
,“保存字符”表示同时保存字符并递增di
。另请注意,步骤2,3和4与步骤7,8和9相同。这表明子程序或宏的潜力,因此您只需编写(并调试!)一次代码并可多次使用它。