【大學課件】MCS-51單片機指令系統(tǒng)與匯編語言程序設計-_第1頁
【大學課件】MCS-51單片機指令系統(tǒng)與匯編語言程序設計-_第2頁
【大學課件】MCS-51單片機指令系統(tǒng)與匯編語言程序設計-_第3頁
【大學課件】MCS-51單片機指令系統(tǒng)與匯編語言程序設計-_第4頁
【大學課件】MCS-51單片機指令系統(tǒng)與匯編語言程序設計-_第5頁
已閱讀5頁,還剩117頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第2章MCS-51單片機指令系統(tǒng)

與匯編語言程序設計主要內容:

MCS-51單片機指令系統(tǒng)的尋址方式、指令系統(tǒng)、基本程序結構及匯編語言的開發(fā)和調試。

重點在于尋址方式、各種指令的應用、程序設計的規(guī)范、程序設計的思想及典型程序的理解和掌握。難點在于控制轉移、位操作指令的理解及各種指令的靈活應用,以及程序設計的基本方法和針對具體的硬件設計出最合理的軟件。第2章MCS-51單片機指令系統(tǒng)

與匯編語言程序設計主要1

指令系統(tǒng):一臺計算機所能識別、執(zhí)行的指令的集合就是它的指令系統(tǒng)。

機器語言:指令系統(tǒng)是一套控制計算機執(zhí)行操作的二進制編碼,稱為機器語言。機器語言指令是計算機惟一能識別和執(zhí)行的指令。

匯編語言:指令系統(tǒng)是利用指令助記符來描述的,稱為匯編語言。

計算機的指令系統(tǒng)一般都是利用匯編語言描述的,是由計算機硬件設計所決定的。指令系統(tǒng)沒有通用性。單片機一般是空機,未含任何系統(tǒng)軟件。因此在第一次使用前,必須對其進行編程,

2.1概述

指令系統(tǒng):2.1概述22.1.1匯編語言指令格式與偽指令

1.常用單位與術語

位(bit):位是計算機所能表示的最小的、最基本的數據單位,位通常是指一個二進制位。

字節(jié)(Byte):一個連續(xù)的8位二進制數碼稱為一個字節(jié),即1Byte=8bit。

字(Word):通常由16位二進制數碼組成,即1Word=2Byte。

字長:字長是指計算機一次處理二進制數碼位的多少。MCS-51型單片機是8位機,所以說它的字長為8位。

MCS-51系列單片機都是以Intel公司最早的典型產品8051為核心,增加了一定的功能部件后構成的。本章以8051為主介紹MCS-51系列單片機。2.1.1匯編語言指令格式與偽指令1.常用單位與術語32.匯編語言指令格式

指令格式:指令的表示方式稱為指令格式,它規(guī)定了指令的長度和內部信息的安排。完整的指令格式如下:[標號:]操作碼

[操作數][,操作數][;注釋]其中:[]項是可選項。標號:指本條指令起始地址的符號,也稱為指令的符號地址。代表該條指令在程序編譯時的具體地址。操作碼:又稱助記符,它是由對應的英文縮寫構成的,是指令語句的關鍵。它規(guī)定了指令具體的操作功能,描述指令的操作性質,是一條指令中不可缺少的內容。操作數:它既可以是一個具體的數據,也可以是存放數據的地址。注釋:注釋也是指令語句的可選項,它是為增加程序的可讀性而設置的,是針對某指令而添加的說明性文字,不產生可執(zhí)行的目標代碼。2.匯編語言指令格式指令格式:指令的表示方式稱為指令格式,4

偽指令(也稱為匯編程序的控制命令)是程序員發(fā)給匯編程序的命令,用來設置符號值、保留和初始化存儲空間、控制用戶程序代碼的位置。

偽指令只出現(xiàn)在匯編前的源程序中,僅提供匯編用的某些控制信息,不產生可執(zhí)行的目標代碼,是CPU不能執(zhí)行的指令。

(1)定位偽指令ORG

格式:ORGn

其中:n通常為絕對地址,可以是十六進制數、標號或表達式。

功能:規(guī)定編譯后的機器代碼存放的起始位置。在一個匯編語言源程序中允許存在多條定位偽指令,但每一個n值都應和前面生成的機器指令存放地址不重疊。例如程序: ORG 1000H START:MOV A,#20H MOV B,#30H┇3.偽指令

偽指令(也稱為匯編程序的控制命令)是程序員發(fā)5(2)結束匯編偽指令END

格式:[標號:]END[表達式]

功能:放在匯編語言源程序的末尾,表明源程序的匯編到此結束,其后的任何內容不予理睬。(3)賦值偽指令EQU

格式:字符名稱xEQU賦值項n

功能:將賦值項n的值賦予字符名稱x。程序中凡出現(xiàn)該字符名稱x就等同于該賦值項n,其值在整個程序中有效。賦值項n可以是常數、地址、標號或表達式。在使用時,必須先賦值后使用。“字符名稱”與“標號”的區(qū)別是“字符名稱”后無冒號,而“標號”后面有冒號。(2)結束匯編偽指令END(3)賦值偽指令EQU6(4)定義字節(jié)偽指令DB

格式:[標號:]DBx1,x2,…,xn

功能:將8位數據(或8位數據組)x1,x2,…,xn順序存放在從當前程序存儲器地址開始的存儲單元中。xi可以是8位數據、ASCII碼、表達式,也可以是括在單引號內的字符串。兩個數據之間用逗號“,”分隔。

xi為數值常數時,取值范圍為00H~FFH。xi為ASCII碼時,要使用單引號‘’,以示區(qū)別。xi為字符串常數時,其長度不應超過80個字符。(5)定義雙字節(jié)偽指令DW

格式:[標號:]DWx1,x2,…,xn

功能:將雙字節(jié)數據[或雙字節(jié)數據組]順序存放在從標號指定地址單元開始的存儲單元中。其中,xi為16位數值常數,占兩個存儲單元,先存高8位(存入低位地址單元中),后存低8位(存入高位地址單元中)。(4)定義字節(jié)偽指令DB7

(6)預留存儲空間偽指令DS

格式:[標號:]DSn

功能:從標號指定地址單元開始,預留n個存儲單元,匯編時不對這些存儲單元賦值。n可以是數據,也可以是表達式。P39例(7)定義位地址符號偽指令BIT

格式:字符名稱xBIT位地址n

功能:將位地址n的值賦予字符名稱x。程序中凡出現(xiàn)該字符名稱x就代表該位地址。位地址n可以是絕對地址,也可以是符號地址。

