第4章MCS-51指令系統(tǒng)2_第1頁
第4章MCS-51指令系統(tǒng)2_第2頁
第4章MCS-51指令系統(tǒng)2_第3頁
第4章MCS-51指令系統(tǒng)2_第4頁
第4章MCS-51指令系統(tǒng)2_第5頁
已閱讀5頁,還剩90頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院第4章

MCS-51指令系統(tǒng)2西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院4.1概述指令:供用戶使用的單片機(jī)軟件資源指令系統(tǒng):計算機(jī)能執(zhí)行的指令集合,是由硬件廠商定義的單片機(jī)使用:機(jī)器語言匯編語言

C語言14.1概述4.1.1計算機(jī)語言(1)機(jī)器語言:是用二進(jìn)制代碼表示的,能被計算機(jī)直接識別和執(zhí)行的一種機(jī)器指令的集合。優(yōu)點(diǎn):靈活、能被計算機(jī)直接執(zhí)行、速度快等。

缺點(diǎn):直觀性差,很容易出錯,通用性很差。(2)匯編語言:是一種用助記符表示的仍然面向機(jī)器的計算機(jī)語言,又將其稱為符號語言。

優(yōu)點(diǎn):用符號代替了機(jī)器指令代碼,簡化了編程過程,而且助記符與指令代碼一一對應(yīng),基本保留了機(jī)器語言的靈活性。占用的內(nèi)存空間少,運(yùn)行速度快。

14缺點(diǎn):必須對編寫的程序進(jìn)行加工和翻譯,才能變成能夠被計算機(jī)識別和處理的二進(jìn)制代碼程序。仍然是面向機(jī)器的語言,使用起來還是比較繁瑣費(fèi)時,通用性差。用匯編語言等非機(jī)器語言書寫好的符號程序稱匯編語言源程序。(3)高級語言:與自然語言相近并為計算機(jī)所接受和執(zhí)行的計算機(jī)語言稱為高級語言,它是面向用戶的語言。優(yōu)點(diǎn):編程容易,不需要編程者對機(jī)器硬件有較好的了解。缺點(diǎn):執(zhí)行速度比機(jī)器語言和匯編語言慢。5西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院指令基本格式

[標(biāo)號:]操作碼

[目的操作數(shù)][,源操作數(shù)][;注釋]START:MOVA,#30H;將立即數(shù)30H傳送至A中

MOVDPTR,#5678H;將立即數(shù)5678H傳送至DPTR方括符[]表示可選項(xiàng)

標(biāo)號:(1)1-8個字母/數(shù)字組成(以字母開頭),不能用匯編語言中定義的符號,不能重復(fù)定義。(2)指令前的標(biāo)號代表該指令的地址,是用符號表示的地址,用于一段功能程序的識別標(biāo)記或控制轉(zhuǎn)移地址。(3)標(biāo)號必須用冒號“:”與;操作碼分隔。6西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院指令基本格式

[標(biāo)號:]操作碼

[目的操作數(shù)][,源操作數(shù)][;注釋]START:MOVA,#30H;將立即數(shù)30H傳送至A中

MOVDPTR,#5678H;將立即數(shù)5678H傳送至DPTR方括符[]表示可選項(xiàng)

操作碼:表示指令的操作功能。①操作碼用助記符表示,它代表了指令的操作功能。②操作碼是指令的必需部分,是指令的核心,不可缺少。7西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院指令基本格式

[標(biāo)號:]操作碼

[目的操作數(shù)][,源操作數(shù)][;注釋]START:MOVA,#30H;將立即數(shù)30H傳送至A中

MOVDPTR,#5678H;將立即數(shù)5678H傳送至DPTR方括符[]表示可選項(xiàng)

操作數(shù):參加操作的數(shù)據(jù)或數(shù)據(jù)地址。①操作數(shù)可以是數(shù)據(jù),也可以是數(shù)據(jù)的地址、數(shù)據(jù)地址的地址或操作數(shù)的其他信息。②操作數(shù)可分為目的操作數(shù)和源操作數(shù)。③操作數(shù)可用二進(jìn)制數(shù)、十進(jìn)制數(shù)或十六進(jìn)制數(shù)表示。④操作數(shù)的個數(shù)可以是0~3個。⑤操作數(shù)與操作碼之間用空格分隔,操作數(shù)與操作數(shù)之間用逗號“,”分隔。8西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院注釋:指令功能說明。①注釋屬于非必需項(xiàng),是為便于閱讀而對指令功能作的說明和注解。②注釋必須以“;”開始。分界符:194.1.3操作數(shù)的類型MOVA,#30MOVB,AMOVR0,#40H1)立即數(shù)2)寄存器操作數(shù)3)存儲器操作數(shù)(單元地址)MOVA,20H10西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院4.1.4單片機(jī)指令格式

單片機(jī)指令長度:變長指令(長度是不定的)

