以下は、2,8ビットの数値を乗算するために書いたプログラムです。私の友人の一人は、そのプログラムが間違っていると言った。私はそれを確認することができなかったので、私はそれを確認したい。私はアセンブリプログラミングを学び始めました。次のプログラムは、多くのレジスタを使用します。プログラムは正しいですか?
LDA C001H
MOV B,A
LDA C002H
MOV D,A
MOV C,0H
CMP C
JZ ZRESULT // CHECKED FOR C002
MOV A,B
CMP C
JZ ZRESULT // CHECKED FOR COO1
LOOP : ADD A
MOV E,A
LDA 01H
DEC D
CMP D
JZ ANSWER
JNZ LOOP
ZRESULT : LDA 0H
STA 2500H
OUT PORT1
ANSWER : MOV A,E
STA 2500H
OUT PORT1
このプログラムは正しいですか?もしそうでなければ、その中の訂正を教えてください。
複数の数値を重ね合わせて結果を確認しようとすると、プログラムの信頼性が向上します。特に、数値が「0」、「1」、「2」、「3」、 2の累乗より大きいか1未満の数、およびオーバーフローを強制する入力が含まれます。 – sarnold