(8)數據地址賦值偽指令DATA

格式:字符名稱xDATA表達式n

功能:把表達式n的值賦值給左邊的字符名稱x。n可以是數據或地址,也可以是包含所定義的“字符名稱x”在內的表達式,但不能是匯編符號。

DATA與EQU的主要區(qū)別是:EQU定義的“字符名稱”必須先定義后使用,而DATA定義的“字符名稱”沒有這種限制。所以,DATA偽指令通常用在源程序的開頭或末尾。

(6)預留存儲空間偽指令DS82.1.2指令的分類

MCS-51指令系統(tǒng)有111條指令,可按下列幾種方式分類:按指令字節(jié)數分類

單字節(jié)指令(49條)、雙字節(jié)指令(46條)和三字節(jié)指令(16條)。2.按指令執(zhí)行時間分類

單機器周期指令(65條)、雙機器周期指令(44條)和四機器周期指令(2條)。3.按功能分類

數據傳送指令(29條)、算術操作指令(24條)、邏輯操作指令(24條)、控制轉移指令(17條)和位操作指令(17條)。2.1.2指令的分類MCS-51指令系統(tǒng)有1192.1.3指令中的常用符號

Rn(n=0~7):表示當前工作寄存器R0~R7中的任一個寄存器。

Ri(i=0或1):表示通用寄存器組中用于間接尋址的兩個寄存器R0,R1。

#data:表示8位直接參與操作的立即數。

#data16:表示16位直接參與操作的立即數。

direct:表示片內RAM的8位單元地址。

addr11:表示11位目的地址,主要用于ACALL和AJMP指令中。

addr16:表示16位目的地址,主要用于LCALL和LJMP指令中。

rel:用補碼形式表示的8位二進制地址偏移量,取值范圍為128~+127,主要用于相對轉移指令,以形成轉移的目的地址。

DPTR:數據指針,用于寄存器間接尋址方式和變址尋址方式。2.1.3指令中的常用符號Rn(n=0~7):表示102.1.3指令中的常用符號

bit:表示片內RAM的位尋址區(qū),或者是可以位尋址的SFR的位地址。

A(或ACC)、B:表示累加器、B寄存器。

C:表示PSW中的進位標志位Cy。

:在間接尋址方式中,表示間接尋址寄存器指針的前綴標志。

$:表示當前的指令地址。

/:在位操作指令中,表示對該位先求反后再參與操作。

(X):表示由X所指定的某寄存器或某單元中的內容。

((X)):表示由X間接尋址單元中的內容。

←:表示指令的操作結果是將箭頭右邊的內容傳送到左邊。

→:表示指令的操作結果是將箭頭左邊的內容傳送到右邊。

∨、∧、⊕:表示邏輯或、與、異或。2.1.3指令中的常用符號bit:表示片內RAM的位11

尋址方式:在計算機中,說明操作數所在地址的方法稱為指令的尋址方式。計算機執(zhí)行程序實際上是在不斷尋找操作數并進行操作的過程。每種計算機在設計時已決定了它具有哪些尋址方式,尋址方式越多,計算機的靈活性越強,指令系統(tǒng)也就越復雜。

MCS-51單片機的指令系統(tǒng)提供了7種尋址方式,分別為立即尋址、直接尋址、寄存器尋址、寄存器間接尋址、變址尋址、相對尋址和位尋址。一條指令可能含多種尋址方式。2.2MCS-51單片機的尋址方式

尋址方式:在計算機中,說明操作數所在地址的方法稱為指令的122.2.1立即尋址

定義:將立即參與操作的數據直接寫在指令中,這種尋址方式稱為立即尋址。

特點:指令中直接含有所需的操作數。該操作數可以是8位的,也可以是16位的,常常處在指令的第二字節(jié)和第三字節(jié)的位置上。立即數通常使用#data或#data16表示,在立即數前面加“#”標志,用以和直接尋址中的直接地址(direc或bit)相區(qū)別。P41例

2.2.2直接尋址

定義:將操作數的地址直接存放在指令中,這種尋址方式稱為直接尋址。特點:指令中含有操作數的地址。該地址指出了參與操作的數據所在的字節(jié)單元地址或位地址。計算機執(zhí)行它們時便可根據直接地址找到所需要的操作數。尋址范圍:ROM、片內RAM區(qū)、SFR和位地址空間。P42

2.2.1立即尋址定義:將立即參與操作的數據直132.2.3寄存器尋址定義:操作數存放在MCS-51內部的某個工作寄存器Rn(R0~R7)或部分專用寄存器中,這種尋址方式稱為寄存器尋址。特點:由指令指出某一個寄存器的內容作為操作數。存放操作數的寄存器在指令代碼中不占據單獨的一個字節(jié),而是嵌入(隱含)到操作碼字節(jié)中。尋址范圍:四組通用寄存器Rn(R0~R7)、部分專用寄存器(A,B,DPTR,Cy)。2.2.3寄存器尋址14

2.2.4寄存器間接尋址定義:指令給出的寄存器中存放的是操作數據的單元地址。這種尋址方式稱為寄存器間接尋址,簡稱為寄存器間址。特點:指令給出的寄存器中存放的是操作數地址。寄存器間接尋址是一種二次尋找操作數地址的尋址方式,寄存器前邊必須加前綴符號“”。不能用于尋址特殊功能寄存器SFR。

尋址范圍:內部RAM低128B(只能使用R0或R1作間址寄存器)、外部RAM(只能使用DPTR作間址寄存器)。對于外部低256單元RAM的訪問,除可以使用DPTR外,還可以使用R0或R1作間址寄存器。

2.2.4寄存器間接尋址15

2.2.5變址尋址

定義:操作數存放在變址寄存器(累加器A)和基址寄存器(DPTR或PC)相加形成的16位地址單元中。這種尋址方式稱為基址加變址寄存器間接尋址,簡稱為變址尋址。

特點:指令操作碼中隱含作為基址寄存器用的DPTR(或PC)和作為變址用的累加器A。在執(zhí)行變址尋址指令時,MCS-51單片機先把基地址(DPTR或PC的內容)和地址偏移量(A的內容)相加,以形成操作數地址,再由操作數地址找到操作數,并完成相應的操作。變址尋址方式是單字節(jié)指令。

尋址范圍:只能對程序存儲器ROM進行尋址,主要用于查表性質的訪問。;(PC)←(A)+(DPTR)2.2.5變址尋址16注意:累加器A中存放的操作數地址相對基地址的偏移量的范圍為00H~FFH(無符號數)。MCS-51單片機共有以下三條變址尋址指令:

