关于 SUBWF f [,d] 指令疑问

2019-07-16 07:03发布

最近在看十速芯片资料,碰到“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的不一样,费解啊!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
z00
1楼-- · 2019-07-16 07:20
计算机的所有减法都是做加法,也就是加上补码。
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一样的意义。
youzizhile
2楼-- · 2019-07-16 11:56
SUBWF  F,d        F-W→d        F寄存器的内容减去W寄存器的内容,结果存入W(d=0)或F(d=1)中
捕获1.JPG 捕获.JPG
易德电子
3楼-- · 2019-07-16 14:41
欢迎到易德电子咨询

一周热门 更多>