一字節(jié)指令(49條)(1)操作碼和操作數(shù)占一個單元,如:INCDPTR

指令碼:10100011(2)指令的操作數(shù)在寄存器中,而寄存器編碼只需3位2進(jìn)制,故可擠在一個字節(jié)如:MOVA,Rn

指令碼:11101rrr

(rrr通用寄存器二進(jìn)制編碼)11西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院

二字節(jié)指令(45條)一個字節(jié)為操作碼,一個字節(jié)為操作數(shù),如MOV20H,R0

三字節(jié)指令(17條)操作碼一個字節(jié),操作數(shù)兩個字節(jié):MOV60H,#2FH

12西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院※每條指令在執(zhí)行時要花去一定的時間,以機(jī)器周期為單位。按指令執(zhí)行時間分類:單周期(64條);雙周期(45條);4周期(2條)※

按指令的功能分類,可分為5大類:數(shù)據(jù)傳送類(29條);算術(shù)運(yùn)算類(24條);邏輯運(yùn)算及移位類(24);控制轉(zhuǎn)移類(17條);位操作類(17條)13西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院4.1.5常用偽指令單片機(jī)匯編語言程序設(shè)計中,除了使用指令系統(tǒng)規(guī)定的指令外,還要用到一些偽指令。偽指令又稱指示性指令,具有和指令類似的形式,但匯編時偽指令并不產(chǎn)生可執(zhí)行的目標(biāo)代碼,只是對匯編過程進(jìn)行某種控制或提供某些匯編信息。也稱匯編命令或匯編程序控制指令。下面對常用的偽指令作一簡單介紹(P48)。1.匯編起始地址偽指令ORG格式:[標(biāo)號:]ORG地址表達(dá)式

功能:規(guī)定程序塊或數(shù)據(jù)塊存放的起始位置 例如:ORG1000H;表示下面指令MOVA,#20H存放于1000H開始的單元。

MOVA,#20H114一個源程序中,可多次使用ORG指令以規(guī)定不同程序段的起始位置。地址應(yīng)從小到大順序排列,不允許重疊。例如:

ORG1000H LJMP MAIN

ORG 1200HMAIN: MOV A,30H

1152)END(ENDofassembly)匯編終止命令

功能:用于終止源程序的匯編工作。格式:

[標(biāo)號:]END一個源程序只能有一個END命令。后面的不予執(zhí)行。1163)DB(DefineByte)定義數(shù)據(jù)字節(jié)命令功能:用于從指定的地址單元開始,在程序存儲器中定義字節(jié)數(shù)據(jù)。例4-1分別從ROM的1000H和1020H單元開始,按順序存放0~9中每個整數(shù)的平方值和字符串“Anapple!”。C語句charsquare[]={0,1,4,9,16,25,36,49,64,81};charstring[]=“Anapple!”;117ORG0000HSTART: NOP ;空操作語句

ORG1000HDATA1: DB 0,1,4,9,16,25,36,49,64,81 ORG1020HDATA2: DB“Anapple!” END118單元地址ROM中的內(nèi)容單元地址ROM中的內(nèi)容0FFFH…101FH…1000H00H1020H41H(A)1001H01H1021H6EH(n)1002H04H1022H20H(空格)1003H09H1023H61H(a)1004H10H1024H70H(p)1005H19H1025H70H(p)1006H24H1026H6CH(l)1007H31H1027H65H(e)1008H40H1028H21H(!)1009H51H1029H…19西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院4.定義字?jǐn)?shù)據(jù)偽指令DW格式:[標(biāo)號:]DW

字?jǐn)?shù)據(jù)表 功能:與DB類似,但DW定義的數(shù)據(jù)項(xiàng)為字,包括兩個字節(jié),存放時高位在低單元,低位在高單元。 例如: ORG1000H DATA:DW324AH,3CH

;表示從1000H單元開始的地方存放數(shù)據(jù)32H,4AH,00H,3CH(3CH以字的形式表示為003CH)。單元地址ROM中的內(nèi)容10FFH…1100H34H1101H78H1102H00H1103H10H1104H0FFH1105H0FFH1109H…ORG1100HDATA2:DW 3478H,10H,-1120

注意:

DB和DW定義的數(shù)表,數(shù)的個數(shù)不得超過80個。如果數(shù)據(jù)的數(shù)目較多時,可使用多個定義命令。在MCS-51程序設(shè)計應(yīng)用中,常以DB定義數(shù)據(jù),以DW定義地址。121(5)DS(DefineStorage)定義存儲區(qū)命令功能:用于從指定地址開始,保留指定數(shù)目的字節(jié)單元為存儲區(qū),供程序運(yùn)行使用。匯編時對這些單元不賦值。格式:[標(biāo)號:]DS16位數(shù)表

例: ADDRTABL:DS20