MOVCA,A+PC ;(A)←(A)+(PC)+1MOVCA,A+DPTR;(A)←(A)+(DPTR)

JMPA+DPTR;(PC)←(A)+(DPTR)注意:累加器A中存放的操作數地址相對基地址的偏移量的范圍為0172.2.6相對尋址定義:將程序計數器PC的當前值(取出本條指令后的PC值)與指令第二個字節(jié)給出的偏移量(rel)相加,形成新的轉移目標地址。稱為相對尋址方式。特點:相對尋址方式是為實現(xiàn)程序的相對轉移而設計的,為相對轉移指令所使用,其指令碼中含有相對地址偏移量,能生成浮動代碼。如:SJMPrel;(PC)←(PC)+2+rel相對轉移指令的目的地址=指令地址+指令字節(jié)數+偏移量尋址范圍:只能對程序存儲器ROM進行尋址。相對地址偏移量(rel)是一個帶符號的8位二進制補碼,其取值范圍為128~+127(以PC為中間的256個字節(jié)范圍)。

2.2.6相對尋址182.2.7位尋址定義:指令中給出的操作數是一個可單獨尋址的位地址,這種尋址方式稱為位尋址方式。特點:位尋址是直接尋址方式的一種,其特點是對8位二進制數中的某一位的地址進行操作。尋址范圍:片內RAM低128B中位尋址區(qū)、部分SFR(其中有83位可以位尋址)??晌粚ぶ返奈坏刂返谋硎拘问饺缦拢海?)直接使用位地址形式。如:

MOV00H,C;(00H)←(Cy)其中:00H是片內RAM中20H地址單元的第0位。2.2.7位尋址19(2)字節(jié)地址加位序號的形式。如:

MOV20H.0,C;(20H.0)←(Cy)其中:20H.0是片內RAM中20H地址單元的第0位。(3)位的符號地址(位名稱)的形式。對于部分特殊功能寄存器,其各位均有一個特定的名字,所以可以用它們的位名稱來訪問該位。如:

ANLC,P;(C)←(C)∧(P)其中:P是PSW的第0位,C是PSW的第7位。

(4)字節(jié)符號地址(字節(jié)名稱)加位序號的形式。對于部分特殊功能寄存器(如狀態(tài)標志寄存器PSW),還可以用其字節(jié)名稱加位序號形式來訪問某一位。如:

CPLPSW.6;(AC)←(AC)其中:PSW.6表示該位是PSW的第6位。(2)字節(jié)地址加位序號的形式。如:20[例題1]指出下列指令的尋址方式

MOVA,R1;(A)←(R1)寄存器尋址

ADDA,#05H;(A)←(A)+立即數05H立即尋址

MOVA,R1;(A)←((R1))寄存器間接尋址

MOV30H,4AH;(30H)←(4AH)直接尋址

MOVCA,A+DPTR;(A)←((A)+(DPTR))變址尋址

SJMPLP;(PC)←(PC)+2+偏移量相對尋址

MOV65H,C;(65H)←(Cy)位尋址[例題1]指出下列指令的尋址方式212.3MCS-51單片機的指令系統(tǒng)

MCS-51指令系統(tǒng)使用44種助記符,它們代表著33種功能,可以實現(xiàn)51種操作。指令助記符與操作數的各種可能的尋址方式的結合一共可構造出111條指令。

MCS-51單片機指令系統(tǒng)按其功能可分為數據傳送類指令、算術運算類指令、邏輯運算和移位類指令、控制轉移類指令和位操作類指令五大類。2.3MCS-51單片機的指令系統(tǒng)MCS22學習指令系統(tǒng)時,應注意:(1)指令的格式、功能。(2)操作碼的含義,操作數的表示方法。(3)尋址方式,源、目的操作數的范圍。(4)對標志位的影響。(5)指令的適用范圍。(6)正確估算指令的字節(jié)數。一般地,操作碼占1字節(jié);操作數中,直接地址derict占1字節(jié),#data占1字節(jié),#data16占兩字節(jié);操作數中的A、B、R0~R7、Ri、DPTR、A+DPTR、A+PC等均隱含在操作碼中。學習指令系統(tǒng)時,應注意:232.3.1數據傳送指令

CPU在進行算術和邏輯操作時,絕大多數指令都有操作數,所以數據傳送是一種最基本、最主要的操作。數據傳送指令共29條,可分為內部RAM數據傳送、外部RAM數據傳送、程序存儲器數據傳送、數據交換和堆棧操作等五類。

尋址范圍:累加器A、片內RAM、SFR、片外RAM。

功能:(目的地址)←(源地址)。可表示為:<dest>←<src>;源地址單元的內容不變。對標志位的影響:除以累加器A為目的操作數的數據傳送指令對P標志位有影響外,其余均不影響標志位。

2.3.1數據傳送指令CPU在進行算術和邏241.內部RAM數據傳送指令(16條)

格式:

MOV<dest>,<src>

其中:

<dest>表示目的操作數,<src>表示源操作數。范圍:源、目的操作數均在片內RAM、SFR中。指令形式:按目的操作數可將內部數據傳送指令分為以下幾類。(1)以累加器A為目的操作數(4條)

MOVA,<src>

其中:

<src>包括Rn、Ri、direct、#data。(各個符號的意義見2.1.3節(jié)指令中的常用符號

,以下同)只影響PSW中的P標志位,不影響其他標志位。

(2)以工作寄存器Rn為目的操作數(3條)

MOVRn

,<src>

其中:

<src>包括A、direct、#data。1.內部RAM數據傳送指令(16條)格式:MOV<25(3)以直接地址單元為目的操作數(5條)

MOVdirect,<src>

其中:

<src>包括A、Rn、Ri、direct、#data。(4)以間址寄存器Ri為目的操作數(3條)

MOVRi,<src>

其中:

<src>包括A、direct、#data。(5)16位數據傳送指令(1條)

MOVDPTR,#data16注:(2)、(3)、(4)、(5)均不影響標志位。內部數據傳送指令的傳送關系如右圖所示。(3)以直接地址單元為目的操作數(5條)注:(2)、(3)、262.外部RAM數據傳送指令(4條)

CPU與外部數據存儲器之間進行數據傳送時,必須使用外部傳送指令,只能通過累加器A,采用寄存器間接尋址(用R0,R1和DPTR三個間接尋址的寄存器)方式完成。

指令格式:

MOVXA,<src>MOVX<dest>,A

其中:

