「SCMアセンブリ」最終試験、大学院入試のための一般的な試験問題と演習、質問タイプの概要(12)、keilプログラミングソフトウェアの使用、およびソフトウェアシミュレーションを表示するときの対応するメモリアドレス値

これまでの記事では、シングルチップマイクロコンピュータの111の基本的な命令を、対応する試験問題と演習を通じて柔軟に使用しています。
まず、命令には、関数、時間、空間の3つの属性があります。
関数属性:各命令が特定の操作関数に対応することを意味します。
時間属性:命令の実行に必要な時間を指し、通常はマシンサイクルで表されます。
スペース属性:プログラムメモリ内の命令のストレージによって占有されるバイト数を指します。
第2に、分類
1、命令スペース属性によると、
(1)1バイト命令(49)
(2)2バイト命令(45)
(3)3バイト命令(17)
2、命令時間属性によると、
(1)1マシンサイクル命令(64)
(2)2マシンサイクル命令(45)
(3)4マシンサイクル命令(2)
3.命令機能属性によると、
(1)データ転送命令( 29)
(2)算術演算命令(24)
(3)論理演算命令(24)
(4)制御転送命令(17)
(5)ビット演算命令(17)
3つのアドレッシングモード
(記号)命令記述形式:演算ニーモニック[宛先オペランド] [、ソースオペランド] [;コメント])
1、即値アドレッシング
2、直接アドレッシング
3、レジスターアドレッシング
4、レジスター間接アドレッシング
5、インデックス検索アドレス(ベースアドレスレジスタDPTR / PC +インデックスレジスタAのアドレス間アドレッシング):
MOVC A、@ A + DPTR
MOVC A、@ A + PC
JMP A、@ A + DPTR
6、相対アドレス指定:
宛先アドレス=転送命令のアドレス+転送命令バイト数+ rel
7、ビットアドレス指定
4、内部RAMマップ、レジスタアドレスおよびリセット値ここに画像の説明を挿入
五番目、わかりづらく、よく説明する命令命令
1、PUSH、POP命令
スタック定義:51 MCUシリーズでは、内部データ格納領域を後入れ先出し原理で動作する領域に設定しています。スタック領域の一方の端は固定されてスタックの最下部になり、もう一方の端はアクティブになってスタックの最上位になります。(注:スタック領域は上方向に大きくなります)
(1)PUSH
PUSHダイレクト命令 ;(SP)+ 1- > SP、(direct)->(SP)
解決策:この命令を実行するときは、最初にスタックポインターSP + 1を設定します、そしてダイレクトの内容をSPが示す内部RAMユニットに送信します。
例:

(SP)=50H,(A)=30H,(B)=60H,执行如下指令:
	PUSH ACC
	PUSH B
	后,试回答:(51)=      ,(52H)=      ,(SP)=     
答案:
	(51)=30H ,(52H)=60H,(SP)=52H 

(2)スタック命令POP
POP direct;((SP))->(direct)、(SP)-1-> SP
解析:この命令が実行されると、SPが示すスタックの最上位ユニットの内容が最初に送信されます。直接バイトでは、SPの内容が1つ減り、SPに割り当てられます。
例:

(SP)=52H,(52H)=30H,(51H)=60H,执行如下指令:
	POP DPL
	POP DPH
	后,试回答:(DPTR)=      ,(SP)=     
答案:
	(DPL)=30H  ,(DPH)=60H    ,(DPTR)=6030H    ,(SP)=50H