例: ORG8100H DS 08H注意:對MSC-51單片機(jī)來說,DB、DW、DS命令只能對程序存儲器使用,不能對數(shù)據(jù)存儲器使用。122例如: X EQU20 Y EQU30 Z EQUX+Y AA EQUR1(6)EQU(Equate)賦值命令功能:用于給字符名稱賦予一個特定值。賦值以后,其值在整個過程中有效。格式:

字符名稱EQU賦值項(xiàng)“賦值項(xiàng)”:可以是常數(shù)、地址、標(biāo)號或表達(dá)式。MOVA,#XMOVA,X123(7)DATA數(shù)據(jù)地址賦值命令格式:字符名稱DATA項(xiàng)功能:與EQU基本類似,但有以下差別。*EQU定義的字符名稱必須先定義后使用,而DATA定義的字符名可以先使用后定義。*用EQU可以把一個匯編符號賦給字符名稱,如上例中的R1,而DATA只能把數(shù)據(jù)賦給字符名。AA EQUR1124(8).BIT位定義命令功能:用于給字符名稱賦以位地址。格式:字符名稱BIT位地址例如:

AAABIT40H BBBBIT 50H

其中“位地址”可以是絕對地址,也可以是符號地址。例如:MOVCy,AAA3.1.3尋址方式指令執(zhí)行是對操作數(shù)而言,只有找到操作數(shù)才能處理,操作數(shù)在指令中可以是其本身,也可是其所在地址,故須確定如何找到操作數(shù),這就是尋址。25西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院我的信在他那!找信②①注:找信是尋找信的“地址”!26西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院退貨(買西裝):到開元找王經(jīng)理退貨到開元找售后服務(wù)部門經(jīng)理退貨到賣衣服的店找售后服務(wù)經(jīng)理辦公室退貨到買衣服的店找售后服務(wù)辦公室聯(lián)系經(jīng)理退貨找12315

找買衣服店長+(下屬分管售后的人)

立即尋址直接尋址寄存器尋址寄存器間接尋址變址尋址相對尋址27西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院1.寄存器尋址方式:操作數(shù)在寄存器時,指定寄存器名稱用來得到操作數(shù)MOVA,Rn

尋址范圍:

*通用寄存器,R0~R7(共32個但每次只能是8個。用PSW中的RS1、RS0控制)

*部分專用寄存器:A、B、DPTP28西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院2.直接尋址(直接給出地址)

操作數(shù)以單元地址形式給出MOVA,3AH

尋址范圍:只有8位,所以只限內(nèi)部RAM。

(1)低128位單元。

(2)專用寄存器(單元地址、寄存器符號)

(3)位地址空間。

例:MOVA,3AH

