Play 3数学の問題解決

1419 ワード

こんにちは皆さん、Spo 600(ソフトウェア可搬性と最適化)反射と余分の探査ブログの第4週に戻ってください!このブログでは、いくつかの数学の問題をするために6502アセンブリ言語を使用します.
6502アセンブリ言語ではADC(add with carry) and SBC(subtract with carry) アキュムレータに格納されている値を追加して減算します.
基本的なイデオロギーで、数字を計算する簡単なプログラムを作ろう.
LDY #$05    ;Load Y register with 40 in hexadecimal

SEC     ;Set carry flag
TYA         ;Transfer Y register to the accumulator
SBC #$02        ;Do the subtraction 2 
CLC             ;Clear carry flag
ADC #$01
TAY     ;Transfer the A register to Y
この単純なプログラムでは、5進数の10進数でYレジスタに5をロードします.減算のために、SECを使用してキャリーフラグをセットしなければなりません.次に、Yに格納された値を演算処理のアキュムレータに転送する.その後、アキュムレータ内のキャリー2を減算し、キャリー1で加算用フラグをクリアする.最後に、アキュームレータからYレジスタに結果を転送する.この小さなプログラムでは、単にアセンブリ言語を使用して5 - 2 + 1の計算を行います.私たちが期待通り、答えはYレジスタ4です!

アセンブリ世界の数学問題についての私の考え.個人的には、高レベルのプログラミング言語を使ってプログラミングを始めます.しかし、アセンブリ言語では、番号はレジスタに格納されます.我々が彼らにアクセスして、我々がアキュムレータに彼らをセットしなければならない数を修正するならば、加算または減算のためにキャリー・フラグをつくって、または明確にしてください.それはプログラミングの間、毎回プログラマによってメモリに実際にアクセスしなければならない低レベルプログラミング言語の特性を示します.