命令セットに騙される前のバカな私を、助けてあげてくれないかな?

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

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です