29西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院3.立即尋址(標(biāo)志符號#)操作數(shù)在指令中直接給出。

MOVA,#dataMOVA,#3AH◎都為8位數(shù),但有唯一的16位立即數(shù)。MOVDPTR,#data16◎?yàn)榱伺c直接尋址區(qū)別,在立即數(shù)前需加“#”標(biāo)志。30西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院4.寄存器間接尋址

寄存器尋址方式,但寄存器中不是操作數(shù),而是操作數(shù)的地址。為了區(qū)別寄存器尋址方式,在寄存器前要有@標(biāo)志。

MOVA,@R0尋址范圍:◎內(nèi)部RAM低128位,且只能使用R0和R1寄存器。(@Ri.i=0、1)◎外部64K,只能使用DPTR寄存器(16位)。(@DPTR)◎外部RAM的低256單元,也可使用R0和R1寄存器以及DPTR寄存器(MOVX)?!蚨褩2僮饕惨暈榇朔N尋址,SP為寄存器的間接尋址。31西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院5.變址尋址

為了訪問程序寄存器中的數(shù)據(jù)表格,以DPTR和PC為基址,以A為變址寄存器,以基址和變址的和為操作數(shù)地址達(dá)到訪問的目的。

MOVCA,@A+DPTR尋址范圍:·只針對程序寄存器進(jìn)行尋址,尋址范圍可達(dá)64K?!ぶ挥?條

MOVCA,@A+DPTRMOVCA,@A+PCJMP@A+DPTR·都是1字節(jié)指令32西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院7.相對尋址

為了解決程序轉(zhuǎn)移而設(shè)置的。跳轉(zhuǎn)指令地址+跳轉(zhuǎn)指令字節(jié)數(shù)+rel=PC+relrel是帶符號的8位補(bǔ)碼數(shù),尋址范圍-128~+127。目的地址的計算方法:PC+rel轉(zhuǎn)移指令字節(jié)數(shù)一般為2字節(jié),也有3字節(jié)的。33西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院6.位尋址

以數(shù)據(jù)位進(jìn)行操作。

MOVC,3AH

尋址范圍:*內(nèi)部RAM的位尋址區(qū)。單元地址20H~2FH,共16個單元128位。兩種表示方式:位地址,單元地址加位。*專用寄存器可尋址位,共11個寄存器83個位,表示方式:·直接位地址(PSW位5地址為0D5H)·位名稱(F0)、·單元地址加位(0D0H.5)、·專用寄存器符號加位(PSW.5)34西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院3.1.4尋址方式小結(jié)

1、變址尋址方式只適用于程序存儲器。

2、內(nèi)部數(shù)據(jù)存儲器尋址方式較多。

3、外部數(shù)據(jù)存儲器只能使用寄存器間接尋址方式。

MOVXA,@RiMOVXA,@DPTR 4、相對尋址只解決程序轉(zhuǎn)移問題。

5、兩個操作數(shù),左邊的為目的操作數(shù),右邊為源操作數(shù)。以上都對源操作數(shù)而言,但目的操作數(shù)也存在尋址問題。目的操作數(shù)只有:寄存器尋址、直接尋址、寄存器間接尋址和位尋址4種情況。35西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院3.2指令分類 數(shù)據(jù)傳送29條 算術(shù)運(yùn)算24條 邏輯運(yùn)算及移位類24條 控制轉(zhuǎn)移17條 位操作17條36西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院符號含義Rn表示當(dāng)前選定寄存器組的工作寄存器R0~R7Ri表示作為間接尋址的地址指針R0~R1direct表示8位直接地址#data表示8位立即數(shù),即00H~FFH#data16表示16位立即數(shù),即0000H~FFFFHaddr16表示16位地址,用于64K范圍內(nèi)尋址addr11表示11位地址,用于2K范圍內(nèi)尋址direct8位直接地址,可以是內(nèi)部RAM區(qū)的某一單元或某一專用功能寄存器的地址rel帶符號的8位偏移量(補(bǔ)碼數(shù))(-128~+127)DPTR數(shù)據(jù)指針bit內(nèi)部RAM位尋址區(qū)的直接尋址位A累加器ACC直接尋址方式的累加器B寄存器BC進(jìn)位標(biāo)志位,布爾處理器的累加器或累加位@間接尋址前綴標(biāo)志(X)X地址單元中的內(nèi)容/對該位取反((X))將X地址單元中的內(nèi)容作為地址,該地址單元中的內(nèi)容←將←后面的內(nèi)容傳送到前面去37西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院3.2.2數(shù)據(jù)傳送指令數(shù)據(jù)傳送不是搬家,是復(fù)制。 目的地址源地址數(shù)據(jù)

源操作數(shù)有:A、Rn、direct、間接寄存器、#data。 目的操作數(shù):A、Rn、direct、間接寄存器。1.內(nèi)部8位數(shù)據(jù)傳送指令內(nèi)部8位數(shù)據(jù)傳送指令共15條,主要用于MCS-51單片機(jī)內(nèi)部RAM與寄存器之間的數(shù)據(jù)傳送。指令基本格式:

MOV<目的操作數(shù)>,<源操作數(shù)>

38西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院1)以累加器A為目的地址的傳送指令(4條)注意:以上傳送指令的結(jié)果影響程序狀態(tài)字寄存器PSW的P標(biāo)志。

助記符格式機(jī)器碼相應(yīng)操作指令說明機(jī)器周期MOVA,Rn11101rrrARnn=0~7rrr=000~1111MOVA,direct11100101directAdirect1MOVA,@Ri1110011iA(Ri)i=0,11MOVA,#data01110100#dataA#data139西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院例3.1

已知相應(yīng)單元的內(nèi)容,請指出每條指令執(zhí)行后相應(yīng)單元內(nèi)容的變化。①M(fèi)OVA,#20H②MOVA,40H③MOVA,R0④MOVA,@R0解:①M(fèi)OVA,#20H執(zhí)行后A=20H②MOVA,40H執(zhí)行后A=30H③MOVA,R0執(zhí)行后A=50H④MOVA,@R0執(zhí)行后A=10H40西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院助記符格式機(jī)器碼(B)相應(yīng)操作指令說明機(jī)器周期MOVRn,A11111rrrRnAN=0~7rrr=000~1111MOVRn,direct10101rrrdirectRndirectN=0~7rrr=000~1112MOVRn,#data01111rrr#dataRn#dataN=0~7rrr=000~11112)以Rn為目的地址的傳送指令(3條)注意:以上傳送指令的結(jié)果不影響程序狀態(tài)字寄存器PSW標(biāo)志。41西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院3)以直接地址為目的地址的傳送指令(5條)注意:以上傳送指令的結(jié)果不影響程序狀態(tài)字寄存器PSW標(biāo)志。助記符格式機(jī)器碼(B)相應(yīng)操作指令說明機(jī)器周期MOVdirect,A11111010directdirectA1MOVdirect,Rn10001rrrdirectdirectRnN=0~7rrr=000~1112MOVdirect2,direct110000101direct1direct2direct2direct12MOVdirect,@Ri1000011idirectdirect(Ri)i=0,12MOVdirect,#data01110101direct#datadirect#data242西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院4)以寄存器間接地址為目的地址的傳送指令(3條)注意:以上傳送指令的結(jié)果不影響程序狀態(tài)字寄存器PSW標(biāo)志。助記符格式機(jī)器碼(B)相應(yīng)操作指令說明機(jī)器周期MOV@Ri,A1111011i(Ri)Ai=0,11MOV@Ri,direct1110011idirect(Ri)(direct)2MOV@Ri,#data0111010i#data(Ri)#data143西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院例3.2

