アセンブリ言語ランゲージラボ


こんにちは、これはSpo 600の研究室2です.

水平線を印刷する
この研究室での最初の仕事は、トップで緑の線を描き、一番下に青い線を描きます.
LDA #05             ; Color Green code
          LDY #$00      ; Position Index on First Line

TOP: 
          STA $0200,Y   ; Store color into the current Pixel
          INY           ; Go to the next pixel

          CPY #32       ; Check if it gets to the pixel 32
          BNE TOP  ; If it didn't hit pixel 32 yet, keep going
緑のピクセルをロードし、yの開始位置を$ 20.00で設定します.次に、現在の位置に色を格納し、yの値をチェックするためにループを設定します.
私たちは、同じ論理を使って、別の青い線を下に描きました.
LDA #06                  ; Color Blue Code
        LDY #$00         ; Position Index on Last Line

BOTTOM: 
             STA $05E0,Y; Store color into the current Pixel
             INY        ; Go to the next pixel by increase the value of Y
             CPY #32    ; Check if it gets to the pixel 32
       BNE BOTTOM  ; If it didn't reach pixel 32 yet, keep looping


垂直線を印刷する
番目のタスクでは、正方形の両側に2垂直線を印刷するつもりです.
    LDA #$00          
    STA $10
    LDA #$02
    STA $11
    LDY $00

LEFT: 
       LDA #$07     ; Set color Yellow
       STA ($10),Y

       LDA $10
       CLC
       ADC #$20
       STA $10

       LDA $11
       ADC #$00
       STA $11

       CMP #$06
       BNE LEFT
まず、ビデオメモリに2個のポインタを作り、$ 10と$ 11に設定します.
第二に、ループを設定します.ループの内側に黄色の色を設定し、現在のピクセルに入れます.
次に、アキュムレータをロードし、キャリーフラグをクリアします.それから、我々は20インチをアキュムレータに加えます.そして、垂直にスクリーンの各々の線を増やします.その後、$ 10をメモリに格納します.
その後、アキュムレータとストアコンテンツに$ 11の値をロードし、メモリにフラグを渡します.
最後に、メモリの内容をアキュムレータと比較して、最後のページに到達するようにします.そうでなければ、ループを続けてください.
同じアイデアは、紫色の線を描画します.
       LDA #$1F 
       STA $10
       LDA #$02
       STA $11
       LDY $00

RIGHT: 
       LDA #$04     ; Set color Purple
       STA ($10),Y

       LDA $10
       CLC
       ADC #$20
       STA $10

       LDA $11
       ADC #$00
       STA $11

       CMP #$06
       BNE RIGHT
結果