0

次のコードに行き詰まっており、それがどのように機能するかについての基本的な理解がありませんか?

r22次のコード行が実行された後のの 10 進値を決定します。

clr r22  

dec r22

push r22

dec r22

pop r5

r22 の値 = ?

4

2 に答える 2

1

各命令を 1 つずつ実行して、それぞれが何をするかを理解してください。

  1. clr r22 : これにより、レジスタが 0 に設定されます。
  2. dec r22 : これはデクリメントするため、0 から 255 までアンダーフローします。
  3. push r22 : 255 (r22) をスタックにプッシュします。
  4. dec r22 : これは r22 をデクリメントするため、r22 は現在 254 です。
  5. pop r5 : 値 (255) をスタックからポップして r5 に格納しますが、r22 には影響しません。

したがって、何か間違っていない限り、答えは r22 = 254 です。

于 2013-06-03T06:56:56.937 に答える
0

レジスタ(8ビット)は0からFF(dec r22)からFE(dec r22)になります

r22 が 4 ビットの場合、E = 14

r22 が 8 ビットの場合、FE = 254

r22 が 16 ビットの場合、FFFE = 65534

等々

プロセッサ レジスタは車の走行距離計のようなもので、99,999 マイルに達すると 00000 に進みます

レジスターは FFFF、15-15-15-15 (10 進数ではなく 16 進数であるため 9-9-9-9 ではありません) に達し、+1 すると 0-0-0-0 に戻ります。

于 2013-06-03T08:58:42.840 に答える