015551 ランダム
 HOME | DIARY | PROFILE 【フォローする】 【ログイン】

おっさんのAVRアセンブラ活用術

おっさんのAVRアセンブラ活用術

【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! --/--
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x

PR

Keyword Search

▼キーワード検索

Profile

ひろゆき1369

ひろゆき1369

Rakuten Card

Calendar

Favorite Blog

まだ登録されていません

Comments

コメントに書き込みはありません。

Freepage List

Headline News

Mar 18, 2011
XML
カテゴリ:カテゴリ未分類
AVRでは8bit同士の掛け算は普通に命令が用意されてますが16bit×8bitができなかった・・
というわけでつくりました。といっても簡単にするために16bit×0~10までです。
2倍4倍などはLSLやROLで処理できるので組み合わせることで好きな整数倍が利用できます。



;整数倍を処理するr29:r28に掛けられる方 r16に0x0Aまでの倍数
;r19;r31:r30に答えが返る 24bitリターン
go_mul:
cpi r16,0x0B ;被乗算回数が10以下か?
brcc mulloopout ;
push r0
push r1
push r16
push r17
push r18
ldi r17,0xff ;定数
ldi r18,0x00 ;定数
mul r28,r16 ;xl*a=b
movw r30,r0 ;r31:r30<r1:r0
mul r29,r16 ;xh*a=c
mulloopin:
add r30,r0 ;
adc r31,r1 ;b+c
adc r19,r18 ;
mov r16,r1 ;r16=ch
mul r0,r17 ;cl*0xff=dl
add r30,r0 ;
adc r31,r1 ;解+dl
adc r19,r18 ;
mul r16,r17 ;ch*0xff=dh
brne mulloopin ;
mulloopout:
pop r18
pop r17
pop r16
pop r1
pop r0
ret





お気に入りの記事を「いいね!」で応援しよう

Last updated  Mar 18, 2011 06:29:47 PM
コメント(0) | コメントを書く



© Rakuten Group, Inc.