hungrywolf1987 发表于 2014-8-8 20:38:21

关于AVR的汇编指令和对标志位的影响问题

各位大侠好,今天在网上看到一个资料,关于汇编指令对标志位影响的文档,有个疑问:
比如说ADD指令,对标志位H的影响是 “Rd3 · Rr3+Rr3 · R3 + R3 · Rd3 如果第3位有进位置1,否则清零”,这句话直接看懵了,其他的标志位解释也是百思不解,下面上截图和文档,求解惑,谢谢啦!!


david1234 发表于 2014-8-8 20:50:26

好久没用AVR汇编了,H位是用于十进制调整吧,置不置1对一般操作没影响吧。

hungrywolf1987 发表于 2014-8-8 20:59:32

david1234 发表于 2014-8-8 20:50
好久没用AVR汇编了,H位是用于十进制调整吧,置不置1对一般操作没影响吧。 ...

谢谢,不看到这个文档,还没什么问题,但是看了就有问题了,“Rd3 · Rr3+Rr3 · R3 + R3 · Rd3”这段话直接看不懂····

zhangchaoying 发表于 2014-8-9 12:34:40

本帖最后由 zhangchaoying 于 2014-8-9 13:31 编辑

       首先,楼主那个图不对,英文版指令集命名法不是这样,建议看英文版。

可以这么理解:当源寄存器Rr3=1且(“与”)目的寄存器Rd3=1时,加法运算中,1+1=2,必定进位。即Rd3·Rr3=1·1=1时,第4位进位(h置1)。

同理:R3·/Rr3表示,源寄存器Rr3=1,且运算结果第3位R3=0,h进位。1+x=0,即被加数为1而结果中出现0,什么时候才出现这种情况呢?            必定是进位啦:第2位向第3位有进位1,造成了第3位又向第四位h进位。

综上,当源和目的寄存器第3位都=1时、源或目的寄存器第3位=1而结果=0时,必定有进位。   

hungrywolf1987 发表于 2014-8-9 12:50:53

zhangchaoying 发表于 2014-8-9 12:34
可以这么理解:只有在源寄存器第3位R3=1且目的寄存器第三位Rd3=1时,1+1=2,二进制运算肯定向第4位进位; ...

”Rd3 · Rr3+Rr3 · R3 + R3 · Rd3“ 是不是要代用什么数字进去啊?

brother_yan 发表于 2014-8-9 13:07:36

mark
AVR 汇编 机器码

zhangchaoying 发表于 2014-8-9 13:22:55

看4楼吧

zhangchaoying 发表于 2014-8-9 13:23:20

看4楼吧,重新写了一下

hungrywolf1987 发表于 2014-8-9 14:33:48

zhangchaoying 发表于 2014-8-9 12:34
首先,楼主那个图不对,英文版指令集命名法不是这样,建议看英文版。

可以这么理解:当源寄存器Rr ...

谢谢,我正在看

alias 发表于 2014-8-9 15:09:20

Rd, Rr是指寄存器 0~31
Rd3 是指寄存器Rd的第3位
R 是指指令执行后的结果
R3 是指指令执行后的结果的第3位
/R3 是指指令执行后的结果的第3位取反

hungrywolf1987 发表于 2014-8-11 16:37:16

alias 发表于 2014-8-9 15:09
Rd, Rr是指寄存器 0~31
Rd3 是指寄存器Rd的第3位
R 是指指令执行后的结果


真专业!!谢谢!!
页: [1]
查看完整版本: 关于AVR的汇编指令和对标志位的影响问题