2012-07-18 261 views
1

所以我有这行代码:CMP汇编语言

LOOP CMP Y, #0 
BEQ DONE - When it is equal go to DONE. 
ADD X, #1 - add decimal constant 1 to x. 
SUB Y, #1 - subtract decimal constant 1 from y 
B LOOP - branch loop (start the loop again) 
DONE ... 

我刚才读的CMP意味着减去RN(Y减0) 操作数这CMN意味着添加的操作数的RN( 0 + Y为例)

第一行(LOOP CMP Y,#0):我认为这只是数字0,这是真的比较ÿ?

+0

什么CPU是这个大会?你可以用它来标记问题吗? – 2012-07-18 22:46:44

+0

@AlexeyFrunze:不保证,但看起来6800ish。 – 2012-07-19 00:28:16

回答

3

是 - cmp(至少在大多数汇编语言)做了减法。它根据该减法的结果设置标志,但随后丢弃结果本身。

+0

是否有条件?由于下一行有BEQ,我不明白这一点。当CMP返回0时,处理流程是否改变? (0减0)。 – jamie 2012-07-19 18:25:17

+0

基于所述'eq'标志,它被设置/通过先前'cmp'清除的状态的BEQ分支。如果没有cmp,BEQ会根据之前发生的任何影响eq标志的指令作出反应。 – 2012-07-19 18:27:54

+0

阿好:)谢谢! – jamie 2012-07-19 19:09:21