<src>、<dest>包括DPTR、Ri。Ri(R0,R1)只能訪問片外RAM的低256個單元;DPTR可以訪問片外RAM的全部64KB的空間。

對標志位的影響:

MOVXA,<src>指令只影響PSW中的P標志位,不影響其他標志位;

MOVX<dest>,A指令不影響標志位。2.外部RAM數據傳送指令(4條)273.程序存儲器(ROM)數據傳送指令(查表指令)(2條)P52

程序存儲器的數據傳送是單向的,并且只能讀到累加器A中。這類指令專門用于查表,又稱為查表指令。

指令格式:MOVCA,A+DPTR;(A)←((A)+(DPTR))

MOVCA,A+PC;(PC)←(PC)+1

(A)←((A)+(PC))

兩條指令的異同:其功能完全相同,但使用中存在著差異。

(1)查表的位置要求不同

采用DPTR作為基地址寄存器,表可以放在64KB程序存儲器空間的任何地址,使用方便,故稱為遠程查表。采用PC作為基地址寄存器,具體的表在程序存儲器中只能在查表指令后的256B的地址空間中,使用有限制,故稱為近程查表。3.程序存儲器(ROM)數據傳送指令(查表指令)(2條)P528

(2)偏移量的計算方法不同

采用DPTR作為基地址寄存器,查表地址為(A)+(DPTR)。采用PC作為基地址寄存器,查表地址為(A)+(PC)+1。因此偏移量的計算方法不同。采用DPTR作為基地址寄存器,A為欲查數值距離表首地址的值;采用PC作為基地址寄存器,A的值必須預先設置為:

A的值=表首地址-當前指令的PC值-14.數據交換指令(5條)

(1)半字節(jié)數據交換指令(2條)指令格式:SWAPA;(A)3~0←→(A)7~4

XCHDA,Ri;(A)3~0←→((Ri))3~0

(2)偏移量的計算方法不同29(2)字節(jié)交換指令(3條)指令格式:XCHA,<src>;<src>包括Rn、Ri、direct。5.堆棧操作指令(2條)

堆棧:按照“先進后出”原則,進、出數據的存儲區(qū)域。棧頂:剛入棧的數據構成棧頂,數據的進出在棧頂進行。指令格式:PUSHdirect;SP←(SP)+1,((SP))←(direct)

POPdirect;(direct)←((SP)),SP←(SP)1特點:堆棧操作指令是一種特殊的數據傳送指令,是根據棧指針SP中的棧頂地址進行數據操作。堆棧操作指令的實質是以棧指針SP為間址寄存器的間址尋址方式。堆棧區(qū)應避開使用的工作寄存器區(qū)和其他需要使用的數據區(qū),系統(tǒng)復位后,SP的初始值為07H。為了避免重疊,一般初始化時要重新設置SP。(2)字節(jié)交換指令(3條)30功能:實現(xiàn)RAM單元數據送入棧頂或由棧頂取出數據送至RAM單元。適用場合:用于執(zhí)行中斷、子程序調用、參數傳遞等程序的斷點保護和現(xiàn)場保護。書寫方式:堆棧操作指令是直接尋址指令,直接地址不能是寄存器名,因此應注意指令的書寫格式。例如:

PUSHACC(不能寫成PUSHA)

POP00H(不能寫成POPR0)功能:實現(xiàn)RAM單元數據送入棧頂或由棧頂取出數據送至RAM單31數據傳送指令小結3種MOV指令:片內RAM數據傳送MOV片外RAM數據傳送MOVX程序存儲器數據傳送MOVC2種數據交換:半字節(jié)、字節(jié)堆棧操作:入棧、出棧數據傳送指令小結3種MOV指令:322.3.2算術運算指令

算術運算指令的兩個參與運算的操作數,一個存放在累加器A中(此操作數也為目的操作數);一個存放在R0~R7或Ri(片內RAM)中,或是#data(立即數)。算術運算指令可以分為加法指令、帶進位的加法指令、帶借位的減法指令、十進制調整指令、加1指令、減1指令、乘除指令。

1.加法指令(4條)

指令格式:

ADDA,<src>;(A)←(A)+<src>

其中:

<src>包括Rn、Ri、direct、#data。對標志位的影響:ADD對PSW中的所有標志位均產生影響。2.3.2算術運算指令算術運算指令的兩個33P54例2.30分析執(zhí)行如下程序段后,A、CY、AC、P、OV的結果。00110110MOVA,#36H+11101111ADDA,#0EFH00100101A=25HCY=1,AC=1,P=1,OV=0溢出:運算結果超出了計算機所能表達數據的范圍。如,8位二進制數表示有符號數的范圍是-128----127。雙高位判別溢出:將最高位產生的進位記為CS,次高位產生的進位記為CP,OV=CS⊕CP

P54例2.30分析執(zhí)行如下程序段后,A、CY、AC、P342.帶進位的加法指令(4條)

指令格式:

ADDCA,<src>;(A)←(A)+<src>+(Cy)

其中:

<src>包括Rn、Ri、direct、#data。對標志位的影響:ADDC對PSW中的所有標志位均產生影響。3.帶借位的減法指令(4條)

指令格式:

SUBBA,<src>;(A)←(A)-<src>-(Cy)

其中:

<src>包括Rn、Ri、direct、#data。對標志位的影響:SUBB對PSW中的所有標志位均產生影響。注意:MCS-51指令系統(tǒng)中沒有不帶借位的減法指令,欲實現(xiàn)不帶借位的減法計算,應預先置Cy=0(利用CLRC指令),然后利用帶借位的減法指令SUBB實現(xiàn)計算。2.帶進位的加法指令(4條)指令格式:ADDCA354.十進制調整指令(1條)BCD碼:4位二進制編碼表示1位10進制數。十進制加法:25+8=33BCD碼:00100101

+0000100000101101不是(00110011)BCD原因:十進制運算,逢10進位,4位二進制運算,逢16進位。修正:結果00101101低4位超過9,低4位加6修正

+011000110011修正原則:低4位超過9或向高4位有進位(AC=1),在低4位加6修正;高4位超過9或向上有進位(CY=1),在高4位加6修正。4.十進制調整指令(1條)BCD碼:4位二進制編碼表示1位36

組合型BCD碼:一個字節(jié)表示兩位十進制數。如25:(00100101)BCD

47:(01000111)BCD非組合型BCD碼:一個字節(jié)表示一位十進制數,且用該字節(jié)的低4位表示,高4位任意。如25:(00000010)BCD(00000101)BCD51單片機的指令只有對壓縮型BCD加法調整的指令。組合型BCD碼:一個字節(jié)表示兩位十進制數。37十進制調整指令

