AS「騙すという行為自体、僕たちには理解できない。
仕様の理解不足から生じた判断ミスを後悔する時、何故か人間は、アセンブラを憎悪するんだよね」
16ビットのデータに1を加算するとき、AVRでは一気に16ビットデータを扱うことはできません。そのため、最初に下位8ビットに1を加算しキャリーフラグを見て上位8ビットに1を加算するか決めます。
AVRにはキャリー付き加算命令ADCがあるので下のように書きました。
R1が下位8ビット、R2が上位8ビットとする。
R0は0になっているとする。
INC R1
ADC R2, R0
しかし、これでは正しく動きません。なぜならINC命令ではキャリーフラグが変化しないからです。(証拠)
「みんな、みんな信じてたの。信じてたのに裏切られたの」
by Shiozaki