これまでの記事では、シングルチップマイクロコンピュータの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ストレージスペースの内容を表示できます。
右クリックの[メモリの変更]オプションを使用して、指定したメモリの内容を変更することもできます。