調整指令功能:跟在加法指令ADD或ADDC后面,對運算結果的十進制數進行BCD碼修正,使它調整為壓縮的BCD碼數,以完成十進制加法運算功能。

特點:十進制調整指令也稱為BCD碼修正指令,這是一條專用指令。兩個壓縮的BCD碼按二進制數相加后必須經本指令調整才能得到壓縮的BCD碼的和。源操作數只能在累加器A中,結果存入A中。

指令格式:DAA

注意:十進制調整指令不能對減法指令進行修正。BCD碼減法必須采用BCD補碼運算法則,變減法為補碼加法(被減數+減數的補碼,減數的補碼=9AH-減數)。然后對其進行十進制調整來實現(xiàn)。

十進制調整指令調整指令功能:跟在加法指令ADD或ADD385.加1指令(5條)

功能:加1指令又稱為增量指令,其功能是使操作數所指定的單元的內容加1。指令格式:INC<dest>;<dest>←<dest>+1

其中:

<dest>即是源操作數又是目的操作數(即只有一個操作數),包括A、Rn、direct、Ri、DPTR。對標志位的影響:除對累加器A操作影響P標志位外,其他操作均不影響PSW的各標志位。

6.減1指令(4條)

功能:減1指令又稱為減量指令,其功能是使操作數所指定的單元的內容減1。指令格式:DEC<dest>;<dest>←<dest>-1

其中:

<dest>即是源操作數又是目的操作數(即只有一個操作數),包括A、Rn、direct、Ri。對標志位的影響:同加1指令。5.加1指令(5條)功能:加1指令又稱為增量指令,其功能397.乘除指令(2條)

功能:實現(xiàn)乘法或除法操作。

特點:乘除指令在MCS-51指令系統(tǒng)中執(zhí)行時間最長,均為四周期指令。

指令格式:

MULAB;(B)(A)←(A)×(B)

DIVAB;(A)←(A)/(B)…(B)

對標志位的影響:乘除指令影響PSW中的Cy,OV,P標志位。其中,Cy位總是被清0的,P是由累加器A中1的個數的奇偶性決定的。乘法運算中,若乘積大于FFH,則OV標志位置1,否則清0。除法運算中,若除數為0,則OV標志位置1,否則清0。7.乘除指令(2條)功能:實現(xiàn)乘法或除法操作。40算術運算指令小結ADD,ADC,DAA目的操作數只能是A,源操作數可以是Rn,片內RAM(直接,間接),立即數SBB目的操作數只能是A,源操作數同上。INC,DEC注意操作數的尋址方式。MULA,B放操作數,結果在BADIVA/B,商在A,余數在B算術運算指令小結ADD,ADC,DAA目的操作數只能是41閱讀程序段

將壓縮型BCD碼20H和片內RAM30H單元存放的壓縮型BCD碼相加,結果存片內RAM50H。程序段

MOVA,#20HADDA,30HDAAMOV50H,ASJMP$閱讀程序段將壓縮型BCD程序段422.3.3邏輯運算和移位指令

對標志位的影響:邏輯運算和移位指令中除了兩條帶進位的循環(huán)移位指令外,其余均不影響PSW中的各標志位。但當目的操作數是累加器A時,影響PSW中的奇偶校驗位P。常用的邏輯運算和移位類指令有:邏輯與、邏輯或、邏輯異或、循環(huán)移位、清0、求反(非)等24條指令,它們的操作數都是8位的。邏輯運算都是按位進行的,除用于邏輯運算外,還可用于模擬各種數字邏輯電路的功能,進行邏輯電路的設計。在程序設計中,常用邏輯運算的運算規(guī)則。如,a·1=aa·0=0a·a=aa+1=1a+0=aa+a=aa⊕1=aa⊕0=aa⊕a

=01.邏輯與運算指令(6條)

功能:實現(xiàn)兩個操作數的邏輯與。指令格式:ANLA,<src>;<src>包括Rn、Ri、direct、#data。

ANLdirest,<src>;<src>包括A、#data。2.3.3邏輯運算和移位指令對標志位的影響:邏43

適用場合:實現(xiàn)邏輯與,主要用于操作數的某些位不變(這些位與“1”),某些位置0(這些位與“0”)。2.邏輯或運算指令(6條)功能:實現(xiàn)兩個操作數的邏輯或。指令格式:

ORLA,<src>;<src>包括Rn、Ri、direct、#data。

ORLdirest,<src>;<src>包括A、#data。適用場合:實現(xiàn)邏輯或,主要用于操作數的某些位不變(這些位或“0”),某些位置1(這些位或“1”)。適用場合:實現(xiàn)邏輯與,主要用于操作數的某些位不變(這些位與443.邏輯異或運算指令(6條)

功能:實現(xiàn)兩個操作數的邏輯異或。指令格式:XRLA,<src>;<src>包括Rn、Ri、direct、#data。

XRLdirest,<src>;<src>包括A、#data。適用場合:實現(xiàn)邏輯異或,主要用于操作數的某些位不變(這些位異或“0”),某些位取反(這些位異或“1”)。4.循環(huán)移位指令(4條)

MCS-51單片機的循環(huán)移位指令共有不帶進位的循環(huán)左、右移位(操作碼為RL,RR)和帶進位的循環(huán)左、右移位(操作碼為RLC,RRC)指令4條。特點:只能對累加器A進行循環(huán)移位。指令格式:

操作碼A3.邏輯異或運算指令(6條)45功能:累加器A中的數據逐位左移一位相當于原內容乘2,而逐位右移一位相當于原內容除以2。循環(huán)移位指令示意圖如右圖所示。5.累加器清0與取反指令(2條)

指令格式:CLRA;(A)←00HCPLA;(A)←(A)特點:可以節(jié)省存儲空間,提高程序執(zhí)行效率。

對標志位的影響:CLRA指令只影響PSW的P標志位,CPLA指令不影響PSW各標志位。

功能:累加器A中的數據逐位左移一位相當于原內容乘2,而逐位右46閱讀程序

將A中的壓縮型BCD碼轉換為ASCII碼,存片內RAM20H,21H單元,其中20H單元存高4位(十位)的ASCII碼,21H單元存低4位(個位)的ASCII碼。程序段1.MOVB,AANLA,#0FHORLA,#30HMOV21H,AMOVA,BANLA,#0F0HSWAPAORLA,#30HMOV20H,A閱讀程序將A中的壓縮型BCD程序段1.47閱讀程序

