2016-07-05 24 views
-3

左のコードがあり、0H ... 15Hのアドレスに何が格納されているのかが尋ねられます。私は0AHが来るまですべての答えを非常に簡単に見つけました。 「0D」や「08」や「FE」がどこから来ているのか分かりません。ここ はコード:15Hに00Hから保存された物理メモリのアドレスであるMC8051マイクロコントローラのアドレス指定

WERT equ 127 
    org 0    
MOV SP,#0FH 
CLR A 
MOV PSW,#0FFH 
ADDC A,#WERT 
ACALL UP 
SJMP $ 
UP: 
PUSH ACC 
PUSH PSW 
POP PSW 
POP ACC 
RET 

END 

何? 0AHまで私はすべてのものに答えました。

Screenshot

+0

リンクここでは何もしません。問題があれば投稿する必要がありますので、すべての情報はこのウェブサイト上にあり、壊れたリンク。 –

+0

私はテキストにコードを入れました。あなたが今私を援助できることを願っています。すみません、私の英語はそれほど良くありません。 –

+0

@ WedeVane 8051スタックが成長します。また、ハーバードのアーキテクチャでは、コードとデータのアドレス空間が異なるため、オーバーラップはありません。 – Jester

答えて

2

どのようにして最初の数バイトを把握しましたか?私はあなたが命令セット参照を参照したと仮定します。それであなたが尋ねる価値について、どんな問題に遭遇しましたか?

ACALLのオペコードはUPの絶対アドレスが0Dあるので、それはあなたが11 0Dを取得する方法です、11です。

同様に、SJMPのオペコードは80であり、それはヘクスでFEある-2の相対オフセットを使用して、自身にジャンプして戻ります。 (オフセットはすでにインクリメントされたプログラムカウンタに適用されます)

+0

あなたの答えに多くの感謝。 私はテーブルの上にすべてのバイトが書かれた私の前にテーブルを持っており、私たちは試験でそれを取ることができます。 私の結果が正しいかどうかを知るために「MCU 8051 IDE」を使用しています 私に与えられた答えは助けられましたが、どこで絶対アドレスを得るのですか?私はこれについて手がかりを感じません。 もう一度ありがとうございます –

+0

あなたはそれを最初に知っていないので、プレースホルダ 'XX'を出して組み立てを続けます' UP'に着くとあなたはアドレスを知るでしょう – Jester

+1

OMGは私の最初のPUSHを始めて、「UP」が絶対に働くように指し示しているアドレス「0D」に気づいた。 それを把握しようとしている約数時間。 –

関連する問題