SPO600 Lab2 - 6502 조립언어 실습실

2495 단어
lab2에서는 6502 어셈블리 언어를 사용하여 4가지 색상으로 비트맵 화면 주위에 테두리를 그릴 것입니다.



소스 코드

    LDA #$00    ; set a pointer at $40 to point to $0200
    STA $40
    LDA #$02
    STA $41

    LDA #$05    ; colour number: green
    LDY #$00    ; set index to 0

; draw green line at the top of the bitmap screen

top:    
    STA ($40),y ; set pixel at the address (pointer)+Y
    INY         ; increment index
    CPY #$20    ; 
    BNE top         ; continue until done the page


    LDA #$05    ; set page to 5
    STA $41     ; 

    LDA #$06    ; colour number: blue
    LDY #$E0    ; set index to starting index of last line in pg.5

; draw blue line at the bottom of the bitmap screen

bottom: 
    STA ($40),y ; set pixel at the address (pointer)+Y
    INY         ; increment index
    CPY #$00    ; 
    BNE bottom      ; continue until done the page


    LDA #$02    ; set page to 2
    STA $41     ; 

    LDY #$00    ; set index to starting index of pg.2

; draw yellow line to the left and 
; purple line to the right of the bitmap screen

sides:  
    CLC     ; clear carry to prevent accumulating of a value
    LDA #$07    ; colour number: yellow
    STA ($40),y ; set pixel at the address (pointer)+Y
    TYA     ; transfer y to a
    ADC #$1F    ; increment memory (a) by 1f (32 in hex = 1 line)
    TAY     ; transfer a to y
    LDA #$04    ; colour number: purple
    STA ($40),y ; set pixel at the address (pointer)+Y
    INY     ; increment y (to first index of next line)
    CPY #$00    ; 
    BNE sides   ; continue until done the page

    INC $41     ; increment 1 page
    LDX $41     ; get current page number
    CPX #$06    ; compare with 6
    BNE sides   ; continue until done the page


테두리를 그리는 과정을 세 부분으로 나누었습니다.
  • 루프 "top"은 비트맵 화면 상단에 녹색 테두리를 그립니다.

  • loop "bottom은 시작 인덱스를 $05E0으로 설정하여 비트맵 화면의 아래쪽에 파란색 테두리를 그립니다.

  • 루프 "sides"는 두 색상 사이를 계속 전환하고 현재 줄의 인덱스를 증가시켜 비트맵 화면의 왼쪽에 노란색 테두리를, 오른쪽에 보라색 테두리를 그립니다.

  • 좋은 웹페이지 즐겨찾기