將片內RAM30H,31H單元中存放的兩個ASCII碼轉換為壓縮型BCD碼,存片內RAM40H單元中。其中30H中是該BCD碼十位數的ASCII碼,31H單元中是該BCD碼個位數的ASCII碼。程序段2.MOVA,31HANLA,#0FHMOV20H,AMOVA,30HANLA,#0FHSWAPAORLA,20HMOV40H,A閱讀程序將片內RAM30H,程序段2.482.3.4控制轉移指令

功能:改變PC中的內容,控制程序執(zhí)行的流向,實現(xiàn)程序分支轉向。

為了控制程序的執(zhí)行方向,MCS-51單片機提供了17條控制轉移指令。

對標志位的影響:除了CJNE影響PSW的進位標志位Cy外,其余均不影響PSW的各標志位。

1.無條件轉移指令(4條)

定義:不規(guī)定條件的程序轉移稱為無條件轉移指令。

指令格式:長轉移指令:

LJMPaddr16;(PC)←addr15~0

絕對轉移指令:AJMPaddr11;(PC)←(PC)+2,PC10~0←addr11

相對(短)轉移指令:SJMPrel;(PC)←(PC)+2+rel

間接(散)轉移指令:JMPA+DPTR;(PC)←(DPTR)+(A)2.3.4控制轉移指令功能:改變PC中的內容49注意:(1)使用轉移指令時,指令中的地址或偏移量均可采用標號,只有在執(zhí)行前才被匯編成實際的二進制地址。(2)指令的轉移范圍:

在執(zhí)行當前轉移指令后的PC值的基礎上:

長轉移指令LJMP:64KB

絕對轉移指令AJMP:2KB

相對(短)轉移指令SJMP:-128~+127(用補碼表示)間接(散)轉移指令JMP:64KB(3)相對(短)轉移指令SJMPrel中地址偏移量的計算:

rel=轉移目標地址-轉移指令地址(當前PC值)-2注意:(3)相對(短)轉移指令SJMPrel中地址偏50(4)原地踏步(暫停當前的程序,并不是真的停機)的實現(xiàn)

SJMP$

或HERE:SJMPHERE

(5)間接(散)轉移指令:JMPA+DPTR常用于實現(xiàn)程序的分支轉移(散轉)。DPTR為轉移目的的起始地址,A為轉移目的的偏移量。(6)在編程中,經常使用短轉移指令SJMP和相對轉移指令AJMP,以便生成浮動代碼,并不經常使用長轉移指令LJMP。

2.條件轉移指令(2條)功能:在規(guī)定的條件滿足時進行程序轉移,否則程序往下順序執(zhí)行。MCS-51單片機中,條件轉移指令實質上是累加器A判零指令。(4)原地踏步(暫停當前的程序,并不是真的停機)的實現(xiàn)51指令格式:

JZrel;若(A)=0,則轉移(PC)←(PC)+2+rel

若(A)≠0,則順序執(zhí)行(PC)←(PC)+2JNZrel;若(A)≠0,則轉移(PC)←(PC)+2+rel

若(A)=0,則順序執(zhí)行(PC)←(PC)+2指令的轉移范圍:

rel的取值范圍是在執(zhí)行當前轉移指令后的PC值基礎上的-128~+127(用補碼表示)??梢圆捎梅柕刂繁硎?。偏移量rel的計算方法:

rel=轉移目標地址-轉移指令地址(當前PC值)-2指令格式:523.比較轉移指令(4條)

P3指令格式:CJNE目的操作數,源操作數,rel

當目的操作數為A時,源操作數為#data、direct。當目的操作數為Rn、Ri時,源操作數為#data;

即:CJNEA,direct,relCJNEA,#data,relCJNERn,#data,relCJNERi,#data,rel功能:把兩個操作數進行比較,以比較的結果作為條件來控制程序的轉移。若(目的操作數)=(源操作數),則程序繼續(xù)執(zhí)行,(PC)←(PC)+3若(目的操作數)>(源操作數),則程序轉移,(PC)←(PC)+rel+3,Cy←0若(目的操作數)<(源操作數),則程序轉移,(PC)←(PC)+rel+3,Cy←13.比較轉移指令(4條)P353功能:比較兩個操作數的大小。

對標志位影響:影響Cy標志位,不影響其他標志位。指令的轉移范圍:rel的取值范圍是在執(zhí)行當前轉移指令后的PC值基礎上的-128~+127(用補碼表示)??梢圆捎梅柕刂繁硎?。注意:比較轉移指令的比較是通過兩操作數的減法實現(xiàn)的,影響Cy標志位,不保存最后的差值,兩個操作數的內容不變。

4.循環(huán)(減1條件)轉移指令(2條)

功能:具有減1判非0則轉移的功能。主要用于控制程序循環(huán),實現(xiàn)按循環(huán)次數控制循環(huán)的目的。特點:循環(huán)轉移指令是一組把減1與條件轉移兩種功能結合在一起的指令。功能:比較兩個操作數的大小。54指令格式:

DJNZ<dest>,rel;<dest>←<dest>-1

若<dest>≠0,則轉移(PC)←(PC)+2+rel

若<dest>=0,則不轉移(PC)←(PC)+2注意:條件轉移指令均為相對轉移指令,因此指令的轉移范圍十分有限。若要實現(xiàn)64KB范圍內的轉移,則可以借助于一條長轉移指令的過渡來實現(xiàn)。5.子程序調用與返回指令(4條)定義:具有完整功能的程序段定義為子程序,供主程序調用。

功能:

供主程序在需要時調用。子程序可以在程序中反復多次使用,以簡化源程序的書寫。特點:子程序可以嵌套,有利于模塊化程序設計。指令格式:DJNZ<dest>,rel;55

主程序與子程序之間的調用關系如下左圖所示,兩級子程序嵌套的示意圖如下右圖所示。

主程序與子程序之間的調用關系如下左圖所示,兩級子程序56

為了實現(xiàn)主程序對子程序的一次完整調用,必須有子程序調用指令和子程序返回指令。子程序調用指令在主程序中使用,而子程序返回指令則是子程序的最后一條指令。調用與返回指令是成對使用的。子程序調用指令的功能:必須具有自動把程序計數器PC中的斷點地址保護到堆棧中,且將子程序入口地址自動送入程序計數器PC中的功能。子程序返回指令的功能:必須具有自動把堆棧中的斷點地址恢復到程序計數器PC中的功能。注意:子程序調用時應注意入口參數設置,子程序返回時應注意出口參數的傳遞。為了實現(xiàn)主程序對子程序的一次完整調用,必須有子程序調57

