我正在为大学课程做一个项目。
首先,我不是要求一个完整的解决方案。我很难找到哪里出错了。当我输入有效的 ISBN 3201541974 时,我的程序会打印“无效”代码块。对于您可以看到的任何逻辑错误,我将不胜感激,并且我也很想知道是否有比一次盯着我的所有代码更好的调试方法。我习惯于依赖简单的打印语句和断点。
编辑:问题就在这里
L1_top:
mov al, [esi] ; get a character
inc esi ; update source pointer
sub al, 0
add ah, al
cmp ah, 11
.......
我从 al 中减去 0 的原因是因为 al 最初是一个字符。从 al 中减去 '0' 会将其转换为 int 或 w/e。我错误地减去了 0 而不是 '0'
正确的线是
sub al, '0'