关于AVR的汇编指令和对标志位的影响问题
各位大侠好,今天在网上看到一个资料,关于汇编指令对标志位影响的文档,有个疑问:比如说ADD指令,对标志位H的影响是 “Rd3 · Rr3+Rr3 · R3 + R3 · Rd3 如果第3位有进位置1,否则清零”,这句话直接看懵了,其他的标志位解释也是百思不解,下面上截图和文档,求解惑,谢谢啦!!
好久没用AVR汇编了,H位是用于十进制调整吧,置不置1对一般操作没影响吧。 david1234 发表于 2014-8-8 20:50
好久没用AVR汇编了,H位是用于十进制调整吧,置不置1对一般操作没影响吧。 ...
谢谢,不看到这个文档,还没什么问题,但是看了就有问题了,“Rd3 · Rr3+Rr3 · R3 + R3 · Rd3”这段话直接看不懂···· 本帖最后由 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时,必定有进位。 zhangchaoying 发表于 2014-8-9 12:34
可以这么理解:只有在源寄存器第3位R3=1且目的寄存器第三位Rd3=1时,1+1=2,二进制运算肯定向第4位进位; ...
”Rd3 · Rr3+Rr3 · R3 + R3 · Rd3“ 是不是要代用什么数字进去啊? mark
AVR 汇编 机器码 看4楼吧 看4楼吧,重新写了一下 zhangchaoying 发表于 2014-8-9 12:34
首先,楼主那个图不对,英文版指令集命名法不是这样,建议看英文版。
可以这么理解:当源寄存器Rr ...
谢谢,我正在看 Rd, Rr是指寄存器 0~31
Rd3 是指寄存器Rd的第3位
R 是指指令执行后的结果
R3 是指指令执行后的结果的第3位
/R3 是指指令执行后的结果的第3位取反
alias 发表于 2014-8-9 15:09
Rd, Rr是指寄存器 0~31
Rd3 是指寄存器Rd的第3位
R 是指指令执行后的结果
真专业!!谢谢!!
页:
[1]