■STEP4 解答例
 以下に示す内容のプログラムを作成し,その「フローチャート」と「ソースコード」を示しなさい.

プロジェクト名 step04
内容 変数 summidsum を定義し,sum には 1 から 10 までの総和をループ処理により求める.
midsum には,7を加算した時点の sum の内容(途中結果)を格納する.

◆解答例
 後判定アルゴリズムを採用した例.

フローチャート例 ソースコード例
;***********************************************************
;       step04 for PIC16F84A
;       step04.asm, H. OSADA, Nov. 2025
;***********************************************************
;
;=================================================
;  definitions
;=================================================
;- hardware -----------------------------------
        LIST    P=PIC16F84A
        #INCLUDE "P16F84A.INC"
;       __CONFIG _HS_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF
;
;- constant label -----------------------------
MAX     EQU     00AH
MIN     EQU     001H
MID     EQU     007H
;
;- file register ------------------------------
        CBLOCK  0CH
            sum
            midsum
            counter
        ENDC
;
;=================================================
;  run start
;=================================================
;- reset start --------------------------------
        ORG     0
        GOTO    INIT
;
;- interrupt start ----------------------------
        ORG     4
        GOTO    ISR
;
;- initialize ---------------------------------
INIT
        CLRF    sum
        CLRF    midsum
        CLRF    counter
;
;=================================================
;  main routine
;=================================================
MAIN
        INCF    counter,F
        MOVF    counter,W
        ADDWF   sum,F
        XORLW   MAX
        BTFSC   STATUS,Z
        GOTO    LOOP_END
        MOVF    counter,W
        XORLW   MID
        BTFSS   STATUS,Z
        GOTO    MAIN
        MOVF    sum,W
        MOVWF   midsum
        GOTO    MAIN
LOOP_END
        GOTO    LOOP_END
;
;=================================================
;  interrupt service routine
;=================================================
ISR
;** procedure
;
;=================================================
;  subroutine
;=================================================
;** procedure
;
;***********************************************************
        END