最近在看十速
芯片资料,碰到“SUBWF f [,d] ”这样的指令,资料中给出的例子有点迷惑
请高手释疑!
资料上这样描述的:
指令描述:寄存器‘f’ 的值减去W寄存器中的值(2的补码运算),运算结果存于目标寄存器。
举例:
SUBWF REG1 , 1 执行前:REG1=3,W=2,C=?, Z=?
执行后:REG1=1,W=2,C=1, Z=0
SUBWF REG1 , 1 执行前:REG1=2,W=2,C=?, Z=?
执行后:REG1=0,W=2,C=1, Z=1
SUBWF REG1 , 1 执行前:REG1=1, W=2, C=?,Z=?
执行后:REG1=FFh,W=2,C=0,Z=0
我是这么理解的:如果REG1>=W,说明够减,执行结果存放在REG1中,如果REG1<W,
说明不够减,执行的结果为负数,则用其补码形式表示,存放于REG1中。
这样理解对吗?还有那个标志位‘C’的值怎么理解?跟51的不一样,费解啊!
SUBWF REG1 , 1 执行前:REG1=3,W=2,C=?, Z=?
执行后:REG1=1,W=2,C=1, Z=0
(解释:计算机的二进制值分别是REG1=00000011,W=11111110(这是补码),
相加后00000001,有进位,C=1,奇,Z=0)
第二个自己算,也就进位,偶。
第三个,REG1=00000001,W=11111110,相加后11111111,没有进位,C=0,偶,Z=0。
就是这样。。。。
C标志位是和51一样的意义。
一周热门 更多>