官术网_书友最值得收藏!

第一節 指令系統概述

一、指令類型

MCS-51匯編語言有42種操作碼助記符用來描述33種操作功能。一種操作可以使用一種以上數據類型,又由于助記符也定義所訪問的存儲器空間,所以一種功能可能有幾個

助記符(如MOV、MOVX、MOVC)。功能助記符與尋址方式組合,得到111種指令。

如果按字節數分類,則有49條單字節指令、45條雙字節指令和17條3字節指令。若按指令執行時間分類,就有64條單周期指令、45條雙周期指令、兩條(乘、除)4周期指令。可見MCS-51指令系統具有存儲效率高、執行速度快的特點。

按功能分類,MCS-51指令系統可分為數據傳送指令、算術運算指令、邏輯運算指令、位操作指令、控制轉移指令。

二、指令格式

MCS51匯編指令由操作碼助記符字段和操作數字段所組成。指令格式如下:操作碼[操作數1],[操作數2],[操作數3]

第一部分為指令操作碼助記符,表示指令進行何種操作。它由2~5個英文字母所組

成,如JB、MOV、CJNE、LCALL等。

第二部分為操作數,指出了參加操作的數據或數據存放的地址。它以一個或幾個空格和操作碼隔開,根據指令功能的不同,數可以有1、2、3個或者沒有(如空操作指令)。操作數之間以逗號“,”分開。

三、偽指令

標準的MCS-51匯編程序(如Intel公司的ASM51)還定義許多偽指令供用戶使用,偽指令也稱為匯編命令,大多數偽指令匯編時不產生機器語言指令,僅提供匯編控制信息。以下介紹幾條最常用的偽指令。

1.定位偽指令

ORG m 40

m為十進制或十六進制數。m指出在該偽指令后的指令的匯編地址,即生成的機器指令起始存儲器地址。在一個匯編語言源程序中允許使用多條定位偽指令,但其值應和前面生成的機器指令存放地址不重疊。

2.定義字節偽指令

DB X1,X2,…,Xn

Xi為單字節數據,它為十進制或十六進制數,也可以為一個表達式。Xi也可以為由兩個單引號“ˊ”所括起來的一個字符串,這時Xi定義的字節長度等于字符串的長度,每一個字符為一個ASCII碼。

該偽指令把X1,X2,…,Xn送目標程序存儲器,通常用于定義一個常數表。3.字定義偽指令

DW Y1,Y2,…,Yn

Yi為雙字節數據,它可以為十進制或十六進制的數,也可以為一個表達式。該偽指令把Y1,Y2,…,Yn送目標程序存儲器,經常用于定義一個地址表。

4.匯編結束偽指令

END

該偽指令指出結束匯編,即使后面還有指令,匯編程序也不作處理。5.標號和注釋

匯編程序允許用戶在源程序中使用標號和注釋。

標號加在指令之前,標號必須以字母開始,后跟1~8個字母或數字,并以冒號“:”結尾,用戶定義的標號不能和匯編保留符號(包括指令操作碼助記符以及寄存器名等)重復。標號的值是它后面的指令存儲地址。

注釋是用戶對某一條指令或某一段程序的功能說明,它必須以分號“;”開始,如果一行寫不下,可以另起一行,但都必須以分號“;”開始。下面為含有標號和注釋的程序行:

標號:操作碼[操作數1],[操作數2],[操作數3];注釋四、常用的縮寫符號

在描述MCS-51指令系統的功能時,經常使用下面的縮寫符號,其意義如下:

A

累加器ACC

AB

累加器ACC和寄存器B組成的寄存器對

C

進位標志位CY,也是位操作指令中的位累加器

Rn

表示當前選中的通用寄存器R0~R7(n=0~7)

Ri

表示通用寄存器中可用作8位地址指針的R0和R1(i=0,1)

direct

直接地址,取值為00~0FFH

#data 立即數,表示一個常數

間接尋址

addr

表示外部數據存儲器的地址

bit

表示內部RAM或特殊功能寄存器中的直接位地址

×

寄存器

(×)

寄存器內容

((×))由X寄存器尋址的存儲器單元內容

(×)

寄存器的內容取反

rrr

指令編碼中rrr三位值由工作寄存器Rn確定,R0~R7對應rrr為000~111

$

指本條指令起始地址

rel

相對偏移量,其值為-128~+127

主站蜘蛛池模板: SHOW| 蓬莱市| 桓仁| 四平市| 鄄城县| 桂平市| 宝坻区| 金乡县| 芜湖市| 云林县| 新竹市| 客服| 冕宁县| 巩义市| 刚察县| 德钦县| 长沙县| 芷江| 洪湖市| 五家渠市| 抚宁县| 新丰县| 休宁县| 水城县| 高唐县| 屏东市| 福清市| 青川县| 丹东市| 赤水市| 秦皇岛市| 怀柔区| 绥化市| 利川市| 达孜县| 卢龙县| 漳浦县| 邵阳县| 革吉县| 天祝| 阿城市|