【发布时间】:2013-05-09 14:17:23
【问题描述】:
我一直在从事我的装配项目,遇到了一个我无法理解的事实。
我有一个名为“lent”的单词数组,里面填充了一些数字。当我打印 0 索引下的内容时,它显示 ASCII 0 (NULL)。但是,当我使用 CMP 检查该值是否为 0 时,我遇到了一些麻烦。这是一些代码:
mov di,offset lent
mov cx,0d
cmp ds:[di],cx
它返回不等于,好像 [di] 不包含零。 然而:
mov di,offset lent
mov cl,0d
cmp ds:[di],cl
返回相等,这让我感到困惑。我需要第一个案例在我的代码中工作。 如果这是一个蹩脚的问题,我很抱歉,但我无法在互联网上找到合适的答案。提前致谢
【问题讨论】:
-
“当我打印 0 索引下的内容时,它显示 ASCII 0 (NULL)。” 你是打印整个单词还是只打印低字节?
-
我是这样做的:
mov dx,ds:[di] mov ah,2d int 21h -
那只会打印一个字符(来自
DL,即低字节)。 -
更具体地说:我需要
ds:[lent]等于offset tab,在代码中是这样的:mov di,offset tab | mov bx,offset lent | mov ds:[bx],di,但它不起作用。 -
您能否显示代码的整个部分,您都在其中存储值,然后尝试与之进行比较? (而不仅仅是一部分)