已知相應(yīng)單元的內(nèi)容,請指出下列指令執(zhí)行后各單元內(nèi)容相應(yīng)的變化。① MOVA,R6② MOVR7,70H③MOV70H,50H④MOV40H,@R0⑤MOV@R1,#88H解: ①M(fèi)OVA,R6執(zhí)行后A=30H ②MOVR7,70H執(zhí)行后R7=40H③MOV70H,50H執(zhí)行后(70H)=60H④MOV40H,@R0執(zhí)行后(40H)=60H⑤MOV@R1,#88H執(zhí)行后(66H)=88H44西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院,ARndirect1@RiARndirect2@Ri#dataARndirect2@Ri#dataMOVRnA#datadirect2direct1ARndirect2@Ri#data@RiAdirect2#data源操作數(shù)和目的操作數(shù)不能同時為Rn45西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院

2.16位數(shù)據(jù)傳送指令(1條)注意:以上指令結(jié)果不影響程序狀態(tài)字寄存器PSW標(biāo)志。3.外部數(shù)據(jù)傳送指令(4條)

助記符格式機(jī)器碼(B)相應(yīng)操作指令說明機(jī)器周期MOVDPTR,#data1610010000data15~8data7~0(DPTR)#data16把16位常數(shù)裝入數(shù)據(jù)指針246西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院

注意:(1)外部RAM只能通過累加器A進(jìn)行數(shù)據(jù)傳送。(2)累加器A與外部RAM之間傳送數(shù)據(jù)時只能用間接尋址方式,間接尋址寄存器為DPTR,R0,R1。(3)以上傳送指令結(jié)果通常影響程序狀態(tài)字寄存器PSW的P標(biāo)志。例3.3

把外部數(shù)據(jù)存儲器2040H單元中的數(shù)據(jù)傳送到外部數(shù)據(jù)存儲器2560H單元中去。解:

MOVDPTR,#2040H MOVXA,@DPTR;先將2040H單元的內(nèi)容傳送到累加器A中

MOVDPTR,#2560H MOVX@DPTR,A;再將累加器A中的內(nèi)容傳送到2560H單元中47西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院,A@DPTR@RiMOVXA@DPTR@Ri@DPTRA@Ri@DPTRA@RiA48西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院4.程序存儲器數(shù)據(jù)傳送指令(查表專用程序)(2條)

MOVC

注意:(1)用于內(nèi)部、外部程序存儲器。只能讀、不能寫。(2)以上指令結(jié)果影響程序狀態(tài)字寄存器PSW的P標(biāo)志。(3)一般用于查表操作。查表指令用于查找存放在程序存儲器中的表格,范圍為64k。

(4)一般用符號賦值給DPTR以表明數(shù)據(jù)表的起始地址?!綪63,例題3-2】近程查表遠(yuǎn)程查表49西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院例3.1用查表法把累加器中的十六進(jìn)制轉(zhuǎn)換為ASCII碼,并送回累加器中。查表程序如下:

2000HBA:INCA 2001 MOVCA,@A+PC 2002 RET

2003 DB30H 2004 DB31H 2005 DB32H

… 2012 DB46H

如果以上,A中十六進(jìn)制為00H,加1后為01H,取出MOVC指令后(PC)=2002H,RET一單元,則(A)+(PC)=2003H,將30H送入A中。50西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院5.數(shù)據(jù)交換指令1)字節(jié)交換指令(3條)-Exchange

注意:以上指令結(jié)果影響程序狀態(tài)字寄存器PSW的P標(biāo)志。主要用于內(nèi)部RAM和A之間。,AXCHdirectRn@RidirectARn@Ri51西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院2)半字節(jié)交換指令(1條)

-exchangelow-orderdigital注意:上面指令結(jié)果影響程序狀態(tài)字寄存器PSW的P標(biāo)志。3)累加器A中高4位和低4位交換(1條)注意:上面指令結(jié)果不影響程序狀態(tài)字寄存器PSW標(biāo)志。

52西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院例題:(R0)=35H,(35H)=0D7H,(A)=82H例3.4

設(shè)內(nèi)部數(shù)據(jù)存儲區(qū)2AH、2BH單元中連續(xù)存放有4個BCD碼,試編寫一程序把這4個BCD碼倒序排序,即:

XCHA,R0XCHA,@R0XCHDA,@R0SWAPA(A)=35H,(R0)=82H(A)=0D7H,(R0)=35H,(35H)=82H(A)=87H,(R0)=35H,(35H)=0D2H(A)=28H53西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院解:

