107 lines
1.8 KiB
NASM
107 lines
1.8 KiB
NASM
;; input
|
|
|
|
0D ; end of input
|
|
B9 06 ; 1721
|
|
D3 03 ; 979
|
|
6E 01 ; 366
|
|
2B 01 ; 299
|
|
A3 02 ; 675
|
|
B0 05 ; 1456
|
|
|
|
;; program
|
|
|
|
; start:
|
|
|
|
A2 01 ; LDX # 01
|
|
A0 01 ; LDY # 01
|
|
|
|
; loop:
|
|
|
|
; add16:
|
|
18 ; CLC i
|
|
B5 00 ; LDA zp,x 00
|
|
79 00 00 ; ADC a,y 00
|
|
85 AE ; STA zp AE
|
|
B5 01 ; LDA zp,x 01
|
|
79 01 00 ; ADC a,y 01
|
|
85 AF ; STA zp AF
|
|
|
|
; sub16
|
|
38 ; SEC i
|
|
A9 E4 ; LDA # E4
|
|
E5 AE ; SBC zp AE
|
|
D0 09 ; BNE r next
|
|
A9 07 ; LDA # 07
|
|
E5 AF ; SBC zp AF
|
|
D0 03 ; BNE r next
|
|
|
|
; goto multiply
|
|
4C 41 00 ; JMP a multiply
|
|
|
|
; next
|
|
E8 ; INX i
|
|
E8 ; INX i
|
|
E4 00 ; CPX zp 00
|
|
D0 DB ; BNE r loop
|
|
A2 01 ; LDX # 01
|
|
C8 ; INY i
|
|
C8 ; INY i
|
|
C4 00 ; CPY zp 00
|
|
D0 D3 ; BNE r loop
|
|
4C 0D 00 ; JMP a start
|
|
|
|
; multiply
|
|
|
|
B5 00 ; LDA zp,x 00
|
|
85 AE ; STA zp AE
|
|
B5 01 ; LDA zp,x 01
|
|
85 AF ; STA zp AF
|
|
|
|
B9 00 00 ; LDA a,y 00
|
|
AA ; TAX i
|
|
B9 01 00 ; LDA a,y 01
|
|
A8 ; TAY i
|
|
|
|
A9 00 ; LDA # 00
|
|
85 A8 ; STA zp A8
|
|
85 A9 ; STA zp A9
|
|
85 AA ; STA zp AA
|
|
|
|
; add16_24 @ 59
|
|
18 ; CLC i
|
|
A5 A8 ; LDA zp A8
|
|
65 AE ; ADC zp AE
|
|
85 A8 ; STA zp A8
|
|
|
|
A5 A9 ; LDA zp A9
|
|
65 AF ; ADC zp AF
|
|
85 A9 ; STA zp A9
|
|
|
|
A5 AA ; LDA zp AA
|
|
69 00 ; ADC # 00
|
|
85 AA ; STA zp AA
|
|
|
|
E0 00 ; CPX # 00
|
|
F0 04 ; BEQ r inc_y ; -> 74
|
|
CA ; DEX i
|
|
4C 59 00 ; JMP add16_24 ; -> 59
|
|
; inc_y
|
|
C0 00 ; CPY # 00
|
|
F0 05 ; BEQ r end ; -> 7d
|
|
CA ; DEX i
|
|
88 ; DEY i
|
|
4C 59 00 ; JMP add16_24 ; -> 59
|
|
|
|
; end
|
|
38 ; SEC i
|
|
A5 A8 ; LDA zp A8
|
|
E5 AE ; SBC zp AE
|
|
85 A8 ; STA zp A8
|
|
|
|
A5 A9 ; LDA zp A9
|
|
E5 AF ; SBC zp AF
|
|
85 A9 ; STA zp A9
|
|
|
|
; forever:
|
|
4C 8a 00 ; JMP a forever ; 8a
|