0

レジスタ ペア B に格納されている 16 進値があり、文字単位で読み取りたいと考えています。たとえば、B は 322 (16 進数) で、アキュムレータに 3、2、2 (ASCII) を入れたいとします。それはどういうわけか可能ですか?または、このレジスタペアを「文字列」に格納することは可能ですか? 文字列とは、この行を意味します->my_string: ds 30私は本当に組み立てが初めてです。

4

1 に答える 1

2

思い出すと、「レジスタ ペア B」は B レジスタと C レジスタで構成されています。C は下位 8 ビットで、B には上位 8 ビットが含まれます。したがって、BC に値があり、16 進数 (4 桁) を取得したい場合、手順は次のようになります。

  1. MOV A,B
  2. A を右に 4 桁シフトします (以下を参照)。これにより、数値の上位 4 ビットが A の下位 4 ビットに入れられ、A の上位 4 ビットがクリアされます。したがって、0 から 15 までの数値が得られます。
  3. その値を 16 進数 (0-9、AF) に変換します。これを行うための自明ではない方法があったことを覚えているようですが、それが何であったかは覚えていません。
  4. その値を出力します (または後で出力するためにメモリに保存します)。
  5. MOV A,B
  6. ANI 0x0F -- これにより上位 4 ビットがゼロになり、上位バイトの下位 4 ビットが得られます。
  7. 手順 3 と 4 を実行します。
  8. MOV A,C
  9. 手順 2、3、および 4 を実行します。
  10. MOV A,C
  11. 手順 3 と 4 を実行します

私が 8080 コードを書いてから長い時間が経っているので、ここで壊れたコードと混同するつもりはありません。上記で概説した手順は、必要なことを行います。

私の 0x0F の使用は、アセンブラの正しい構文ではない可能性があることに注意してください。10 進数値 15 または 16 進数値 F を使用してすぐに実行しようとしています。あなたのアセンブラが 16 進数定数をどのように表現しているかわかりません。

8080にはシフト命令はなかったと思います。ただし、回転命令はありました。したがって、右に 4 桁シフトする代わりに、右に 4 桁回転し、下位 4 ビットをマスクします。あれは:

RAR
RAR
RAR
RAR
ANI 0x0F
于 2015-03-17T21:33:00.587 に答える