MOVR0,#2AH ;將立即數(shù)2AH傳送到寄存器R0中

MOVA,@R0 ;將2AH單元的內(nèi)容傳送到累加器A中

SWAPA ;將累加器A中的高4位與低4位交換

MOV@R0,A ;將累加器A的內(nèi)容傳送到2AH單元中

MOVR1,#2BH MOVA,@R1 ;將2BH單元的內(nèi)容傳送到累加器A中

SWAPA;將累加器A中的高4位與低4位交換

XCHA,@R0 ;將累加器A中的內(nèi)容與2AH單元的內(nèi)容交換

MOV@R1,A ;累加器A的內(nèi)容傳送到2BH單元54西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院6.堆棧操作指令(2條)注意:(1)堆棧是用戶自己設(shè)定的內(nèi)部RAM中的一塊專用存儲區(qū),使用時一定先設(shè)堆棧指針;堆棧指針缺省為SP=07H。(2)堆棧遵循后進(jìn)先出的原則安排數(shù)據(jù)。(3)堆棧操作必須是字節(jié)操作,且只能直接尋址。將累加器A入棧、出棧指令應(yīng)寫成:

PUSH/POPACC

或PUSH/POP0E0H(4)堆棧通常用于臨時保護(hù)數(shù)據(jù)及子程序調(diào)用時保護(hù)現(xiàn)場/恢復(fù)現(xiàn)場。(5)以上指令結(jié)果不影響程序狀態(tài)字寄存器PSW標(biāo)志。(6)堆棧操作是通過堆棧指示器SP進(jìn)行的讀寫操作,是以SP為間接寄存器的尋址方式。55西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院例

設(shè)堆棧指針為30H,把累加器A和DPTR中的內(nèi)容壓入,然后根據(jù)需要再把它們彈出,編寫實(shí)現(xiàn)該功能的程序段。解:

MOVSP,#30H;設(shè)置堆棧指針,SP=30H,為棧底地址

PUSHACC;SP+1→SP,SP=31H,ACC→(SP) PUSHDPH;SP+1→SP,SP=32H,DPH→(SP) PUSHDPL;SP+1→SP,SP=33H,DPL→(SP)

…… POPDPL;(SP)→DPL,SP-1→SP,SP=32H POPDPH;(SP)→DPH,SP-1→SP,SP=31H POPACC ;(SP)→ACC,SP-1→SP,SP=30H56西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院與上面程序區(qū)別解:

MOVSP,#30H;設(shè)置堆棧指針,SP=30H,為棧底地址

PUSHDPL;SP+1→SP,SP=31H,DPL→(SP) PUSHDPH;SP+1→SP,SP=32H,DPH→(SP) PUSHACC;SP+1→SP,SP=33H,ACC→(SP)

…… POPDPL;(SP)→DPL,SP-1→SP,SP=32H POPDPH;(SP)→DPH,SP-1→SP,SP=31H POPACC ;(SP)→ACC,SP-1→SP,SP=30H57西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院3.2.3算術(shù)運(yùn)算類指令算術(shù)運(yùn)算都是針對8位無符號數(shù)的。1)加法指令(8條)-Add/Addwithcarry注意:(1)ADD與ADDC的區(qū)別為是否加進(jìn)位位Cy。(2)指令執(zhí)行結(jié)果均在累加器A中。(3)以上指令結(jié)果均影響程序狀態(tài)字寄存器PSW的Cy、OV、AC和P標(biāo)志。direct58西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院例,將RAM中40H和41H單元分別存放的兩個數(shù)相加,和存放在42H中。

MOV R0,#40H ;RO=40H MOV A,@R0 ;A=(40H) INC RO ;RO=41H ADD A,@RO ;(40H)+(41H) INC RO ;RO=42H MOV @RO,A ;(42H)←(40H)+(41H)準(zhǔn)備被加數(shù)準(zhǔn)備加數(shù)求和準(zhǔn)備和空間59西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院例3.3:被加數(shù)放在內(nèi)部RAM:20H~22H單元(低位在前),加數(shù)放在內(nèi)部RAM:2AH~2CH單元(低位在前),和存于:20H~22H單元。

MOVR0,#20H MOVR1,#2AH MOVR7,#03H CLRCLOOP:MOVA,@RO ADDCA,@R1 MOV@R0,A INCR0 INCR1 DJNZR7,LOOP CLRA ADDCA,#OOH;處理進(jìn)位

MOV@RO,A 處理可能的進(jìn)位60西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院編寫指令:完成9878H+8934H的運(yùn)算。分析:32H、31H存9878H,34H、33H存8934H,和放入35H、36H,進(jìn)位放37H。ORG2000HMOV 31H,#78HMOV 32H,#98HMOV 33H,#34HMOV 34H,#89HMOV A,33HADD A,31HMOV 35H,AMOV A,34HADDC A,32HMOV 36H,AMOV A,#0ADDC A,#0MOV 37H,A61西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院2)減法指令(4條)-subtractwithborrow注意:(1)減法指令中沒有不帶借位的減法指令,在需要無借位操作時,可先將Cy清0(CLRC)。(2)指令執(zhí)行結(jié)果均在累加器A中。(3)減法指令結(jié)果影響程序狀態(tài)字寄存器PSW的Cy、OV、AC和P標(biāo)志。

