Professional Documents
Culture Documents
Untitled
Untitled
程式開始
➝副程式READ➝副程式INLOOP➝主程式
➝副程式TEMPO➝主程式➝TEMP#0➝X#0➝副程式CLOOP➝主程式➝NUM1儲存TEMP
➝副程式TEMPO➝主程式➝TEMP#0➝X#3➝副程式CLOOP➝主程式➝NUM2儲存TEMP
➝副程式TEMPO➝主程式➝TEMP#0➝X#6➝副程式CLOOP➝主程式➝NUM3儲存TEMP
➝副程式TEMPO➝主程式➝TEMP#0➝X#9➝副程式CLOOP➝主程式➝NUM4儲存TEMP
➝副程式TEMPO➝主程式➝TEMP#0➝X#12➝副程式CLOOP➝主程式➝NUM5儲存TEMP
➝副程式TEMPO➝主程式➝TEMP#0➝X#15➝副程式CLOOP➝主程式➝NUM6儲存TEMP
➝副程式TEMPO➝主程式➝TEMP#0➝X#18➝副程式CLOOP➝主程式➝NUM7儲存TEMP
➝副程式TEMPO➝主程式➝TEMP#0➝X#21➝副程式CLOOP➝主程式➝NUM8儲存TEMP
➝TEMP儲存NUM1
➝副程式BINLOOP➝主程式➝BIN1儲存BINT
➝副程式BINLOOP➝主程式➝BIN2儲存BINT
➝副程式BINLOOP➝主程式➝BIN3儲存BINT
➝副程式BINLOOP➝主程式➝BIN4儲存BINT
➝副程式BINLOOP➝主程式➝BIN5儲存BINT
➝副程式BINLOOP➝主程式➝BIN6儲存BINT
➝副程式BINLOOP➝主程式➝BIN7儲存BINT
➝副程式BINLOOP➝主程式➝BIN8儲存BINT
輸出1
➝CTRLSW儲存NUM1➝副程式OUTLOOP➝主程式
輸出2
➝COUNT#0
副程式ODDLOOP➝A#NUM1➝副程式COUNTADD
➝A#NUM1➝
➝A#NUM2➝副程式ODDLOOP➝A#NUM2➝副程式COUNTADD
➝A#NUM3➝副程式ODDLOOP➝A#NUM3➝副程式COUNTADD
➝A#NUM4➝副程式ODDLOOP➝A#NUM4➝副程式COUNTADD
➝A#NUM5➝副程式ODDLOOP➝A#NUM5➝副程式COUNTADD
➝A#NUM6➝副程式ODDLOOP➝A#NUM6➝副程式COUNTADD
➝A#NUM7➝副程式ODDLOOP➝A#NUM7➝副程式COUNTADD
➝A#NUM8➝副程式ODDLOOP➝A#NUM8➝副程式COUNTADD➝主程式
➝COUNT⽐較➝判斷⼤於#4➝迴圈OPENDOOR➝其他➝迴圈CLOSEDOOR
➝副程式OUTLOOP➝主程式
輸出3
➝A#0➝A+NUM1➝A+NUM3➝A+NUM5➝A+NUM7➝TEMP儲存A
➝A#0➝A+NUM2➝A+NUM4➝A+NUM6➝A+NUM8
➝A⽐較➝判斷⼤於TEMP➝迴圈BELLR➝其他➝迴圈BELLF
➝副程式OUTLOOP➝主程式
系統程式 1
輸出4
⽐較➝判斷⼩於#1➝迴圈LIGHTN➝其他➝迴圈LIGHTF
➝BIN6
➝副程式OUTLOOP➝主程式
變數
➝檔案
➝暫存
➝數字
➝⼆進制
程式結束
程式開始
A2 START 4096
➝ 副程式READ➝副程式INLOOP➝主程式
FIRST JSUB READ
READ (X暫存器#0➝T暫存器#23)
READ LDX #0
LDT #23
INLOOP (TRYDEV➝READDEV➝儲存RECORD➝X+1➝判斷⼩於T#23)
INLOOP TD INDEV
JEQ INLOOP
RD INDEV
STCH RECORD,X
TIXR T
JLT INLOOP
RSUB
➝ 副程式
TEMPO➝ 主程式➝TEMP#0➝X#0➝副程式CLOOP➝主程式
➝NUM1 儲存TEMP
JSUB TEMPO
TEMPO (TEMP#0)
TEMPO LDA #0
STA TEMP
RSUB
LDX #0
JSUB CLOOP
系統程式 2
CLOOP(讀⼊RECORD➝RECORD-48➝RECORD*10➝RECORD儲存
TEMP➝X+1➝讀⼊RECORD➝RECORD-48➝RECORD+TEMP➝RECORD儲存
TEMP)
LDA TEMP
STA NUM1
➝ 副程式
TEMPO➝ 主程式➝TEMP#0➝X#3➝副程式CLOOP➝主程式
➝NUM2 儲存TEMP
JSUB TEMPO
TEMPO (TEMP#0)
TEMPO LDA #0
STA TEMP
RSUB
LDX #3
JSUB CLOOP
CLOOP (讀⼊RECORD➝RECORD-48➝RECORD*10➝RECORD儲存
TEMP➝X+1➝ 讀⼊RECORD➝RECORD-48➝RECORD+TEMP➝RECORD儲存
)
TEMP
系統程式 3
ADD TEMP
STA TEMP
RSUB
LDA TEMP
STA NUM2
➝ 副程式
TEMPO➝ 主程式➝TEMP#0➝X#6➝副程式CLOOP➝主程式
➝NUM3 儲存TEMP
JSUB TEMPO
TEMPO (TEMP#0)
TEMPO LDA #0
STA TEMP
RSUB
LDX #6
JSUB CLOOP
CLOOP (讀⼊RECORD➝RECORD-48➝RECORD*10➝RECORD儲存
TEMP➝X+1➝ 讀⼊RECORD➝RECORD-48➝RECORD+TEMP➝RECORD儲存
)
TEMP
LDA TEMP
STA NUM3
➝ 副程式
TEMPO➝ 主程式➝TEMP#0➝X#9➝副程式CLOOP➝主程式
➝NUM4 儲存TEMP
JSUB TEMPO
TEMPO (TEMP#0)
系統程式 4
TEMPO LDA #0
STA TEMP
RSUB
LDX #9
JSUB CLOOP
CLOOP (讀⼊RECORD➝RECORD-48➝RECORD*10➝RECORD儲存
TEMP➝X+1➝ 讀⼊RECORD➝RECORD-48➝RECORD+TEMP➝RECORD儲存
)
TEMP
CLOOP LDCH RECORD,X
SUB #48
MUL #10
STA TEMP
TIX #0
LDCH RECORD,X
SUB #48
ADD TEMP
STA TEMP
RSUB
LDA TEMP
STA NUM4
➝副程式TEMPO➝主程式➝TEMP#0➝X#12➝副程式CLOOP➝主程
式➝NUM5儲存TEMP
JSUB TEMPO
TEMPO (TEMP#0)
TEMPO LDA #0
STA TEMP
RSUB
LDX #12
JSUB CLOOP
CLOOP (讀⼊RECORD➝RECORD-48➝RECORD*10➝RECORD儲存
TEMP➝X+1➝ 讀⼊RECORD➝RECORD-48➝RECORD+TEMP➝RECORD儲存
)
TEMP
系統程式 5
MUL #10
STA TEMP
TIX #0
LDCH RECORD,X
SUB #48
ADD TEMP
STA TEMP
RSUB
LDA TEMP
STA NUM5
➝副程式TEMPO➝主程式➝TEMP#0➝X#15➝副程式CLOOP➝主程
式➝NUM6儲存TEMP
JSUB TEMPO
TEMPO (TEMP#0)
TEMPO LDA #0
STA TEMP
RSUB
LDX #15
JSUB CLOOP
CLOOP (讀⼊RECORD➝RECORD-48➝RECORD*10➝RECORD儲存
TEMP➝X+1➝ 讀⼊RECORD➝RECORD-48➝RECORD+TEMP➝RECORD儲存
)
TEMP
LDA TEMP
STA NUM6
系統程式 6
➝副程式TEMPO➝主程式➝TEMP#0➝X#18➝副程式CLOOP➝主程
式➝NUM7儲存TEMP
JSUB TEMPO
TEMPO (TEMP#0)
TEMPO LDA #0
STA TEMP
RSUB
LDX #18
JSUB CLOOP
CLOOP (讀⼊RECORD➝RECORD-48➝RECORD*10➝RECORD儲存
TEMP➝X+1➝ 讀⼊RECORD➝RECORD-48➝RECORD+TEMP➝RECORD儲存
)
TEMP
LDA TEMP
STA NUM7
➝副程式TEMPO➝主程式➝TEMP#0➝X#21➝副程式CLOOP➝主程
式➝NUM8儲存TEMP
JSUB TEMPO
TEMPO (TEMP#0)
TEMPO LDA #0
STA TEMP
RSUB
LDX #21
JSUB CLOOP
系統程式 7
CLOOP (讀⼊RECORD➝RECORD-48➝RECORD*10➝RECORD儲存
TEMP➝X+1➝ 讀⼊RECORD➝RECORD-48➝RECORD+TEMP➝RECORD儲存
TEMP )
CLOOP LDCH RECORD,X
SUB #48
MUL #10
STA TEMP
TIX #0
LDCH RECORD,X
SUB #48
ADD TEMP
STA TEMP
RSUB
LDA TEMP
STA NUM8
➝TEMP 儲存NUM1
LDA NUM1
STA TEMP
➝ 副程式BINLOOP➝主程式➝BIN1儲存BINT
JSUB BINLOOP
(
BINLOOP TEMP/2➝COUNT 儲存TEMP➝TEMP-COUNT➝TEMP-COUNT➝BINT
儲存 TEMP➝TEMP 儲存
COUNT )
BINLOOP LDA TEMP
DIV #2
STA COUNT
LDA TEMP
SUB COUNT
SUB COUNT
STA BINT
LDA COUNT
STA TEMP
JSUB
LDA BINT
STA BIN1
系統程式 8
➝ 副程式BINLOOP➝主程式➝BIN2儲存BINT
JSUB BINLOOP
(
BINLOOP TEMP/2➝COUNT 儲存TEMP➝TEMP-COUNT➝TEMP-COUNT➝BINT
儲存 TEMP➝TEMP 儲存
COUNT )
BINLOOP LDA TEMP
DIV #2
STA COUNT
LDA TEMP
SUB COUNT
SUB COUNT
STA BINT
LDA COUNT
STA TEMP
JSUB
LDA BINT
STA BIN2
➝ 副程式BINLOOP➝主程式➝BIN3儲存BINT
JSUB BINLOOP
(
BINLOOP TEMP/2➝COUNT 儲存TEMP➝TEMP-COUNT➝TEMP-COUNT➝BINT
儲存 TEMP➝TEMP 儲存
COUNT )
BINLOOP LDA TEMP
DIV #2
STA COUNT
LDA TEMP
SUB COUNT
SUB COUNT
STA BINT
LDA COUNT
STA TEMP
JSUB
LDA BINT
STA BIN3
➝ 副程式BINLOOP➝主程式➝BIN4儲存BINT
系統程式 9
JSUB BINLOOP
(
BINLOOP TEMP/2➝COUNT儲存TEMP➝TEMP-COUNT➝TEMP-COUNT➝BINT
儲存 TEMP➝TEMP 儲存
COUNT)
BINLOOP LDA TEMP
DIV #2
STA COUNT
LDA TEMP
SUB COUNT
SUB COUNT
STA BINT
LDA COUNT
STA TEMP
JSUB
LDA BINT
STA BIN4
➝ 副程式BINLOOP➝主程式➝BIN5儲存BINT
JSUB BINLOOP
(
BINLOOP TEMP/2➝COUNT儲存TEMP➝TEMP-COUNT➝TEMP-COUNT➝BINT
儲存 TEMP➝TEMP 儲存
COUNT)
BINLOOP LDA TEMP
DIV #2
STA COUNT
LDA TEMP
SUB COUNT
SUB COUNT
STA BINT
LDA COUNT
STA TEMP
JSUB
LDA BINT
STA BIN5
➝ 副程式BINLOOP➝主程式➝BIN6儲存BINT
JSUB BINLOOP
系統程式 10
(
BINLOOP TEMP/2➝COUNT 儲存TEMP➝TEMP-COUNT➝TEMP-COUNT➝BINT
儲存 TEMP➝TEMP 儲存
COUNT )
BINLOOP LDA TEMP
DIV #2
STA COUNT
LDA TEMP
SUB COUNT
SUB COUNT
STA BINT
LDA COUNT
STA TEMP
JSUB
LDA BINT
STA BIN6
➝ 副程式BINLOOP➝主程式➝BIN7儲存BINT
JSUB BINLOOP
(
BINLOOP TEMP/2➝COUNT 儲存TEMP➝TEMP-COUNT➝TEMP-COUNT➝BINT
儲存 TEMP➝TEMP 儲存
COUNT )
BINLOOP LDA TEMP
DIV #2
STA COUNT
LDA TEMP
SUB COUNT
SUB COUNT
STA BINT
LDA COUNT
STA TEMP
JSUB
LDA BINT
STA BIN7
➝ 副程式BINLOOP➝主程式➝BIN8儲存BINT
JSUB BINLOOP
(
BINLOOP TEMP/2➝COUNT 儲存TEMP➝TEMP-COUNT➝TEMP-COUNT➝BINT
儲存 TEMP➝TEMP 儲存
COUNT )
系統程式 11
BINLOOP LDA TEMP
DIV #2
STA COUNT
LDA TEMP
SUB COUNT
SUB COUNT
STA BINT
LDA COUNT
STA TEMP
JSUB
LDA BINT
STA BIN8
輸出1
把CTRLSW的狀態設成第⼀個數,輸出到 06號設備
➝CTRLSW 儲存NUM1➝副程式OUTLOOP➝主程式
LDA NUM1
STA CTRLSW
JSUB OUTLOOP
OUTLOOP (TRYDEV➝WRITEDEV)
OUTLOOP TD OUTDEV
JEQ OUTLOOP
LDCH CTRLSW
WD OUTDEV
RSUB
輸出2
若此8個數中,奇數的個數⽐偶數的個數多請開⾨,否則請關⾨
➝COUNT#0
LDA #0
STA COUNT
➝A#NUM1➝ 副程式ODDLOOP➝A#NUM1➝副程式COUNTADD
系統程式 12
LDA NUM1
JSUB ODDLOOP
ODDLOOP (NUM1/2➝NUM1*2➝TEMP儲存NUM1)
ODDLOOP DIV #2
MUL #2
STA TEMP
LDA NUM1
JSUB COUNTADD
COUNTADD (NUM1-TEMP➝NUM1+COUNT➝COUNT儲存NUM1)
COUNTADD SUB TEMP
ADD COUNT
STA COUNT
➝A#NUM2➝ 副程式ODDLOOP➝A#NUM2➝副程式COUNTADD
LDA NUM2
JSUB ODDLOOP
ODDLOOP (NUM2/2➝NUM2*2➝TEMP儲存NUM2)
ODDLOOP DIV #2
MUL #2
STA TEMP
LDA NUM2
JSUB COUNTADD
COUNTADD (NUM2-TEMP➝NUM2+COUNT➝COUNT儲存NUM2)
COUNTADD SUB TEMP
ADD COUNT
STA COUNT
➝A#NUM3➝ 副程式ODDLOOP➝A#NUM3➝副程式COUNTADD
LDA NUM3
JSUB ODDLOOP
ODDLOOP (NUM3/2➝NUM3*2➝TEMP儲存NUM3)
ODDLOOP DIV #2
MUL #2
系統程式 13
STA TEMP
LDA NUM3
JSUB COUNTADD
COUNTADD (NUM3-TEMP➝NUM3+COUNT➝COUNT儲存NUM3)
COUNTADD SUB TEMP
ADD COUNT
STA COUNT
➝A#NUM4➝ 副程式ODDLOOP➝A#NUM4➝副程式COUNTADD
LDA NUM4
JSUB ODDLOOP
ODDLOOP (NUM4/2➝NUM4*2➝TEMP儲存NUM4)
ODDLOOP DIV #2
MUL #2
STA TEMP
LDA NUM4
JSUB COUNTADD
COUNTADD (NUM4-TEMP➝NUM4+COUNT➝COUNT儲存NUM4)
COUNTADD SUB TEMP
ADD COUNT
STA COUNT
➝A#NUM5➝ 副程式ODDLOOP➝A#NUM5➝副程式COUNTADD
LDA NUM5
JSUB ODDLOOP
ODDLOOP (NUM5/2➝NUM5*2➝TEMP儲存NUM5)
ODDLOOP DIV #2
MUL #2
STA TEMP
LDA NUM5
JSUB COUNTADD
COUNTADD (NUM5-TEMP➝NUM5+COUNT➝COUNT儲存NUM5)
系統程式 14
COUNTADD SUB TEMP
ADD COUNT
STA COUNT
➝A#NUM6➝ 副程式ODDLOOP➝A#NUM6➝副程式COUNTADD
LDA NUM6
JSUB ODDLOOP
ODDLOOP (NUM6/2➝NUM6*2➝TEMP儲存NUM6)
ODDLOOP DIV #2
MUL #2
STA TEMP
LDA NUM6
JSUB COUNTADD
COUNTADD (NUM6-TEMP➝NUM6+COUNT➝COUNT儲存NUM6)
COUNTADD SUB TEMP
ADD COUNT
STA COUNT
➝A#NUM7➝ 副程式ODDLOOP➝A#NUM7➝副程式COUNTADD
LDA NUM7
JSUB ODDLOOP
ODDLOOP (NUM7/2➝NUM7*2➝TEMP儲存NUM7)
ODDLOOP DIV #2
MUL #2
STA TEMP
LDA NUM7
JSUB COUNTADD
COUNTADD (NUM7-TEMP➝NUM7+COUNT➝COUNT儲存NUM7)
COUNTADD SUB TEMP
ADD COUNT
STA COUNT
➝A#NUM8➝ 副程式ODDLOOP➝A#NUM8➝副程式COUNTADD➝主
程式
系統程式 15
LDA NUM8
JSUB ODDLOOP
ODDLOOP (NUM8/2➝NUM8*2➝TEMP儲存NUM8)
ODDLOOP DIV #2
MUL #2
STA TEMP
LDA NUM8
JSUB COUNTADD
COUNTADD (NUM8-TEMP➝NUM8+COUNT➝COUNT儲存NUM8)
COUNTADD SUB TEMP
ADD COUNT
STA COUNT
➝COUNT ➝ ⽐較 判斷⼤於#4➝迴圈OPENDOOR➝其他➝迴圈
CLOSEDOOR
LDA COUNT
COMP #4
JGT OPEND
OPEND (BIN⽐較➝判斷⼩於#1➝迴圈NUMADDD)
OPEND LDA BIN1
COMP #1
JLT NUMADDD
NUMADDD (CTRLSW+1)
NUMADDD LDA CTRLSW
ADD #1
STA CTRLSW
J CLOSED
CLOSED (BIN⽐較➝判斷⼤於#0➝迴圈NUMSUBD)
CLOSED LDA BIN1
COMP #0
JGT NUMSUBD
NUMSUBD (CTRLSW-1)
系統程式 16
NUMSUBD LDA CTRLSW
SUB #1
STA CTRLSW
➝ 副程式OUTLOOP➝主程式
JSUB OUTLOOP
OUTLOOP (TRYDEV➝WRITEDEV)
OUTLOOP TD OUTDEV
JEQ OUTLOOP
LDCH CTRLSW
WD OUTDEV
RSUB
輸出3
把第1、3、5、7個數相加,若⽐第2、4、6、8個數相加的和⼤請響鈴 ,否則請關鈴
➝A#0➝A+NUM1➝A+NUM3➝A+NUM5➝A+NUM7➝TEMP 儲存A
LDA #0
ADD NUM1
ADD NUM3
ADD NUM5
ADD NUM7
STA TEMP
➝A#0➝A+NUM2➝A+NUM4➝A+NUM6➝A+NUM8
LDA #0
ADD NUM2
ADD NUM4
ADD NUM6
ADD NUM8
➝A ⽐較➝判斷⼤於TEMP➝迴圈BELLR➝其他➝迴圈BELLF
COMP TEMP
JGT BELLR
BELLR (BIN⽐較➝判斷⼩於#1➝迴圈NUMADDB)
系統程式 17
BELLR LDA BIN4
COMP #1
JLT NUMADDB
NUMADDB (CTRLSEW+8)
NUMADDB LDA CTRLSW
ADD #8
STA CTRLSW
J BELLF
BELLF (BIN⽐較➝判斷⼤於#0➝迴圈NUMSUBB)
BELLF LDA BIN1
COMP #0
JGT NUMSUBB
NUMSUBB (CTRLSEW-8)
NUMSUBB LDA CTRLSW
SUB #8
STA CTRLSW
➝ 副程式OUTLOOP➝主程式
JSUB OUTLOOP
OUTLOOP (TRYDEV➝WRITEDEV)
OUTLOOP TD OUTDEV
JEQ OUTLOOP
LDCH CTRLSW
WD OUTDEV
RSUB
輸出4
把燈切到另⼀個⽅向
➝BIN6 ⽐較➝判斷⼩於#1➝迴圈LIGHTN➝其他➝迴圈LIGHTF
LDA BIN6
COMP #1
JLT LIGHTN
LIGHTN (CTRLSW+32)
系統程式 18
LIGHTN LDA CTRLSW
ADD #32
STA CTRLSW
J LIGHTF
LIGHTF (CTRLSW-32)
LIGHTF LDA CTRLSW
SUB #32
STA CTRLSW
➝ 副程式OUTLOOP➝主程式
JSUB OUTLOOP
OUTLOOP (TRYDEV➝WRITEDEV)
OUTLOOP TD OUTDEV
JEQ OUTLOOP
LDCH CTRLSW
WD OUTDEV
RSUB
變數
➝ 檔案
INDEV BYTE X'05'
OUTDEV BYTE X'06'
RECORD RESB 25
➝ 暫存
TEMP RESW 1
CTRLSW RESW 1
COUNT RESW 1
➝ 數字
NUM1 RESW 1
NUM2 RESW 1
NUM3 RESW 1
NUM4 RESW 1
NUM5 RESW 1
系統程式 19
NUM6 RESW 1
NUM7 RESW 1
NUM8 RESW 1
➝ ⼆進制
BIN1 RESW 1
BIN2 RESW 1
BIN3 RESW 1
BIN4 RESW 1
BIN5 RESW 1
BIN6 RESW 1
BIN7 RESW 1
BIN8 RESW 1
程式結束
END FIRST
系統程式 20