指令格式:(1)絕對短調用指令

ACALLaddr11;(PC)←(PC)+2,

(SP)←(SP)+1,(SP)←(PC)7~0(SP)←(SP)+1,(SP)←(PC)15~8,(PC)10~0←addr11

其中:

addr11為11位地址,實際編程時可以用符號地址。并且只能在2KB范圍以內調用子程序。(2)絕對長調用指令

LCALLaddr16;(PC)←(PC)+3,

(SP)←(SP)+1,(SP)←(PC)7~0(SP)←(SP)+1,(SP)←(PC)15~8,(PC)15~0←addr16

其中:

addr16為16位地址,實際編程時可以用符號地址??梢栽?4KB范圍以內調用子程序。指令格式:58(3)子程序返回指令

RET;(PC)15~8←((SP)),(SP)←(SP)1,

(PC)7~0←((SP)),(SP)←(SP)1(4)中斷返回指令

RETI;(PC)15~8←((SP)),(SP)←(SP)1,

(PC)7~0←((SP)),(SP)←(SP)1注:中斷服務程序是一種特殊的子程序,它是在計算機響應中斷時,由硬件完成調用而進入相應的中斷服務程序。RETI指令與RET指令相仿,區(qū)別在于RET是從子程序返回,RETI是從中斷服務程序返回。無論是RET還是RETI都是子程序執(zhí)行的最后一條指令。(3)子程序返回指令59子程序調用及返回舉例主程序子程序….MOVA,20HAD1:RLALCALLAD1RLA●MOV30H,ARLA….RET子程序調用及返回舉例主程序606.空操作指令NOP(1條)指令格式:

NOP;(PC)←(PC)+1功能:不執(zhí)行任何操作,消耗了一個機器周期,常用于軟件延時或在程序可靠性設計中用來穩(wěn)定程序。特點:NOP占據一個單元的存儲空間,除了使PC的內容加1外,CPU不產生任何操作結果,只是消耗了一個機器周期。6.空操作指令NOP(1條)61第2章MCS-51單片機指令系統(tǒng)

與匯編語言程序設計主要內容:

MCS-51單片機指令系統(tǒng)的尋址方式、指令系統(tǒng)、基本程序結構及匯編語言的開發(fā)和調試。

重點在于尋址方式、各種指令的應用、程序設計的規(guī)范、程序設計的思想及典型程序的理解和掌握。難點在于控制轉移、位操作指令的理解及各種指令的靈活應用,以及程序設計的基本方法和針對具體的硬件設計出最合理的軟件。第2章MCS-51單片機指令系統(tǒng)

與匯編語言程序設計主要62

指令系統(tǒng):一臺計算機所能識別、執(zhí)行的指令的集合就是它的指令系統(tǒng)。

機器語言:指令系統(tǒng)是一套控制計算機執(zhí)行操作的二進制編碼,稱為機器語言。機器語言指令是計算機惟一能識別和執(zhí)行的指令。

匯編語言:指令系統(tǒng)是利用指令助記符來描述的,稱為匯編語言。

計算機的指令系統(tǒng)一般都是利用匯編語言描述的,是由計算機硬件設計所決定的。指令系統(tǒng)沒有通用性。單片機一般是空機,未含任何系統(tǒng)軟件。因此在第一次使用前,必須對其進行編程,

2.1概述

指令系統(tǒng):2.1概述632.1.1匯編語言指令格式與偽指令

1.常用單位與術語

位(bit):位是計算機所能表示的最小的、最基本的數據單位,位通常是指一個二進制位。

字節(jié)(Byte):一個連續(xù)的8位二進制數碼稱為一個字節(jié),即1Byte=8bit。

字(Word):通常由16位二進制數碼組成,即1Word=2Byte。

字長:字長是指計算機一次處理二進制數碼位的多少。MCS-51型單片機是8位機,所以說它的字長為8位。

MCS-51系列單片機都是以Intel公司最早的典型產品8051為核心,增加了一定的功能部件后構成的。本章以8051為主介紹MCS-51系列單片機。2.1.1匯編語言指令格式與偽指令1.常用單位與術語642.匯編語言指令格式

指令格式:指令的表示方式稱為指令格式,它規(guī)定了指令的長度和內部信息的安排。完整的指令格式如下:[標號:]操作碼

[操作數][,操作數][;注釋]其中:[]項是可選項。標號:指本條指令起始地址的符號,也稱為指令的符號地址。代表該條指令在程序編譯時的具體地址。操作碼:又稱助記符,它是由對應的英文縮寫構成的,是指令語句的關鍵。它規(guī)定了指令具體的操作功能,描述指令的操作性質,是一條指令中不可缺少的內容。操作數:它既可以是一個具體的數據,也可以是存放數據的地址。注釋:注釋也是指令語句的可選項,它是為增加程序的可讀性而設置的,是針對某指令而添加的說明性文字,不產生可執(zhí)行的目標代碼。2.匯編語言指令格式指令格式:指令的表示方式稱為指令格式,65

偽指令(也稱為匯編程序的控制命令)是程序員發(fā)給匯編程序的命令,用來設置符號值、保留和初始化存儲空間、控制用戶程序代碼的位置。

偽指令只出現(xiàn)在匯編前的源程序中,僅提供匯編用的某些控制信息,不產生可執(zhí)行的目標代碼,是CPU不能執(zhí)行的指令。

(1)定位偽指令ORG

格式:ORGn

其中:n通常為絕對地址,可以是十六進制數、標號或表達式。

功能:規(guī)定編譯后的機器代碼存放的起始位置。在一個匯編語言源程序中允許存在多條定位偽指令,但每一個n值都應和前面生成的機器指令存放地址不重疊。例如程序: ORG 1000H START:MOV A,#20H MOV B,#30H┇3.偽指令

偽指令(也稱為匯編程序的控制命令)是程序員發(fā)66(2)結束匯編偽指令END

格式:[標號:]END[表達式]

功能:放在匯編語言源程序的末尾,表明源程序的匯編到此結束,其后的任何內容不予理睬。(3)賦值偽指令EQU

格式:字符名稱xEQU賦值項n

功能:將賦值項n的值賦予字符名稱x。程序中凡出現(xiàn)該字符名稱x就等同于該賦值項n,其值在整個程序中有效。賦值項n可以是常數、地址、標號或表達式。在使用時,必須先賦值后使用?!白址Q”與“標號”的區(qū)別是“字符名稱”后無冒號,而“標號”后面有冒號。(2)結束匯編偽指令END(3)賦值偽指令EQU67(4)定義字節(jié)偽指令DB

