【发布时间】:2019-08-08 07:51:48
【问题描述】:
如果这是一个重复的问题,请提前道歉。我对以下代码有点困惑:
list db 80h, 70h, 60h, 50h, 40h, 30h, 20h
mov si, offset list
move al,[si]
repit: inc si
add al,[si]
jnc repit
fin:
我知道jnc表示在没有进位溢出的情况下我们将退出这个循环,即CF = 0。由于si 应该指向列表的第一个元素的索引,这不是80h 吗?然后如果si 增加,它应该指向 70h。将这些加在一起,答案应该是 F0,对吗?但是,当我运行这段代码时,我得到 AL 的值为 50。这怎么可能?我错过了什么?提前谢谢大家!
【问题讨论】:
-
你的循环条件倒退了。只要没有结转,你就会一直循环。当
c条件 (CF==1) 为真时退出。
标签: pointers assembly indexing x86 memory-segmentation