62西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院3)加1指令(5條)

注意:以上指令結(jié)果除了第一個外,其它不影響程序狀態(tài)字寄存器PSW。即使在加1過程中低8位有進(jìn)位,也是直接進(jìn)上高8位而不置進(jìn)位標(biāo)志CY。例分別指出指令I(lǐng)NCR0和INC@R0的執(zhí)行結(jié)果。設(shè)R0=30H,(30H)=00H。解:INCR0 ;R0+1=30H+1=31H→R0,R0=31H

INC@R0 ;(R0)+1=(30H)+1→(R0),

(30H)=01H,R0中內(nèi)容不變63西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院4)減1指令(4條)-Decrement/Decrease

注意:以上指令結(jié)果除第一項(xiàng)外不影響程序狀態(tài)字寄存器PSW。沒有DPTR減1指令。例題:(A)=0FH;(R7)=19H,(30H)=00H,(R1)=40H,(40H)=0FFH DECA;(A)=0EH DECR7;(R7)=18H DEC30H;(30H)=0FFH DEC@R1;(40H)=0FEH64西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院5)乘法指令(1條)-Mulitply

注意:乘法結(jié)果影響程序狀態(tài)字寄存器PSW的OV(積超過0FFH,則置1,否則為0)和Cy(總是清0)以及P標(biāo)志。例:(A)=50H,(B)=0A0H,MULAB,(A)=00H,(B)=32H,CY=0,OV=1例題:3-10兩乘數(shù)放入40H、41H,乘積放入43H、42H中。

ORG1000HMOVR0,#40HMOVA,@R0INCR0MOVB,@R0MULABINCR0MOV@R0,AINCR0MOV@R0,BEND65西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院6)除法指令(1條)-Divide/Division除法注意:(1)除法結(jié)果影響程序狀態(tài)字寄存器PSW的OV(除數(shù)為0,則置1,否則為0)和Cy(總是清0)以及P標(biāo)志。(2)當(dāng)除數(shù)為0時結(jié)果不能確定。66西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院例題:累加器A中數(shù)0FEH,轉(zhuǎn)化為3位BCD碼。百位-40H,十位-41H,個位-42H。ORG 2000HMOV A,#0FEHMOV B,#100DIV ABMOV 40H,AMOV A,BMOV B,#10DIV ABMOV 41H,AMOV 42H,BEND此程序廣泛應(yīng)用于十六進(jìn)制對十進(jìn)制轉(zhuǎn)化中。67西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院7)BCD碼調(diào)整指令(1條)-decimalAdjustment

BCD(BinaryCodedDecimal)碼用4位二進(jìn)制碼表示一位十進(jìn)制數(shù)的編碼方式。

BCD調(diào)整的三種情況:

·A中低4位大于9或輔助進(jìn)位位AC=1,則進(jìn)行低4位加6。AA+06H

·A中高4位大于9或CY=1,則進(jìn)行高4位加6。AA+60H

·A中高4位=9,低4位大于9,則高低4位都加6。AA+66H

注意:(1)BCD碼是用二進(jìn)制形式表示十進(jìn)制數(shù),例如十進(jìn)制數(shù)45,其BCD碼形式為45H。BCD碼只是一種表示形式,與其數(shù)值沒有關(guān)系。(2)結(jié)果影響程序狀態(tài)字寄存器PSW的Cy、OV、AC和P標(biāo)志。68西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院(3)DAA指令將A中的二進(jìn)制碼自動調(diào)整為BCD碼。(4)DAA指令只能跟在ADD或ADDC加法指令后,不適用于減法。(5)該指令結(jié)果影響程序狀態(tài)字寄存器PSW的Cy、OV、AC和P標(biāo)志。例3.7說明下列指令的執(zhí)行結(jié)果。解:MOVA,#05H ;05H→A ADDA,#08H ;05H+08H→A,A=0DH

DAA ;自動調(diào)整為BCD碼,A=13H

69西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院編寫指令:完成9878+8934的運(yùn)算。分析:32H、31H存9878,34H、33H存8934,和放入35H、36H,進(jìn)位放37H。ORG2000HMOV 31H,#78HMOV 32H,#98HMOV 33H,#34HMOV 34H,#89HMOV A,33HADD A,31HDA AMOV 35H,AMOV A,34HADDC A,32HDA AMOV 36H,AMOV A,#0ADDC A,#0MOV 37H,A70西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院3.2.4邏輯運(yùn)算及移位類指令(24條)1)邏輯與指令(6條)Andlogic