格式:[標號:]DBx1,x2,…,xn

功能:將8位數據(或8位數據組)x1,x2,…,xn順序存放在從當前程序存儲器地址開始的存儲單元中。xi可以是8位數據、ASCII碼、表達式,也可以是括在單引號內的字符串。兩個數據之間用逗號“,”分隔。

xi為數值常數時,取值范圍為00H~FFH。xi為ASCII碼時,要使用單引號‘’,以示區(qū)別。xi為字符串常數時,其長度不應超過80個字符。(5)定義雙字節(jié)偽指令DW

格式:[標號:]DWx1,x2,…,xn

功能:將雙字節(jié)數據[或雙字節(jié)數據組]順序存放在從標號指定地址單元開始的存儲單元中。其中,xi為16位數值常數,占兩個存儲單元,先存高8位(存入低位地址單元中),后存低8位(存入高位地址單元中)。(4)定義字節(jié)偽指令DB68

(6)預留存儲空間偽指令DS

格式:[標號:]DSn

功能:從標號指定地址單元開始,預留n個存儲單元,匯編時不對這些存儲單元賦值。n可以是數據,也可以是表達式。P39例(7)定義位地址符號偽指令BIT

格式:字符名稱xBIT位地址n

功能:將位地址n的值賦予字符名稱x。程序中凡出現(xiàn)該字符名稱x就代表該位地址。位地址n可以是絕對地址,也可以是符號地址。

(8)數據地址賦值偽指令DATA

格式:字符名稱xDATA表達式n

功能:把表達式n的值賦值給左邊的字符名稱x。n可以是數據或地址,也可以是包含所定義的“字符名稱x”在內的表達式,但不能是匯編符號。

DATA與EQU的主要區(qū)別是:EQU定義的“字符名稱”必須先定義后使用,而DATA定義的“字符名稱”沒有這種限制。所以,DATA偽指令通常用在源程序的開頭或末尾。

(6)預留存儲空間偽指令DS692.1.2指令的分類

MCS-51指令系統(tǒng)有111條指令,可按下列幾種方式分類:按指令字節(jié)數分類

單字節(jié)指令(49條)、雙字節(jié)指令(46條)和三字節(jié)指令(16條)。2.按指令執(zhí)行時間分類

單機器周期指令(65條)、雙機器周期指令(44條)和四機器周期指令(2條)。3.按功能分類

數據傳送指令(29條)、算術操作指令(24條)、邏輯操作指令(24條)、控制轉移指令(17條)和位操作指令(17條)。2.1.2指令的分類MCS-51指令系統(tǒng)有11702.1.3指令中的常用符號

Rn(n=0~7):表示當前工作寄存器R0~R7中的任一個寄存器。

Ri(i=0或1):表示通用寄存器組中用于間接尋址的兩個寄存器R0,R1。

#data:表示8位直接參與操作的立即數。

#data16:表示16位直接參與操作的立即數。

direct:表示片內RAM的8位單元地址。

addr11:表示11位目的地址,主要用于ACALL和AJMP指令中。

addr16:表示16位目的地址,主要用于LCALL和LJMP指令中。

rel:用補碼形式表示的8位二進制地址偏移量,取值范圍為128~+127,主要用于相對轉移指令,以形成轉移的目的地址。

DPTR:數據指針,用于寄存器間接尋址方式和變址尋址方式。2.1.3指令中的常用符號Rn(n=0~7):表示712.1.3指令中的常用符號

bit:表示片內RAM的位尋址區(qū),或者是可以位尋址的SFR的位地址。

A(或ACC)、B:表示累加器、B寄存器。

C:表示PSW中的進位標志位Cy。

:在間接尋址方式中,表示間接尋址寄存器指針的前綴標志。

$:表示當前的指令地址。

/:在位操作指令中,表示對該位先求反后再參與操作。

(X):表示由X所指定的某寄存器或某單元中的內容。

((X)):表示由X間接尋址單元中的內容。

←:表示指令的操作結果是將箭頭右邊的內容傳送到左邊。

→:表示指令的操作結果是將箭頭左邊的內容傳送到右邊。

∨、∧、⊕:表示邏輯或、與、異或。2.1.3指令中的常用符號bit:表示片內RAM的位72

尋址方式:在計算機中,說明操作數所在地址的方法稱為指令的尋址方式。計算機執(zhí)行程序實際上是在不斷尋找操作數并進行操作的過程。每種計算機在設計時已決定了它具有哪些尋址方式,尋址方式越多,計算機的靈活性越強,指令系統(tǒng)也就越復雜。

MCS-51單片機的指令系統(tǒng)提供了7種尋址方式,分別為立即尋址、直接尋址、寄存器尋址、寄存器間接尋址、變址尋址、相對尋址和位尋址。一條指令可能含多種尋址方式。2.2MCS-51單片機的尋址方式

尋址方式:在計算機中,說明操作數所在地址的方法稱為指令的732.2.1立即尋址

定義:將立即參與操作的數據直接寫在指令中,這種尋址方式稱為立即尋址。

特點:指令中直接含有所需的操作數。該操作數可以是8位的,也可以是16位的,常常處在指令的第二字節(jié)和第三字節(jié)的位置上。立即數通常使用#data或#data16表示,在立即數前面加“#”標志,用以和直接尋址中的直接地址(direc或bit)相區(qū)別。P41例

2.2.2直接尋址

定義:將操作數的地址直接存放在指令中,這種尋址方式稱為直接尋址。特點:指令中含有操作數的地址。該地址指出了參與操作的數據所在的字節(jié)單元地址或位地址。計算機執(zhí)行它們時便可根據直接地址找到所需要的操作數。尋址范圍:ROM、片內RAM區(qū)、SFR和位地址空間。P42

2.2.1立即尋址定義:將立即參與操作的數據直742.2.3寄存器尋址定義:操作數存放在MCS-51內部的某個工作寄存器Rn(R0~R7)或部分專用寄存器中,這種尋址方式稱為寄存器尋址。特點:由指令指出某一個寄存器的內容作為操作數。存放操作數的寄存器在指令代碼中不占據單獨的一個字節(jié),而是嵌入(隱含)到操作碼字節(jié)中。尋址范圍:四組通用寄存器Rn(R0~R7)、部分專用寄存器(A,B,DPTR,Cy)。2.2.3寄存器尋址75

2.2.4寄存器間接尋址定義:指令給出的寄存器中存放的是操作數據的單元地址。這種尋址方式稱為

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論