アセンブリ言語ランゲージラボ
2456 ワード
こんにちは、これはSpo 600の研究室2です.
水平線を印刷する
この研究室での最初の仕事は、トップで緑の線を描き、一番下に青い線を描きます.
私たちは、同じ論理を使って、別の青い線を下に描きました.
垂直線を印刷する
番目のタスクでは、正方形の両側に2垂直線を印刷するつもりです.
第二に、ループを設定します.ループの内側に黄色の色を設定し、現在のピクセルに入れます.
次に、アキュムレータをロードし、キャリーフラグをクリアします.それから、我々は20インチをアキュムレータに加えます.そして、垂直にスクリーンの各々の線を増やします.その後、$ 10をメモリに格納します.
その後、アキュムレータとストアコンテンツに$ 11の値をロードし、メモリにフラグを渡します.
最後に、メモリの内容をアキュムレータと比較して、最後のページに到達するようにします.そうでなければ、ループを続けてください.
同じアイデアは、紫色の線を描画します.
水平線を印刷する
この研究室での最初の仕事は、トップで緑の線を描き、一番下に青い線を描きます.
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
結果Reference
この問題について(アセンブリ言語ランゲージラボ), 我々は、より多くの情報をここで見つけました https://dev.to/qzhang125/lab-2-6502-assembly-language-lab-15fjテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol