課題1プログラム例(その1) (出力ポート:ポート8の0〜3bit) [ヒント1]LP:〜BRA LPの間に全ての手順を記述しているだけ。 [ヒント2].CPUから.SECTIONまでは変更する必要はない。以後のプログラムで全て共通。 [ヒント3]ポート8を使用するので.EQUでメモリアドレスとメモリアドレスシンボルを定義している。 以後のプログラムで全て共通。 .CPU 300HN .SECTION VECTOR,DATA,LOCATE=H'0 .DATA.L START .SECTION PROG,CODE,LOCATE=H'34 START: MOV.L #H'0000FF80,SP MOV.B #H'0F,R0L MOV.B R0L,@PCR8 LP: MOV.B #H'01,R1L BSR TIM1 SHLL R1L BSR TIM1 SHLL R1L BSR TIM1 SHLL R1L BSR TIM1 BRA LP TIM1: MOV.B R1L,@PDR8 MOV.L #H'00100000,ER0 ON: DEC.L #H'00000001,ER0 BNE ON RTS PCR8: .EQU H'FFEB PDR8: .EQU H'FFDB .END 課題1プログラム例(その2) (出力ポート:ポート8の0〜3bit) [ヒント]LP:〜BRA LPの間に全ての手順を記述しているが、その1より汎用性があるように変更。 .CPU 300HN .SECTION VECTOR,DATA,LOCATE=H'0 .DATA.L START .SECTION PROG,CODE,LOCATE=H'34 START: MOV.L #H'0000FF80,SP MOV.B #H'0F,R0L MOV.B R0L,@PCR8 LP: MOV.B #H'01,R1L MOV.B #H'04,R2L BSR L BRA LP L: BSR TIM SHLL R1L DEC.B R2L BNE L RTS TIM: MOV.B R1L,@PDR8 MOV.L #H'00100000,ER0 ON: DEC.L #H'00000001,ER0 BNE ON RTS PCR8: .EQU H'FFEB PDR8: .EQU H'FFDB .END