A*B,注意:(1)以上指令結(jié)果通常影響程序狀態(tài)字寄存器PSW的P標(biāo)志。(2)邏輯與指令通常用于將一個字節(jié)中的指定位清0,其它位不變。71西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院例題:內(nèi)部ROM的40H單元中有一壓縮BCD碼,編程將其變?yōu)榉菈嚎sBCD碼。且高位42H,低位41H。ORG 2000HMOV 40H,#37HMOV A,40HANL A,#0FHMOV 41H,AMOV A,40HSWAP AANL A,#0FHMOV 42H,ANOPEND72西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院2)邏輯或指令(6條)注意:(1)以上指令結(jié)果通常影響程序狀態(tài)字寄存器PSW的P標(biāo)志。(2)邏輯或指令通常用于將一個字節(jié)中的指定位置1,其余位不變。73西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院3)邏輯異或指令(6條)注意:(1)以上指令結(jié)果通常影響程序狀態(tài)字寄存器PSW的P標(biāo)志。(2)“異或”原則是相同為0,不同為1。可對某些位取反(求反的與1異或,保留的與0相異或)。74西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院例題:當(dāng)需要只改變數(shù)據(jù)的某幾位,而其他位不變時,不能使用直接傳送方法,只能通過邏輯運(yùn)算完成,如:將A的低4位傳送到P1口,而P1口高4位保持不變。

MOVRO,A;先暫存A中數(shù)據(jù)以便恢復(fù)

ANLA,#0FH;屏蔽高4位(0000++++) ANLP1,#OFOH;屏蔽低4位(****0000) ORLP1,A;P1←(****++++) MOVA,RO4)累加器A清0和取反指令(2條)75西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院5)循環(huán)移位指令(4條)注意:執(zhí)行帶進(jìn)位的循環(huán)移位指令之前,必須給Cy置位或清0。

移位操作也可看作乘除運(yùn)算。

76西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院3.2.5控制轉(zhuǎn)移類指令控制轉(zhuǎn)移類指令的本質(zhì)是改變程序計數(shù)器PC的內(nèi)容,從而改變程序的執(zhí)行方向??刂妻D(zhuǎn)移指令分為:無條件轉(zhuǎn)移指令、條件轉(zhuǎn)移指令和調(diào)用/返回指令。1.無條件轉(zhuǎn)移指令(4條)1)長轉(zhuǎn)移指令

注意:(1)該指令結(jié)果不影響程序狀態(tài)字寄存器PSW。(2)該指令可以轉(zhuǎn)移到64K中程序存儲器中的任意位置。77西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院2)絕對轉(zhuǎn)移指令(1條)注意:(1)該指令結(jié)果不影響程序狀態(tài)字寄存器PSW。(2)該指令轉(zhuǎn)移范圍是2K字節(jié)。例3.9

指令KWR:AJMPKWR1的執(zhí)行結(jié)果。解:設(shè)KWR標(biāo)號地址=1030H,KWR1標(biāo)號地址=1100H,該指令執(zhí)行后PC首先加2變?yōu)?032H,然后由1032H的高5位(0001

000000110010)和1100H(00010001

00000000)的低11位拼裝成新的PC值=00010001

00000000B,即程序從1100H開始執(zhí)行。78西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院3)短轉(zhuǎn)移指令(1條)注意:(1)該指令結(jié)果不影響程序狀態(tài)字寄存器PSW。(2)該指令的轉(zhuǎn)移范圍是以本指令的下一條指令為中心的

-128~+127字節(jié)以內(nèi)。(3)在實(shí)際應(yīng)用中,LJMP、AJMP和SJMP后面的addr16、addr11或rel都是用標(biāo)號來代替的,不一定寫出它們的具體地址。如何計算偏移量:向前:Rel=目的地址-(源地址+2)=地址差-2向后:Rel=FFH-(地址差)-2+1=FEH-地址差79西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院4)變址尋址的無條件轉(zhuǎn)移指令(1條)注意:(1)該指令結(jié)果不影響程序狀態(tài)字寄存器PSW。(2)本指令不影響標(biāo)志位,不改變@A及DPTR中的內(nèi)容。常用于多分支程序結(jié)構(gòu)中,可在程序運(yùn)行過程中動態(tài)地決定程序分支走向。80西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院2.條件轉(zhuǎn)移指令(8條)1)累加器A判0指令(2條)注意:(1)以上指令結(jié)果不影響程序狀態(tài)字寄存器PSW。(2)轉(zhuǎn)移范圍與指令SJMP相同。81西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院2)比較轉(zhuǎn)移指令(4條)注意:(1)以上指令結(jié)果影響程序狀態(tài)字寄存器PSW的Cy標(biāo)志。(2)轉(zhuǎn)移范圍與SJMP指令相同。82西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院3)減1非零轉(zhuǎn)移指令(2條)注意:(1)DJNZ指令通常用于循環(huán)程序中控制

溫馨提示

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

評論

0/150

提交評論