版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院第4章
MCS-51指令系統(tǒng)2西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院4.1概述指令:供用戶使用的單片機(jī)軟件資源指令系統(tǒng):計(jì)算機(jī)能執(zhí)行的指令集合,是由硬件廠商定義的單片機(jī)使用:機(jī)器語(yǔ)言匯編語(yǔ)言
C語(yǔ)言14.1概述4.1.1計(jì)算機(jī)語(yǔ)言(1)機(jī)器語(yǔ)言:是用二進(jìn)制代碼表示的,能被計(jì)算機(jī)直接識(shí)別和執(zhí)行的一種機(jī)器指令的集合。優(yōu)點(diǎn):靈活、能被計(jì)算機(jī)直接執(zhí)行、速度快等。
缺點(diǎn):直觀性差,很容易出錯(cuò),通用性很差。(2)匯編語(yǔ)言:是一種用助記符表示的仍然面向機(jī)器的計(jì)算機(jī)語(yǔ)言,又將其稱為符號(hào)語(yǔ)言。
優(yōu)點(diǎn):用符號(hào)代替了機(jī)器指令代碼,簡(jiǎn)化了編程過(guò)程,而且助記符與指令代碼一一對(duì)應(yīng),基本保留了機(jī)器語(yǔ)言的靈活性。占用的內(nèi)存空間少,運(yùn)行速度快。
14缺點(diǎn):必須對(duì)編寫(xiě)的程序進(jìn)行加工和翻譯,才能變成能夠被計(jì)算機(jī)識(shí)別和處理的二進(jìn)制代碼程序。仍然是面向機(jī)器的語(yǔ)言,使用起來(lái)還是比較繁瑣費(fèi)時(shí),通用性差。用匯編語(yǔ)言等非機(jī)器語(yǔ)言書(shū)寫(xiě)好的符號(hào)程序稱匯編語(yǔ)言源程序。(3)高級(jí)語(yǔ)言:與自然語(yǔ)言相近并為計(jì)算機(jī)所接受和執(zhí)行的計(jì)算機(jī)語(yǔ)言稱為高級(jí)語(yǔ)言,它是面向用戶的語(yǔ)言。優(yōu)點(diǎn):編程容易,不需要編程者對(duì)機(jī)器硬件有較好的了解。缺點(diǎn):執(zhí)行速度比機(jī)器語(yǔ)言和匯編語(yǔ)言慢。5西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院指令基本格式
[標(biāo)號(hào):]操作碼
[目的操作數(shù)][,源操作數(shù)][;注釋]START:MOVA,#30H;將立即數(shù)30H傳送至A中
MOVDPTR,#5678H;將立即數(shù)5678H傳送至DPTR方括符[]表示可選項(xiàng)
標(biāo)號(hào):(1)1-8個(gè)字母/數(shù)字組成(以字母開(kāi)頭),不能用匯編語(yǔ)言中定義的符號(hào),不能重復(fù)定義。(2)指令前的標(biāo)號(hào)代表該指令的地址,是用符號(hào)表示的地址,用于一段功能程序的識(shí)別標(biāo)記或控制轉(zhuǎn)移地址。(3)標(biāo)號(hào)必須用冒號(hào)“:”與;操作碼分隔。6西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院指令基本格式
[標(biāo)號(hào):]操作碼
[目的操作數(shù)][,源操作數(shù)][;注釋]START:MOVA,#30H;將立即數(shù)30H傳送至A中
MOVDPTR,#5678H;將立即數(shù)5678H傳送至DPTR方括符[]表示可選項(xiàng)
操作碼:表示指令的操作功能。①操作碼用助記符表示,它代表了指令的操作功能。②操作碼是指令的必需部分,是指令的核心,不可缺少。7西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院指令基本格式
[標(biāo)號(hà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ù)的個(gè)數(shù)可以是0~3個(gè)。⑤操作數(shù)與操作碼之間用空格分隔,操作數(shù)與操作數(shù)之間用逗號(hào)“,”分隔。8西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院注釋:指令功能說(shuō)明。①注釋屬于非必需項(xiàng),是為便于閱讀而對(duì)指令功能作的說(shuō)明和注解。②注釋必須以“;”開(kāi)始。分界符:194.1.3操作數(shù)的類型MOVA,#30MOVB,AMOVR0,#40H1)立即數(shù)2)寄存器操作數(shù)3)存儲(chǔ)器操作數(shù)(單元地址)MOVA,20H10西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院4.1.4單片機(jī)指令格式
單片機(jī)指令長(zhǎng)度:變長(zhǎng)指令(長(zhǎng)度是不定的)
一字節(jié)指令(49條)(1)操作碼和操作數(shù)占一個(gè)單元,如:INCDPTR
指令碼:10100011(2)指令的操作數(shù)在寄存器中,而寄存器編碼只需3位2進(jìn)制,故可擠在一個(gè)字節(jié)如:MOVA,Rn
指令碼:11101rrr
(rrr通用寄存器二進(jìn)制編碼)11西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院
二字節(jié)指令(45條)一個(gè)字節(jié)為操作碼,一個(gè)字節(jié)為操作數(shù),如MOV20H,R0
三字節(jié)指令(17條)操作碼一個(gè)字節(jié),操作數(shù)兩個(gè)字節(jié):MOV60H,#2FH
12西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院※每條指令在執(zhí)行時(shí)要花去一定的時(shí)間,以機(jī)器周期為單位。按指令執(zhí)行時(shí)間分類:?jiǎn)沃芷?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ī)匯編語(yǔ)言程序設(shè)計(jì)中,除了使用指令系統(tǒng)規(guī)定的指令外,還要用到一些偽指令。偽指令又稱指示性指令,具有和指令類似的形式,但匯編時(shí)偽指令并不產(chǎn)生可執(zhí)行的目標(biāo)代碼,只是對(duì)匯編過(guò)程進(jìn)行某種控制或提供某些匯編信息。也稱匯編命令或匯編程序控制指令。下面對(duì)常用的偽指令作一簡(jiǎn)單介紹(P48)。1.匯編起始地址偽指令ORG格式:[標(biāo)號(hào):]ORG地址表達(dá)式
功能:規(guī)定程序塊或數(shù)據(jù)塊存放的起始位置 例如:ORG1000H;表示下面指令MOVA,#20H存放于1000H開(kāi)始的單元。
MOVA,#20H114一個(gè)源程序中,可多次使用ORG指令以規(guī)定不同程序段的起始位置。地址應(yīng)從小到大順序排列,不允許重疊。例如:
ORG1000H LJMP MAIN
ORG 1200HMAIN: MOV A,30H
1152)END(ENDofassembly)匯編終止命令
功能:用于終止源程序的匯編工作。格式:
[標(biāo)號(hào):]END一個(gè)源程序只能有一個(gè)END命令。后面的不予執(zhí)行。1163)DB(DefineByte)定義數(shù)據(jù)字節(jié)命令功能:用于從指定的地址單元開(kāi)始,在程序存儲(chǔ)器中定義字節(jié)數(shù)據(jù)。例4-1分別從ROM的1000H和1020H單元開(kāi)始,按順序存放0~9中每個(gè)整數(shù)的平方值和字符串“Anapple!”。C語(yǔ)句charsquare[]={0,1,4,9,16,25,36,49,64,81};charstring[]=“Anapple!”;117ORG0000HSTART: NOP ;空操作語(yǔ)句
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)號(hào):]DW
字?jǐn)?shù)據(jù)表 功能:與DB類似,但DW定義的數(shù)據(jù)項(xiàng)為字,包括兩個(gè)字節(jié),存放時(shí)高位在低單元,低位在高單元。 例如: ORG1000H DATA:DW324AH,3CH
;表示從1000H單元開(kāi)始的地方存放數(shù)據(jù)32H,4AH,00H,3CH(3CH以字的形式表示為003CH)。單元地址ROM中的內(nèi)容10FFH…1100H34H1101H78H1102H00H1103H10H1104H0FFH1105H0FFH1109H…ORG1100HDATA2:DW 3478H,10H,-1120
注意:
DB和DW定義的數(shù)表,數(shù)的個(gè)數(shù)不得超過(guò)80個(gè)。如果數(shù)據(jù)的數(shù)目較多時(shí),可使用多個(gè)定義命令。在MCS-51程序設(shè)計(jì)應(yīng)用中,常以DB定義數(shù)據(jù),以DW定義地址。121(5)DS(DefineStorage)定義存儲(chǔ)區(qū)命令功能:用于從指定地址開(kāi)始,保留指定數(shù)目的字節(jié)單元為存儲(chǔ)區(qū),供程序運(yùn)行使用。匯編時(shí)對(duì)這些單元不賦值。格式:[標(biāo)號(hào):]DS16位數(shù)表
例: ADDRTABL:DS20
例: ORG8100H DS 08H注意:對(duì)MSC-51單片機(jī)來(lái)說(shuō),DB、DW、DS命令只能對(duì)程序存儲(chǔ)器使用,不能對(duì)數(shù)據(jù)存儲(chǔ)器使用。122例如: X EQU20 Y EQU30 Z EQUX+Y AA EQUR1(6)EQU(Equate)賦值命令功能:用于給字符名稱賦予一個(gè)特定值。賦值以后,其值在整個(gè)過(guò)程中有效。格式:
字符名稱EQU賦值項(xiàng)“賦值項(xiàng)”:可以是常數(shù)、地址、標(biāo)號(hào)或表達(dá)式。MOVA,#XMOVA,X123(7)DATA數(shù)據(jù)地址賦值命令格式:字符名稱DATA項(xiàng)功能:與EQU基本類似,但有以下差別。*EQU定義的字符名稱必須先定義后使用,而DATA定義的字符名可以先使用后定義。*用EQU可以把一個(gè)匯編符號(hào)賦給字符名稱,如上例中的R1,而DATA只能把數(shù)據(jù)賦給字符名。AA EQUR1124(8).BIT位定義命令功能:用于給字符名稱賦以位地址。格式:字符名稱BIT位地址例如:
AAABIT40H BBBBIT 50H
其中“位地址”可以是絕對(duì)地址,也可以是符號(hào)地址。例如:MOVCy,AAA3.1.3尋址方式指令執(zhí)行是對(duì)操作數(shù)而言,只有找到操作數(shù)才能處理,操作數(shù)在指令中可以是其本身,也可是其所在地址,故須確定如何找到操作數(shù),這就是尋址。25西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院我的信在他那!找信②①注:找信是尋找信的“地址”!26西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院退貨(買西裝):到開(kāi)元找王經(jīng)理退貨到開(kāi)元找售后服務(wù)部門經(jīng)理退貨到賣衣服的店找售后服務(wù)經(jīng)理辦公室退貨到買衣服的店找售后服務(wù)辦公室聯(lián)系經(jīng)理退貨找12315
找買衣服店長(zhǎng)+(下屬分管售后的人)
立即尋址直接尋址寄存器尋址寄存器間接尋址變址尋址相對(duì)尋址27西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院1.寄存器尋址方式:操作數(shù)在寄存器時(shí),指定寄存器名稱用來(lái)得到操作數(shù)MOVA,Rn
尋址范圍:
*通用寄存器,R0~R7(共32個(gè)但每次只能是8個(gè)。用PSW中的RS1、RS0控制)
*部分專用寄存器:A、B、DPTP28西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院2.直接尋址(直接給出地址)
操作數(shù)以單元地址形式給出MOVA,3AH
尋址范圍:只有8位,所以只限內(nèi)部RAM。
(1)低128位單元。
(2)專用寄存器(單元地址、寄存器符號(hào))
(3)位地址空間。
例:MOVA,3AH
29西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院3.立即尋址(標(biāo)志符號(hà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)。◎堆棧操作也視為此種尋址,SP為寄存器的間接尋址。31西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院5.變址尋址
為了訪問(wèn)程序寄存器中的數(shù)據(jù)表格,以DPTR和PC為基址,以A為變址寄存器,以基址和變址的和為操作數(shù)地址達(dá)到訪問(wèn)的目的。
MOVCA,@A+DPTR尋址范圍:·只針對(duì)程序寄存器進(jìn)行尋址,尋址范圍可達(dá)64K?!ぶ挥?條
MOVCA,@A+DPTRMOVCA,@A+PCJMP@A+DPTR·都是1字節(jié)指令32西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院7.相對(duì)尋址
為了解決程序轉(zhuǎn)移而設(shè)置的。跳轉(zhuǎn)指令地址+跳轉(zhuǎn)指令字節(jié)數(shù)+rel=PC+relrel是帶符號(hào)的8位補(bǔ)碼數(shù),尋址范圍-128~+127。目的地址的計(jì)算方法: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個(gè)單元128位。兩種表示方式:位地址,單元地址加位。*專用寄存器可尋址位,共11個(gè)寄存器83個(gè)位,表示方式:·直接位地址(PSW位5地址為0D5H)·位名稱(F0)、·單元地址加位(0D0H.5)、·專用寄存器符號(hào)加位(PSW.5)34西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院3.1.4尋址方式小結(jié)
1、變址尋址方式只適用于程序存儲(chǔ)器。
2、內(nèi)部數(shù)據(jù)存儲(chǔ)器尋址方式較多。
3、外部數(shù)據(jù)存儲(chǔ)器只能使用寄存器間接尋址方式。
MOVXA,@RiMOVXA,@DPTR 4、相對(duì)尋址只解決程序轉(zhuǎn)移問(wèn)題。
5、兩個(gè)操作數(shù),左邊的為目的操作數(shù),右邊為源操作數(shù)。以上都對(duì)源操作數(shù)而言,但目的操作數(shù)也存在尋址問(wèn)題。目的操作數(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é)院符號(hào)含義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帶符號(hào)的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)容/對(duì)該位取反((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)操作指令說(shuō)明機(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)容,請(qǐng)指出每條指令執(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)操作指令說(shuō)明機(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)操作指令說(shuō)明機(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)操作指令說(shuō)明機(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)容,請(qǐng)指出下列指令執(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ù)不能同時(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)操作指令說(shuō)明機(jī)器周期MOVDPTR,#data1610010000data15~8data7~0(DPTR)#data16把16位常數(shù)裝入數(shù)據(jù)指針246西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院
注意:(1)外部RAM只能通過(guò)累加器A進(jìn)行數(shù)據(jù)傳送。(2)累加器A與外部RAM之間傳送數(shù)據(jù)時(shí)只能用間接尋址方式,間接尋址寄存器為DPTR,R0,R1。(3)以上傳送指令結(jié)果通常影響程序狀態(tài)字寄存器PSW的P標(biāo)志。例3.3
把外部數(shù)據(jù)存儲(chǔ)器2040H單元中的數(shù)據(jù)傳送到外部數(shù)據(jù)存儲(chǔ)器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.程序存儲(chǔ)器數(shù)據(jù)傳送指令(查表專用程序)(2條)
MOVC
注意:(1)用于內(nèi)部、外部程序存儲(chǔ)器。只能讀、不能寫(xiě)。(2)以上指令結(jié)果影響程序狀態(tài)字寄存器PSW的P標(biāo)志。(3)一般用于查表操作。查表指令用于查找存放在程序存儲(chǔ)器中的表格,范圍為64k。
(4)一般用符號(hào)賦值給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ù)存儲(chǔ)區(qū)2AH、2BH單元中連續(xù)存放有4個(gè)BCD碼,試編寫(xiě)一程序把這4個(gè)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中的一塊專用存儲(chǔ)區(qū),使用時(shí)一定先設(shè)堆棧指針;堆棧指針缺省為SP=07H。(2)堆棧遵循后進(jìn)先出的原則安排數(shù)據(jù)。(3)堆棧操作必須是字節(jié)操作,且只能直接尋址。將累加器A入棧、出棧指令應(yīng)寫(xiě)成:
PUSH/POPACC
或PUSH/POP0E0H(4)堆棧通常用于臨時(shí)保護(hù)數(shù)據(jù)及子程序調(diào)用時(shí)保護(hù)現(xiàn)場(chǎng)/恢復(fù)現(xiàn)場(chǎng)。(5)以上指令結(jié)果不影響程序狀態(tài)字寄存器PSW標(biāo)志。(6)堆棧操作是通過(guò)堆棧指示器SP進(jìn)行的讀寫(xiě)操作,是以SP為間接寄存器的尋址方式。55西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院例
設(shè)堆棧指針為30H,把累加器A和DPTR中的內(nèi)容壓入,然后根據(jù)需要再把它們彈出,編寫(xiě)實(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)算都是針對(duì)8位無(wú)符號(hào)數(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單元分別存放的兩個(gè)數(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é)院編寫(xiě)指令:完成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)減法指令中沒(méi)有不帶借位的減法指令,在需要無(wú)借位操作時(shí),可先將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é)果除了第一個(gè)外,其它不影響程序狀態(tài)字寄存器PSW。即使在加1過(guò)程中低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。沒(méi)有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(積超過(guò)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時(shí)結(jié)果不能確定。66西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院例題:累加器A中數(shù)0FEH,轉(zhuǎn)化為3位BCD碼。百位-40H,十位-41H,個(gè)位-42H。ORG 2000HMOV A,#0FEHMOV B,#100DIV ABMOV 40H,AMOV A,BMOV B,#10DIV ABMOV 41H,AMOV 42H,BEND此程序廣泛應(yīng)用于十六進(jìn)制對(duì)十進(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ù)值沒(méi)有關(guān)系。(2)結(jié)果影響程序狀態(tài)字寄存器PSW的Cy、OV、AC和P標(biāo)志。68西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院(3)DAA指令將A中的二進(jìn)制碼自動(dòng)調(diào)整為BCD碼。(4)DAA指令只能跟在ADD或ADDC加法指令后,不適用于減法。(5)該指令結(jié)果影響程序狀態(tài)字寄存器PSW的Cy、OV、AC和P標(biāo)志。例3.7說(shuō)明下列指令的執(zhí)行結(jié)果。解:MOVA,#05H ;05H→A ADDA,#08H ;05H+08H→A,A=0DH
DAA ;自動(dòng)調(diào)整為BCD碼,A=13H
69西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院編寫(xiě)指令:完成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)邏輯與指令通常用于將一個(gè)字節(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)邏輯或指令通常用于將一個(gè)字節(jié)中的指定位置1,其余位不變。73西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院3)邏輯異或指令(6條)注意:(1)以上指令結(jié)果通常影響程序狀態(tài)字寄存器PSW的P標(biāo)志。(2)“異或”原則是相同為0,不同為1??蓪?duì)某些位取反(求反的與1異或,保留的與0相異或)。74西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院例題:當(dāng)需要只改變數(shù)據(jù)的某幾位,而其他位不變時(shí),不能使用直接傳送方法,只能通過(guò)邏輯運(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ì)是改變程序計(jì)數(shù)器PC的內(nèi)容,從而改變程序的執(zhí)行方向??刂妻D(zhuǎn)移指令分為:無(wú)條件轉(zhuǎn)移指令、條件轉(zhuǎn)移指令和調(diào)用/返回指令。1.無(wú)條件轉(zhuǎn)移指令(4條)1)長(zhǎng)轉(zhuǎn)移指令
注意:(1)該指令結(jié)果不影響程序狀態(tài)字寄存器PSW。(2)該指令可以轉(zhuǎn)移到64K中程序存儲(chǔ)器中的任意位置。77西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院2)絕對(duì)轉(zhuǎn)移指令(1條)注意:(1)該指令結(jié)果不影響程序狀態(tài)字寄存器PSW。(2)該指令轉(zhuǎn)移范圍是2K字節(jié)。例3.9
指令KWR:AJMPKWR1的執(zhí)行結(jié)果。解:設(shè)KWR標(biāo)號(hào)地址=1030H,KWR1標(biāo)號(hào)地址=1100H,該指令執(zhí)行后PC首先加2變?yōu)?032H,然后由1032H的高5位(0001
000000110010)和1100H(00010001
00000000)的低11位拼裝成新的PC值=00010001
00000000B,即程序從1100H開(kāi)始執(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)號(hào)來(lái)代替的,不一定寫(xiě)出它們的具體地址。如何計(jì)算偏移量:向前:Rel=目的地址-(源地址+2)=地址差-2向后:Rel=FFH-(地址差)-2+1=FEH-地址差79西北農(nóng)林科技大學(xué)水利與建筑工程學(xué)院4)變址尋址的無(wú)條件轉(zhuǎn)移指令(1條)注意:(1)該指令結(jié)果不影響程序狀態(tài)字寄存器PSW。(2)本指令不影響標(biāo)志位,不改變@A及DPTR中的內(nèi)容。常用于多分支程序結(jié)構(gòu)中,可在程序運(yùn)行過(guò)程中動(dòng)態(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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 山東省菏澤市鄆城縣第一中學(xué)2023-2024學(xué)年七年級(jí)上學(xué)期第一次月考生物試題(解析版)-A4
- 養(yǎng)老院老人心理關(guān)愛(ài)制度
- 養(yǎng)老院老人緊急救援人員職業(yè)道德制度
- 房屋建筑項(xiàng)目工程總承包合同(2篇)
- 2025年石家莊貨運(yùn)從業(yè)資格證考試試題及答案大全解析
- 2024年時(shí)尚插畫(huà)師聘用協(xié)議書(shū)2篇
- 2024年度城市景觀工程土石方施工與景觀設(shè)計(jì)承包合同3篇
- 2025年塔城貨運(yùn)從業(yè)資格證考試題庫(kù)a2
- 2024企業(yè)市場(chǎng)分析與品牌推廣合作協(xié)議2篇
- 2024年版公司裝修工程協(xié)議規(guī)范格式版
- 健康膳食解碼智慧樹(shù)知到期末考試答案2024年
- 冬季電纜敷設(shè)施工方案及措施
- 2023修訂版《托育中心、幼兒園建筑設(shè)計(jì)規(guī)范》
- 圖書(shū)館應(yīng)急知識(shí)講座
- 1937年南京大屠殺
- 工程倫理智慧樹(shù)知到期末考試答案2024年
- 2024廣西能源集團(tuán)有限公司社會(huì)招聘筆試參考題庫(kù)附帶答案詳解
- 西游記第一回
- 設(shè)備維保的備品備件與庫(kù)存管理
- 醫(yī)院導(dǎo)醫(yī)個(gè)人工作總結(jié)
- 建筑工地塌陷應(yīng)急預(yù)案
評(píng)論
0/150
提交評(píng)論