注:PUSH、POP命令のオペランドは、レジスタではなく、直接アドレスです。例:PUSH R0この命令のエラー(プログラムのコンパイル中に次のエラーが発生します:エラーA22:EXPRESSION TYPE DO NOT NOT MATCH INSTRUCTION
2、RET命令
サブルーチン戻り命令RET、この命令はステータスフラグビット、実行プロセスには影響しません。

RET   ;((SP))-> PC(15-8), (SP)-1 ->SP
	  ;((SP))-> PC(7-0), (SP)-1 ->SP  

包括的なテストの質問:
次の質問は、PC、スタック、およびRETの理解を完全に調査します

(30H)=51H,执行以下指令后,
	ORG 0000H
	MOV 64H,#00
	MOV 65H,#00
	ACALL FUC
	MOV A,30H
	SWAP A
	MOV 30H,A
HALT:SJMP HALT
FUC:	
	MOV SP, #66H
	MOV A, #51H 
	MOV B, #52H 
	PUSH ACC
	PUSH B 
	POP ACC 
	POP B
	RET 
(SP)=    ,(30H)=     ,(A)=     ,(B)=      ,P=  ,Cy=   ,Ac=  ,OV=   
答案:
(SP)= 64H ,(30H)=15H ,(A)= 15H ,(B)= 51H ,P=1  ,Cy=0  ,Ac=0 ,OV= 0

第6に、プログラミングソフトウェアKEIL
1 の基本的な使用法、ソフトウェアのインストール(ソフトウェアのダウンロードとインストールプロセスは省略)、インストール後、図
ここに画像の説明を挿入
2に示すように、ソフトウェアを開き、[新しいプロジェクト]-> [新しいプロジェクト
ここに画像の説明を挿入
3]をクリックして入力し、保存用の新しいファイルを作成します。プロジェクト、プロジェクト名を入力、保存
ここに画像の説明を挿入
4をクリック、ポップアップインターフェイスでMCUモデルを選択、AT89C51を選択
ここに画像の説明を挿入
ここに画像の説明を挿入
5、OKをクリック、ポップアップダイアログボックスで[はい]をクリック
6、新しいファイルを作成、メニューバーで[ファイル]-> [新しいファイル]を選択、またはCtrl + N新規作成
して保存(Ctrl + S)し、ファイル名を入力して[保存]をクリックします(ファイルのサフィックス名の形式:Cファイルは.cアセンブリファイルは.asmです)、ここでアセンブリファイル
ここに画像の説明を挿入
7をビルドし、上記のようにプロジェクトに追加します新しく作成されたファイル
ソースグループ1を右クリックし、ポップアップダイアログボックスで[グループにファイルを追加]をクリックします。オプション
ここに画像の説明を挿入
8、すべてのファイルの[すべてのファイル]オプションをクリックし、新しく作成された.asmファイルを見つけ、ファイルをダブルクリックしてプロジェクト
ここに画像の説明を挿入
9 に追加します。ソースグループで.asmをクリックしてプログラムの書き込みを開始し、ボタンをクリックして書き込み後にプログラムをコンパイルします。
ここに画像の説明を挿入
10.コンパイルして.hexファイルを生成します(このファイルはMCUへのダウンロードに使用されます)
ステップ1.次の図に示すように魔法の杖をクリックします
ここに画像の説明を挿入
ステップ2次の図に従って、.hexファイルを生成するオプションをオンにしてから、
ここに画像の説明を挿入
再度コンパイルします。

簡単なプログラミングソフトウェアを使用することで、演習の理解した後、することによって検証することができるソフトウェアのシミュレーションプログラムを確認するため
の認証方法:
ステップ1、良いコンパイルコンパイルしたファイルを、その2番目のオプションまたは第三の選択肢のある下をクリックここに画像の説明を挿入
ステップ2は、Ctrl +シミュレーションデバッグ用のF5。
ここに画像の説明を挿入
赤い円は(左から右へ)ブレークポイントまでフルスピードで実行するために、シングルステップ実行、シングルステップ実行からジャンプし
ます。必要に応じて、左のレジスタから対応するレジスタの値を表示できます。たとえば、アドレスの値は、右下のメモリで30Hの値を見て、アドレスにd:30Hと入力して
ここに画像の説明を挿入
補足を表示し
ます。メモリウィンドウにアドレス値を入力すると、プログラムコード領域の内容が表示されます。51はハーバード構造を使用しているため、プログラム命令のストレージとデータストレージは分離されています。さまざまなメモリ領域の内容を表示するには、[アドレス]ボックスletter:addressと入力して、対応するメモリ値を表示します。文字には、C、D、I、Xを使用できます。つまり、(大文字と小文字の両方)

C:コード保管スペース

D:オンチップストレージスペースを直接アドレス指定

I:オンチップストレージスペースの間接アドレッシング

X:拡張された外部RAMスペース

「d:0x30」と入力すると、チップ上で直接アドレス指定可能な30Hストレージスペースの内容を表示できます。

右クリックの[メモリの変更]オプションを使用して、指定したメモリの内容を変更することもできます。

元の記事を27件公開 25 件を獲得 5767回閲覧

おすすめ

転載: blog.csdn.net/liuxianfei0810/article/details/105499128