SPO600 Lab3 - 수학 랩 업데이트 만화경
이 프로젝트에서는 화살표 키를 누를 때 화면의 각 분기에 동일한 모양을 그리는 프로젝트를 만들어야 했습니다. 이것은 코드입니다:
define POINTER $10 ;ptr: start of row
define POINTER_H $11
define ROW $20 ;current row
define COL $21 ; current column
define DOT $01 ; dot colour location
define CURSOR $05 ; green colour
setup: lda #$0f ; initial ROW,COL
sta ROW
sta COL
LDA #$01
STA DOT
draw: jsr draw_cursor
getkey: lda $ff ; get the keystroke
ldx #$00 ; clear the key buffer
stx $ff
cmp #$30
bmi getkey
cmp #$40
bpl continue
SEC
sbc #$30
tay
lda color_pallete, y
sta DOT
jmp done
continue: cmp #$43
beq clear
cmp #$63
beq clear
cmp #$80
bmi getkey
cmp #$84
bpl getkey
pha
lda DOT
sta (POINTER),y
jsr draw_on_quads
pla
cmp #$80
bne check1
dec ROW
jmp done
check1: cmp #$81 ; right key
bne check2
inc COL ; increment COL
jmp done
check2: cmp #$82 ; down key
bne check3
inc ROW ; increment ROW
jmp done
check3: cmp #$83 ; left key
bne done
dec COL ; decrement COL
clc
bcc done
clear: lda table_low ; clear screen
sta POINTER
lda table_high
sta POINTER_H
ldy #$00
tya
c_loop: sta (POINTER),y
iny
bne c_loop
inc POINTER_H
ldx POINTER_H
cpx #$06
bne c_loop
done: clc
bcc draw
draw_cursor:
lda ROW
and #$0f
sta ROW
lda COL
and #$0f
sta COL
ldy ROW
lda table_low,y
sta POINTER
lda table_high,y
sta POINTER_H
ldy COL
lda #CURSOR
sta (POINTER),y
rts
draw_on_quads:
LDA POINTER
PHA
LDA POINTER_H
PHA
LDA #$10
CLC
SBC COL
CLC
ADC #$10
TAY
LDA DOT
STA (POINTER),y
TYA
PHA
lda #$10
CLC
SBC ROW
CLC
ADC #$10
TAY
lda table_low,y
sta POINTER
lda table_high,y
sta POINTER_H
ldy COL
lda DOT
sta (POINTER),y
PLA
TAY
lda DOT
sta (POINTER),y
PLA
STA POINTER_H
PLA
STA POINTER
RTS
table_high:
dcb $02,$02,$02,$02,$02,$02,$02,$02
dcb $03,$03,$03,$03,$03,$03,$03,$03
dcb $04,$04,$04,$04,$04,$04,$04,$04
dcb $05,$05,$05,$05,$05,$05,$05,$05,
table_low:
dcb $00,$20,$40,$60,$80,$a0,$c0,$e0
dcb $00,$20,$40,$60,$80,$a0,$c0,$e0
dcb $00,$20,$40,$60,$80,$a0,$c0,$e0
dcb $00,$20,$40,$60,$80,$a0,$c0,$e0
color_pallete:
dcb $01,$02,$03,$04,$05,$06,$07,$08,$09,$0a
다음은 결과의 샘플입니다.
반사
이 실습에서는 실제로 완전한 기능을 갖춘 프로그램을 작업했으며 이 프로그램은 사용자의 입력을 받아 다이어그램을 그릴 수 있습니다. 이 실습을 마친 후 서브루틴 작업 방법과 어셈블리 언어의 구문 및 논리를 깊이 있게 이해하는 방법을 배웠습니다. 어셈블리 언어는 메모리와 레지스터에 자주 명시적으로 액세스하는 저수준 프로그래밍 언어입니다. 이 연습을 통해 앞으로 6502 어셈블리 언어를 더 쉽게 작업할 수 있기를 바랍니다.
Reference
이 문제에 관하여(SPO600 Lab3 - 수학 랩 업데이트 만화경), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/qzhang125/spo600-lab3-math-lab-update-kaleidoscope-5b2i텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)