アセンブラの練習で困ってます
下記のようなアセンブラのプログラムの勉強をしています。初心者。
(ベクターテーブルとかは省略してます)
この状態であれば、tablに書いたデータどおりにLEDが順番に点灯します。
しかしtablの内容を書き換えると、点灯しなくなります。命令語の意味を
調べたりしたのですが、わかりません。どなたか理由を教えてください。
(例えば)
10000000
01000000
00100000
00010000
10000000
01000000
00100000
・・・・
プログラム抜粋
reset:
mov.l #stack,sp
bsr initio
begin:
mov.l #tabl,er1 ; 点灯データ表
mov.w #14,r2 ; 点灯データ表のデータ数
loop: mov.b @er1+,r0l
not.b r0l
mov.b r0l,@p1dr
bsr wait
dec.w #1,r2
bne loop
bra begin
;
tabl: .data.b b'10000000
.data.b b'01000000
.data.b b'00100000
.data.b b'00010000
.data.b b'00001000
.data.b b'00000100
.data.b b'00000010
.data.b b'00000001
.data.b b'00000010
.data.b b'00000100
.data.b b'00001000
.data.b b'00010000
.data.b b'00100000
.data.b b'01000000
;
initio:
mov.b #h'ff,r0l ; ポート1を出力に設定
mov.b r0l,@p1ddr
rts
;
wait: mov.l er0,@-sp
mov.l #h'100000,er0
wait1: nop
dec.l #1,er0
bne wait1
mov.l @sp+,er0
rts
お礼
回答頂きありがとうございます!! GNUSim8085でやってみたら、その通り動きました!助かります。