單片微機(jī)原理系統(tǒng)設(shè)計(jì)與應(yīng)用:第3章 MCS-51指令系統(tǒng)_第1頁
單片微機(jī)原理系統(tǒng)設(shè)計(jì)與應(yīng)用:第3章 MCS-51指令系統(tǒng)_第2頁
單片微機(jī)原理系統(tǒng)設(shè)計(jì)與應(yīng)用:第3章 MCS-51指令系統(tǒng)_第3頁
單片微機(jī)原理系統(tǒng)設(shè)計(jì)與應(yīng)用:第3章 MCS-51指令系統(tǒng)_第4頁
單片微機(jī)原理系統(tǒng)設(shè)計(jì)與應(yīng)用:第3章 MCS-51指令系統(tǒng)_第5頁
已閱讀5頁,還剩136頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

§3.1指令系統(tǒng)概述§3.2MCS-51指令的尋址方式§3.3MCS-51指令系統(tǒng)介紹下頁●

一臺(tái)計(jì)算機(jī)所能執(zhí)行的全部的指令集合§3.1指令系統(tǒng)概述指令是計(jì)算機(jī)中具有特定功能的操作命令●程序與程序設(shè)計(jì)按預(yù)定要求編排的指令序列稱為程序。編排的過程稱為程序設(shè)計(jì)●指令系統(tǒng)設(shè)計(jì)一種CPU,一般從設(shè)計(jì)指令系統(tǒng)開始因而,一種機(jī)器的指令系統(tǒng)是機(jī)器本身固有的決定了機(jī)器的性能用戶無法改變,必須繼承、學(xué)習(xí)、掌握、應(yīng)用上頁下頁回目錄機(jī)器語言:二進(jìn)制代碼,是機(jī)器唯一能直接識(shí)別、執(zhí)行的語言。匯編語言:為了記憶和閱讀方便,制造商對(duì)指令系統(tǒng)每一條指令,都給出了指令助記符。用助記符,操作數(shù),標(biāo)號(hào)編寫的程序稱為匯編語言源程序。一、匯編語言匯編語言必須翻譯成機(jī)器語言才能被機(jī)器執(zhí)行●程序設(shè)計(jì)語言匯編語言:高級(jí)語言:符號(hào)語言:上頁下頁回目錄如P55,圖3-1所示。全是機(jī)器碼完成由匯編語言到機(jī)器代碼的過程叫匯編匯編的方法有兩種:自動(dòng)匯編、手工匯編由機(jī)器代碼到匯編語言的過程叫反匯編匯編語言源程序機(jī)器語言

匯編

反匯編上頁下頁回目錄交叉匯編二、匯編語言的格式[

標(biāo)號(hào):]

操作碼[操作數(shù)]

[;注釋]其中除操作碼部分是必須的,括號(hào)內(nèi)的區(qū)段是任選項(xiàng)。1、標(biāo)號(hào)標(biāo)號(hào)是該指令的符號(hào)地址,可根據(jù)需要設(shè)定必須以字母開始,以“

:”結(jié)束,長度不超過8個(gè)字符系統(tǒng)中的保留字符不能作標(biāo)號(hào),如:SFR名、ADD等標(biāo)號(hào)可被其他語句的操作數(shù)直接引用源程序中,一個(gè)標(biāo)號(hào)只能定義一個(gè)語句,不能相重名字保持一義性上頁下頁回目錄一個(gè)匯編語句分為四個(gè)區(qū)段操作碼操作碼操作碼2、操作碼由指令系統(tǒng)的助記符、偽指令助記符組成。操作碼是每一句匯編語言所必須的操作碼和操作數(shù)之間用空格分開3、操作數(shù)可為二進(jìn)制數(shù)(B),十進(jìn)制數(shù)(D),十六進(jìn)制數(shù)(H)數(shù)字大于9,則數(shù)字應(yīng)以“0”開頭可以是操作數(shù)地址、立即數(shù)、標(biāo)號(hào)、表達(dá)式如M+3目的操作數(shù)和源操作數(shù)之間用“,”分開可以是寄存器名如A、B、R、DPTRM標(biāo)號(hào)被定義過的上頁下頁回目錄BinaryDecimalHexadecimal指出該語句的操作性質(zhì)4、注釋以“;”開頭,是程序員對(duì)指令操作的解釋,以幫助閱讀、理解程序的意義可有可無匯編時(shí)對(duì)這部分不予處理,不譯成任何機(jī)器代碼可用英語或某種簡潔的方式解釋指令,或打印程序清單上頁下頁回目錄三、偽指令偽指令僅在匯編過程中起控制作用不產(chǎn)生可執(zhí)行目標(biāo)代碼,又稱為軟指令1、起點(diǎn)指令ORG格式:ORG××××H功能:給程序起始地址或數(shù)據(jù)塊的起始地址賦值例:用法:一般出現(xiàn)在每段源程序或數(shù)據(jù)塊的開始一個(gè)源程序可多次出現(xiàn)ORG指令ORG

8000HSTART:MOVA,#74H

┇;源程序的起始地址為8000H上頁下頁回目錄首地址首地址2、結(jié)束命令END格式:END功能:匯編程序結(jié)束標(biāo)志附在一個(gè)源程序的結(jié)尾一個(gè)源程序只能出現(xiàn)一次END指令3、定義字節(jié)命令DB格式:功能:標(biāo)號(hào):DB

字節(jié)常數(shù)或字符串(8位)定義字節(jié)的內(nèi)容,匯編程序把DB定義的字節(jié)依次存入標(biāo)號(hào)開始的存儲(chǔ)單元用法:有定義的內(nèi)存單元地址項(xiàng)或項(xiàng)表上頁下頁回目錄例:ORG8000HTAB:

DB45H,73,‘5’,‘A’TAB1:DB101B偽指令ORG定義了TAB的起始地址為8000H,偽指令DB定義了8000H~8003單元的內(nèi)容依次為:(8000H)=45H(8001H)=49H(8002H)=35H(8003H)=41H(8004H)=05HTABTAB1(1)由ORG定義(2)跟在其他源程序之后上頁下頁回目錄4、定義字命令DW格式:功能:標(biāo)號(hào):DW字或字表定義若干個(gè)字(雙字節(jié))例:ORG8000HTAB:DW

7234H,8AH,10(8000H)=72H(8001H)=34H(8002H)=00H(8003H)=8AH(8005H)=0AH匯編后:(8004H)=00H上頁下頁回目錄5、定義空間命令DS格式:功能:標(biāo)號(hào):DS

數(shù)據(jù)或字符及表達(dá)式例:(8008H)=30H(8009H)=8AH從指定單元地址開始,由數(shù)據(jù)或字符及表達(dá)式的值來定義應(yīng)保留的單元數(shù),備用ORG8000HDS08HDB30H,8AH即:8000H~8007H單元保留備用定義空間上頁下頁回目錄6、等值命令EQU格式:字符名稱EQU數(shù)據(jù)或匯編符號(hào)功能:將一個(gè)數(shù)據(jù)或匯編符號(hào)賦予標(biāo)號(hào)段規(guī)定的字符名稱例:ORG8000HAA

EQUR6MOV

A,AA;AA與R6等值;A

(R6)上頁下頁回目錄例:A10EQU10DELYEQU07EBHMOVA,A10LCALLDELY;A10=10;DELY=07EBH;轉(zhuǎn)向入口地址

07EBH使用EQU指令,須先賦值后使用,不能反之上頁下頁回目錄7、數(shù)據(jù)地址賦值等值命令DATA格式:字符名稱DATA數(shù)據(jù)或表達(dá)式功能:此命令把數(shù)據(jù)/代碼地址賦予標(biāo)號(hào)段所規(guī)定的字符名稱。定義的字符名稱可先使用后定義INDEXJDATA8389HORG8000HINDEXJDATA8096HLJMPINDEXJENDORG8000HLJMP8096HEND;INDEXJ這個(gè)字符名稱的地址為8389H例:上頁下頁回目錄等價(jià)于EQU與DATA的區(qū)別(1)DATA與EQU相似,但DATA定義的字符名稱,

可先使用后定義,EQU則不能(2)EQU指令可把匯編符號(hào)賦給字符名稱,

DATA則不能

(3)DATA可把表達(dá)式的值賦給字符名稱,

EQU則不能

DATA常在程序中定義數(shù)據(jù)地址EQU常在程序中定義字符數(shù)據(jù)

上頁下頁回目錄8、位地址符號(hào)命令BIT格式:字符名稱BIT位地址功能:把位地址賦予標(biāo)號(hào)段的字符名稱A1

BIT

P1.0A2BIT

P2.0例:;P1.0,P2.0賦予位地址字符名稱

A1、A2,在編程時(shí)可以直接把

A1、A2當(dāng)成位地址使用上頁下頁回目錄匯編程序的操作分兩次掃描(匯編)第一次掃描(匯編)檢查語法結(jié)構(gòu),對(duì)源程序中的符號(hào)、表達(dá)式、標(biāo)號(hào)進(jìn)行定義,處理偽指令,建立符號(hào)表上頁下頁回目錄顯示ERROR,并提示行號(hào)顯示ERROR,并提示行號(hào)修改!修改!第二次掃描(匯編)匯編成目標(biāo)代碼和匯編程序清單可執(zhí)行的代碼(機(jī)器碼)三、MCS-51指令系統(tǒng)的特點(diǎn)1、執(zhí)行速度快,存儲(chǔ)效率高M(jìn)CS-51指令系統(tǒng)共有111條指令按字節(jié)分單字節(jié)指令49條雙字節(jié)指令45條三字節(jié)指令17條按周期分單周期指令64條雙周期指令45條四周期指令2條設(shè)時(shí)鐘頻率為12MHz,則指令執(zhí)行的時(shí)間分別為:1

s58

2

s40

4

s2

占居空間占居時(shí)間時(shí)空上頁下頁回目錄2、指令易掌握,功能強(qiáng)具有豐富的位操作指令、查表指令、散轉(zhuǎn)指令乘除指令等。構(gòu)成了完整的指令系統(tǒng)3、適合于控制、智能儀表布爾處理機(jī)布爾運(yùn)算器ALU布爾累加器CY(PSW.7)布爾RAM區(qū)共128位布爾I/O口P0~P3口每位都可做布爾I/O口

布爾指令子集17條布爾指令共221位上頁下頁回目錄四、尋址方式(7種)⑴立即尋址⑵直接尋址⑶寄存器尋址⑷寄存器間接尋址⑸基址寄存器加變址寄存器間接尋址⑹相對(duì)尋址⑺位尋址上頁下頁回目錄五、MCS-51指令分類(5類)⑴數(shù)據(jù)傳送(29條)⑵算術(shù)運(yùn)算(24條)⑶邏輯運(yùn)算(24條)⑷控制轉(zhuǎn)移(17條)⑸布爾處理(17條)共111條指令上頁下頁回目錄介紹描述指令符號(hào)的意義—當(dāng)前選中寄存器區(qū)的8個(gè)工作寄存器(R0~R7)RnRidirect-——8位內(nèi)部RAM單元地址00H~7FH——專用特殊功能寄存器SFR的地址80H~FFH——立即數(shù)(8位)#data#data16——立即數(shù)(16位)—當(dāng)前選中寄存器區(qū)中可做間址寄存器的2個(gè)工作寄存器(R0、R1)n=0~7i=0、1上頁下頁回目錄addr16—16位目的地址,用于LCALL、LJMP指令

地址范圍64KBROM空間addr11—11位目的地址,用于ACALL、AJMP指令

地址范圍2KBROM空間relDPTR—數(shù)據(jù)地址指針,可做16位間址寄存器bit—內(nèi)RAM或SFR中的直接位尋址—8位帶符號(hào)的偏移量,

用于SJMP和所有的條件轉(zhuǎn)移指令中范圍-128~127上頁下頁回目錄A—累加器B—專用寄存器,用于MUL和DIV指令C—位累加器(PSW.7),進(jìn)位/借位標(biāo)志@—間址或基址寄存器前綴如@Ri,@A+DPTR/—位操作的前綴,表示對(duì)該位操作數(shù)取反(X)—X中的內(nèi)容((X))—由X尋址的單元中的內(nèi)容箭頭左邊的內(nèi)容被箭頭右邊的內(nèi)容所代替@DPTR,@A+PC上頁下頁回目錄§3.2MCS-51指令的尋址方式用何種方式尋找指令的操作數(shù)或指令的執(zhí)行地址1、立即尋址尋址空間:指令形式:操作碼立即數(shù)程序存儲(chǔ)器指令的操作數(shù)存放在程序存儲(chǔ)器中操作數(shù)緊跟操作碼后面立即尋址:在哪里?用何種方式尋找OP#dataImmediateAddressing上頁下頁回目錄指令的尋址方式:指令的尋址方式:MOVA,#30H;A#30H例1:操作碼立即數(shù)PCPCPC74H30HROM××A30HMOVDPTR,#8000H;DPTR#8000H例2:操作碼PCPCPC立即數(shù)的高8位立即數(shù)的低8位DPHDPLPC80H00H90H80HROM00H

上頁下頁回目錄2、直接尋址尋址空間:指令的三種形式:操作碼操作數(shù)地址在指令中直接給出操作數(shù)的真實(shí)地址操作碼后面緊跟一個(gè)實(shí)際操作數(shù)地址操作碼操作數(shù)地址立即數(shù)操作碼源操作數(shù)地址目的操作數(shù)地址內(nèi)RAM的低128字節(jié)特殊功能寄存器SFR區(qū)直接尋址直接尋址是訪問SFR的唯一方法DirectAddressing上頁下頁回目錄00H~7FH80H~FFHCPU內(nèi)部直接間接“與”上頁下頁回目錄MOVA,30H;A(30H)例1:操作碼操作數(shù)地址PCPCPC74H30HROM××A內(nèi)RAM××30H××ANL30H,#30H;30H(30H)∧#30H

例2:操作碼PCPCPC直接地址立即數(shù)PC53H30HROM

30H××內(nèi)RAM××30H

××ALU“結(jié)果”3、寄存器尋址尋址空間:指令的三種形式:操作碼當(dāng)前選定的寄存器內(nèi)容就是實(shí)際操作數(shù)操作碼立即數(shù)操作碼直接地址R0~R7,由RS0、RS1確定寄存器區(qū)/4A、B、CY(位),DPTR、ABMOVA,R3;A(R3)

例1:ADDA,R3;A(A)+(R3)例2:寄存器尋址:RegisterAddressing操作數(shù)隱含操作數(shù)顯然隱含尋址上頁下頁回目錄4、寄存器間接尋址尋址空間:指令的三種形式:操作碼操作碼立即數(shù)操作碼直接地址內(nèi)部RAM(@R0,@R1,SP)外部RAM(@R0,@R1,@DPTR)寄存器間接尋址:指令選定的寄存器內(nèi)容就是實(shí)際的操作數(shù)地址RegisterIndirectAddressing上頁下頁回目錄MOV@R0,A例1:操作碼PCPCF6HROMR030H;累加器傳送指令內(nèi)RAM××30HA××××MOVXA,@DPTR例2:操作碼PCPCE0HROMDPTR2000H外RAM××2000HA×××ד讀”RD“讀”上頁下頁回目錄5、基址寄存器加變址寄存器間接尋址基址寄存器加變址寄存器間接尋址:

以DPTR或PC作基址寄存器,A作變址寄存器兩者相加形成操作數(shù)地址。尋址空間:程序存儲(chǔ)器(@A+DPTR、@A+PC)指令形式:操作碼上頁下頁回目錄MOVCA,@A+DPTR例:操作碼PCPCDPTR2400HA

0FH93HROM……××240FH設(shè)(A)=0FH(DPTR)=2400H××ALU“讀”PSEN“讀”MOVCA,@A+DPTR上頁下頁回目錄6、相對(duì)尋址程序存儲(chǔ)器尋址空間:指令的三種形式:操作碼rel操作碼

直接地址rel操作碼

立即數(shù)rel相對(duì)尋址以當(dāng)前PC值為基準(zhǔn)地址,加上指令的偏移量“rel”,結(jié)果為目標(biāo)地址。rel為有符號(hào)補(bǔ)碼數(shù),范圍:-128~+127一般為雙字節(jié)或三字節(jié)指令RelativeAddressing上頁下頁回目錄尋址指令執(zhí)行地址目標(biāo)地址JNZrel例:;累加器A不等零則轉(zhuǎn)移設(shè):rel=23H2025H2002H2001H2000HROM70H23H下一條指令.......操作碼PCPCPC(PC)=2002Hrel=23H修正后轉(zhuǎn)移目標(biāo)地址D(PC)=2025HPCALU偏移量上頁下頁回目錄(PC)=2002HRel=23H)005202HD=2025H2112H2111H2110HROMDFHF2H下一條指令.......操作碼PCPCPC(PC)=2112Hrel=F2H修正后轉(zhuǎn)移目標(biāo)地址D(PC)=2104HALU偏移量上頁下頁回目錄例:DJNZR7,rel

;(R7)–1不為“0”則轉(zhuǎn)PC2104H指令(PC)=2112HRel=F2H)FF4012HD=7、位尋址尋址空間:片內(nèi)RAM的20H~2FH字節(jié)地址位地址:00H~7FH

共128位SFR中12個(gè)能被8整除的字節(jié)地址位地址請(qǐng)參看P43

表2-16共93位BitAddressing

以訪問觸發(fā)器的方式,對(duì)內(nèi)部RAM、SFR的位地址空間進(jìn)行訪問,稱為位尋址。位地址用于布爾指令。共221位上頁下頁回目錄尋址方式與相應(yīng)的尋址空間小結(jié):寄存器R0~R7,A,BCY,DPTR片內(nèi)內(nèi)RAM的低128字節(jié)特殊功能寄存器SFR直接尋址direct寄存器間址@R0,@R1,SP

@R0,@R1,@DPTR片內(nèi)RAM、片外RAM與I/O口立即數(shù)#data

程序存儲(chǔ)器程序存儲(chǔ)器基址加變址@A+DPTR,@A+PC程序存儲(chǔ)器相對(duì)尋址PC+rel位尋址片內(nèi)RAM20H~2FH部分SFRbit利用的變量

使用的空間方式上頁下頁回目錄§3.3MCS-51指令系統(tǒng)介紹MCS-51系統(tǒng)指令系統(tǒng)共111條,按操作功能分類:⑴數(shù)據(jù)傳送類⑵算術(shù)運(yùn)算類⑶邏輯運(yùn)算類⑷控制轉(zhuǎn)移類⑸布爾處理類上頁下頁回目錄一、數(shù)據(jù)傳送類(29條)用到的指令助記符有5種:片內(nèi)傳送MOV片外傳送MOVX查表傳送MOVC累加器交換XCH、XCHD、SWAP堆棧操作PUSH、POP上頁下頁回目錄1、MOV類傳送指令格式:MOV〈目的字節(jié)〉,〈源字節(jié)〉功能:把源字節(jié)內(nèi)容送目的字節(jié),源字節(jié)內(nèi)容不變以累加器A為目的字節(jié)的傳送:⑴立即數(shù)送累加器MOVA,#data74H立即數(shù)

機(jī)器碼;立即數(shù)#data送累加器A

雙字節(jié)指令,機(jī)器碼的第一字節(jié)為74H,第二字節(jié)為立即數(shù)上頁下頁回目錄⑵寄存器內(nèi)容送累加器MOVA,Rn(n=0~7)單字節(jié)指令,機(jī)器碼相應(yīng)為E8H、E9H、…、EFH工作寄存器組的選擇由狀態(tài)字中的RS0、RS1確定⑶內(nèi)RAM或SFR內(nèi)容送累加器E8H~EFH機(jī)器碼MOVA,direct雙字節(jié)指令,機(jī)器碼的第一字節(jié)為E5H,第二字節(jié)為直接尋址字節(jié)的直接地址E5H直接地址機(jī)器碼;Rn的內(nèi)容送累加器A;以direct為地址的單元的內(nèi)容送累加器A上頁下頁回目錄⑷內(nèi)RAM內(nèi)容送累加器MOVA,@Ri(i=0、1)單字節(jié)指令,機(jī)器碼相應(yīng)為E6H、E7H;以Ri內(nèi)容為地址單元中的數(shù)送累加器AE6H~E7H機(jī)器碼以Rn為目的字節(jié)的傳送:⑸立即數(shù)送寄存器MOV

Rn,#data(n=0~7)78H~7FH

立即數(shù)

機(jī)器碼;立即數(shù)#data送累加器Rn雙字節(jié)指令,機(jī)器碼的第一字節(jié)為78H~7FH,第二字節(jié)為立即數(shù)上頁下頁回目錄⑹累加器內(nèi)容送寄存器RnMOVRn

,A(n=0~7);累加器A的內(nèi)容送Rn單字節(jié)指令,機(jī)器碼相應(yīng)為F8H~FFHF8H~FFH機(jī)器碼⑺內(nèi)RAM或SFR內(nèi)容送寄存器RnMOVRn

,direct(n=0~7)雙字節(jié)指令A(yù)8H~AFH直接地址

機(jī)器碼;以direct為地址的單元的內(nèi)容送寄存器Rn上頁下頁回目錄⑻立即數(shù)送內(nèi)RAM或SFRMOVdirect,#data;立即數(shù)#data送以direct為地址的單元三字節(jié)指令直接地址立即數(shù)75H機(jī)器碼⑼累加器內(nèi)容送內(nèi)RAM或SFRMOVdirect,A;累加器送以direct為地址的單元F5H直接地址機(jī)器碼二字節(jié)指令直接地址為目的字節(jié)的傳送:上頁下頁回目錄⑽寄存器內(nèi)容送內(nèi)RAM或SFRMOVdirect,Rn(n=0~7);寄存器Rn內(nèi)容送以direct為地址的單元二字節(jié)指令88H~8FH直接地址機(jī)器碼⑾內(nèi)RAM或SFR之間直接傳送MOVdirect1,direct2

源地址目的地址85H機(jī)器碼;內(nèi)RAM或SFR任意兩個(gè)單元之間傳送數(shù)據(jù)三字節(jié)指令上頁下頁回目錄⑿內(nèi)RAM數(shù)據(jù)送內(nèi)RAM或SFRMOV

direct,@Ri(i=0、1)二字節(jié)指令86H~87H直接地址機(jī)器碼;以Ri內(nèi)容為地址單元中的數(shù)送內(nèi)RAM或SFR⒀立即數(shù)送內(nèi)RAMMOV@Ri,#data(i=0、1);立即數(shù)#data送以Ri內(nèi)容為地址的單元76H~77H

立即數(shù)機(jī)器碼二字節(jié)指令上頁下頁回目錄⒁累加器內(nèi)容送內(nèi)RAMMOV@Ri,A(i=0、1);累加器內(nèi)容送以Ri內(nèi)容為地址的單元單字節(jié)指令F6H~F7H機(jī)器碼⒂內(nèi)RAM或SFR數(shù)據(jù)送內(nèi)RAMMOV@Ri,direct(i=0、1)二字節(jié)指令A(yù)6H~A7H直接地址

機(jī)器碼;以direct為地址的單元內(nèi)容送Ri內(nèi)容為地址的單元上頁下頁回目錄⒃16位立即數(shù)傳送指令MOVDPTR,#data16;16位立即數(shù)送DPTR中,設(shè)置地址指針。三字節(jié)指令

立即數(shù)高8位

立即數(shù)低8位90H

機(jī)器碼上頁下頁回目錄MOV類傳送指令小結(jié)MOVA,#data立即數(shù)送累加器MOVA,Rn寄存器內(nèi)容送累加器MOVA,direct直接地址內(nèi)容送累加器MOVA,@Ri內(nèi)RAM內(nèi)容送累加器MOVRn,#data立即數(shù)送寄存器MOVRn

,A累加器內(nèi)容送寄存器RnMOVRn

,direct直接地址內(nèi)容送寄存器Rn指令助記符說明字節(jié)2121212上頁下頁回目錄MOV片內(nèi)傳送指令

MOV類傳送指令小結(jié)MOVdirect1,direct2內(nèi)RAM或SFR之間直接傳送MOVdirect,@Ri內(nèi)RAM數(shù)據(jù)送內(nèi)RAM或SFRMOVdirect,#data立即數(shù)送內(nèi)RAM或SFRMOVdirect,A累加器內(nèi)容送內(nèi)RAM或SFRMOVdirect,Rn寄存器內(nèi)容送內(nèi)RAM或SFR指令助記符說明字節(jié)32232MOV@Ri,#data立即數(shù)送內(nèi)RAMMOV@Ri,A累加器內(nèi)容送內(nèi)RAMMOV@Ri,direct內(nèi)RAM數(shù)據(jù)送內(nèi)RAM或SFRMOVDPTR,#data1616位立即數(shù)傳送指令2123上頁下頁回目錄MOV片內(nèi)傳送指令2、MOVX類傳送指令累加器A與外部RAM傳送數(shù)據(jù)用MOVX⑴外部RAM送累加器AMOVXA,@Ri(i=0、1)單字節(jié)指令,機(jī)器碼相應(yīng)為E2H、E3H;以Ri內(nèi)容為外部RAM地址的單元中的數(shù)送AE2H~E3H機(jī)器碼⑵累加器內(nèi)容送外RAMMOVX@Ri,A(i=0、1);累加器內(nèi)容送以Ri內(nèi)容為地址的外部RAM單元單字節(jié)指令F2H~F3H機(jī)器碼上頁下頁回目錄RDWR⑶外部RAM送累加器AMOVXA,@DPTR單字節(jié)指令,機(jī)器碼相應(yīng)為E0H;以DPTR內(nèi)容為地址的外部RAM單元中的數(shù)送AE0H機(jī)器碼⑷累加器內(nèi)容送外RAMMOVX@DPTR,A;累加器內(nèi)容送以DPTR內(nèi)容為地址的外部RAM單元單字節(jié)指令,機(jī)器碼相應(yīng)為F0HF0H機(jī)器碼上頁下頁回目錄RDWRMOVX類傳送指令小結(jié)

指令助記符說明字節(jié)1111MOVXA,@Ri外部RAM送累加器AMOVX@Ri,A累加器內(nèi)容送外RAMMOVXA,@DPTR外部RAM送累加器AMOVX@DPTR,A累加器內(nèi)容送外RAM上頁下頁回目錄MOVX

片外傳送指令例:將片外RAM120H單元的內(nèi)容傳送到片外RAM

地址為78H的單元。MOVDPTR,#0120HMOVXA,@DPTRMOVR0,#78HMOVX@R0,A例:將片內(nèi)RAM12H單元的內(nèi)容傳送到片內(nèi)RAM

地址為78H的單元。MOV78H,12H;外部RAM送累加器A;累加器內(nèi)容送外RAM上頁下頁回目錄3、MOVC類傳送指令MOVC類傳送指令,均為基址加變址寄存器尋址:MOVCA,@A+DPTR

;以DPTR作基址寄存器,A作變址寄存器,兩者;相加形成16位ROM地址,將該單元內(nèi)容讀入A單字節(jié)指令,機(jī)器碼相應(yīng)為93H93H機(jī)器碼⑴以DPTR作基址加變址尋址上頁下頁回目錄長查表指令16位PSENMOVCA,@A+PC單字節(jié)指令,機(jī)器碼相應(yīng)為83H83H機(jī)器碼⑵以PC作基址加變址尋址

;取指后PC增“1”,以當(dāng)前PC作基址,A作變址,兩者;相加形成16位ROM地址,將該單元內(nèi)容讀入A上頁下頁回目錄短查表指令PSENMOVC類傳送指令小結(jié)指令助記符說明字節(jié)11MOVCA,@A+DPTRMOVCA,@A+PC以DPTR作基址加變址尋址以PC作基址加變址尋址上頁下頁回目錄MOV

DPTR,#2000HMOVCA,@A+DPTR2004H2003H2002H2001H2000H2008H2009H2005H2006H2007H存儲(chǔ)器00H01H04H09H10H19H24H31H40H51H例:在外部ROM中存放0~9的平方值。根據(jù)累加器

A中的數(shù)(0~9),查找對(duì)應(yīng)的平方值。用DPTR作基址寄存器指向表格的首地址用A作變址寄存器實(shí)際上A中的值是表格中的第幾項(xiàng)上頁下頁回目錄表格首址操作碼PCPCDPTR2000HA

03H

09HMOVCA,@A+DPTR93HROM……00H2000H01H04H09H2001H2002H2003H…;設(shè)(A)=03H,查“3”的平方ALU上頁下頁回目錄用PC作基址寄存器,它并不指向表格首址;是PC當(dāng)前值與所查表格首址之間的距離;即(PC)+#data

TABBEL表格首址設(shè)(A)=03H,是表格中的第3項(xiàng);單字節(jié)指令,設(shè)指令在ROM中的地址為1FF0HADDA,#dataMOVCA,@A+PC2000H1FF1H-000FH上頁下頁回目錄;#data是變址調(diào)整值#dataPC當(dāng)前值表格首址TABBEL:DB00HDB01HDB04H…DB09H2000H12HA…

PCPC2003HTABBELPCPC操作碼MOVCA,@A+PC93HROM……00H2000H01H04H09H2001H2002H2003H…1FF0H1FF1H(PC)=1FF1HA12H09H;查“3”的平方上頁下頁回目錄ALUTABBEL4、XCH、XCHD、SWAP類傳送指令⑴寄存器內(nèi)容與累加器內(nèi)容交換XCHA,Rn(n=0~7)C8H~CFH機(jī)器碼;(A)(Rn)單字節(jié)指令⑵內(nèi)RAM或SFR內(nèi)容與累加器內(nèi)容交換XCHA,direct(n=0~7);(A)(direct)雙字節(jié)指令C5H直接地址機(jī)器碼上頁下頁回目錄⑶內(nèi)RAM內(nèi)容與累加器內(nèi)容交換XCHA,@Ri(i=0,1);(A)((Ri))單字節(jié)指令C6H~C7H機(jī)器碼⑷內(nèi)RAM內(nèi)容低4位與累加器低4位內(nèi)容交換XCHDA,@Ri(i=0,1);(A3~0)

((Ri)3~0)單字節(jié)指令D6H~D7H機(jī)器碼上頁下頁回目錄A(Ri)⑸累加器A高4位與低4位交換SWAPA;(A3~0)

(A7~4)單字節(jié)指令C4H機(jī)器碼上頁下頁回目錄A

交換類傳送指令小結(jié)指令助記符說明字節(jié)12111XCHA,RnXCHA,direct寄存器內(nèi)容與累加器內(nèi)容交換直接地址內(nèi)容與累加器內(nèi)容交換XCHA,@RiXCHDA,@Ri內(nèi)RAM內(nèi)容與累加器內(nèi)容交換內(nèi)RAM內(nèi)容低4位與累加器低4位交換SWAP

A累加器A高4位與低4位交換上頁下頁回目錄5、堆棧操作指令⑴進(jìn)棧指令PUSHdirectC0H直接地址機(jī)器碼;SP自動(dòng)增“1”,(SP)(SP)

+1;direct地址單元的內(nèi)容壓入SP指向的單元雙字節(jié)指令⑵出棧指令POPdirectD0H直接地址機(jī)器碼;SP自動(dòng)減“1”,(SP)(SP)

-1;SP指向的單元內(nèi)容彈出到以direct為地址的單元雙字節(jié)指令上頁下頁回目錄SPSP例:堆棧操作設(shè)(A)=55H,(B)=3FH’建立堆棧’壓入操作’彈出操作

60H61H62H63H64H55H3FHSPMOVSP,#60HPUSHAPUSHBPOPPSWSP

結(jié)果:PSW的內(nèi)容3FH,SP的內(nèi)容為61H上頁下頁回目錄PSW3FH二、算術(shù)運(yùn)算類(24條)用到的指令助記符有8種:加法指令

ADD、ADDC、INC、DA減法指令SUBB,DEC乘除指令MUL,DIV算術(shù)運(yùn)算類指令執(zhí)行結(jié)果影響標(biāo)志位:CY、AC、OV上頁下頁回目錄見P76表3–3見P359附表Ⅰ1、不帶進(jìn)位加ADD⑴累加器內(nèi)容加立即數(shù)ADDA,#data;A

(A)+#data雙字節(jié)指令24H立即數(shù)機(jī)器碼⑵累加器內(nèi)容加寄存器內(nèi)容ADDA,Rn(n=0~7);A

(A)+(Rn)單字節(jié)指令28H~2FH機(jī)器碼上頁下頁回目錄⑶累加器內(nèi)容加內(nèi)RAM內(nèi)容ADDA,@Ri(i=0,1);A

(A)+((Ri))單字節(jié)指令26H~27H機(jī)器碼⑷累加器內(nèi)容加內(nèi)RAM內(nèi)容或SFRADDA,direct;A

(A)+(direct)雙字節(jié)指令25H直接地址機(jī)器碼上頁下頁回目錄ADD類指令小結(jié)指令助記符說明字節(jié)2112ADDA,#dataADDA,Rn立即數(shù)加到累加器寄存器內(nèi)容加到累加器ADDA,@RiADDA,direct內(nèi)RAM內(nèi)容加到累加器直接地址內(nèi)容加到累加器上頁下頁回目錄2、帶進(jìn)位加ADDC⑴累加器內(nèi)容加立即數(shù)加進(jìn)位位ADDCA,#data;A

(A)+#data+CY雙字節(jié)指令34H立即數(shù)機(jī)器碼⑵累加器內(nèi)容加寄存器內(nèi)容加進(jìn)位位ADDCA,Rn(n=0~7);A

(A)+(Rn)+CY單字節(jié)指令38H~3FH機(jī)器碼上頁下頁回目錄⑶累加器內(nèi)容加內(nèi)RAM內(nèi)容加進(jìn)位位ADDC

A,@Ri(i=0,1);A

(A)+((Ri))+CY單字節(jié)指令36H~37H機(jī)器碼⑷累加器內(nèi)容加內(nèi)RAM內(nèi)容或SFR加進(jìn)位位ADDC

A,direct;A

(A)+(direct)+CY雙字節(jié)指令35H直接地址機(jī)器碼上頁下頁回目錄指令符助記說明字節(jié)2112ADDCA,#dataADDCA,Rn立即數(shù)和進(jìn)位加到累加器寄存器內(nèi)容和進(jìn)位加到累加器ADDCA,@RiADDCA,direct內(nèi)RAM內(nèi)容和進(jìn)位加到累加器直接地址內(nèi)容和進(jìn)位加到累加器ADDC類指令小結(jié)上頁下頁回目錄無符號(hào)數(shù)相加:若和數(shù)大于255,則CY=1,否則CY=0上頁下頁回目錄用于多字節(jié)無符號(hào)數(shù)相加

試分析執(zhí)行下面的指令后,程序狀態(tài)字PSW中

CY,AC,OV的內(nèi)容是什么?MOVA,#53HADDA,R0MOVR0,#76HD7D6D5D4D3D2D1D0

01010011(53H)

01110110(76H)10010011(C9H)CY=0AC=0OV=C6’C7’=1

+此時(shí)C6’=1、

C7’=0則+上頁下頁回目錄3、增量INC⑴累加器內(nèi)容加“1”INC

A;A

(A)+1單字節(jié)指令⑵寄存器內(nèi)容加“1”INCRn;A

(Rn)+1單字節(jié)指令08H~0FH機(jī)器碼04H機(jī)器碼上頁下頁回目錄⑶內(nèi)RAM或SFR內(nèi)容加“1”INCdirect;(Ri)

((Ri))+1單字節(jié)指令06H~07H機(jī)器碼⑷內(nèi)RAM內(nèi)容加“1”INC@Ri;direct(direct)+1雙字節(jié)指令05H直接地址機(jī)器碼上頁下頁回目錄⑸數(shù)據(jù)指針DPTR內(nèi)容加“1”INCDPTR;DPTR(DPTR)+1單字節(jié)指令A(yù)3H機(jī)器碼INC指令中除INCA

指令影響P標(biāo)志位,其余指令不影響任何標(biāo)志位上頁下頁回目錄INC類指令小結(jié)指令助記符說明字節(jié)1121INCAINCRn累加器內(nèi)容加“1”寄存器內(nèi)容加“1INC

direct內(nèi)RAM或SFR內(nèi)容加“1INC@Ri內(nèi)RAM內(nèi)容加“1INCDPTR數(shù)據(jù)指針DPTR內(nèi)容加“11上頁下頁回目錄4、十進(jìn)制調(diào)整指令DAA;對(duì)累加器A,作BCD碼加法后進(jìn)行“過9補(bǔ)6”調(diào)整若[(A3~0)>9]∨[AC=1]

則(A3~0)

(A3~0)+06H若[(A7~4)>9]∨[CY=1]則(A7~4)

(A7~4)+60H注意:DA

指令不能對(duì)BCD碼減法的結(jié)果進(jìn)行調(diào)整D4H機(jī)器碼單字節(jié)指令上頁下頁回目錄BCDHBCDLAABCDEF0123456789BCD合法√√√非法?。?!1010101111001101111011110000000101000010001110000101100101110110二進(jìn)制數(shù)00000001100001000111上頁下頁回目錄合法√√√例設(shè)(A)=37H;(R3)=36H,執(zhí)行下面的程序:

00110111(37H)

00110110(36H)(6DH)

01101101過“9”

00000110

01110011補(bǔ)“6”(73H);(A)=6DH;(A)=73H

01110011(73H)

10011001(99H)

1

00001100(0CH)

CY

01100110

01110010(72H);(A)=0CHCY=1;(A)=72H過“9”補(bǔ)“6”110111100上頁下頁回目錄ADDA,R3DA

AADDA,#99HDAA“+99”就等于減“-1”互補(bǔ)DAA

只能跟在加法指令之后5、減法指令SUBB⑴累加器減立即數(shù)和借位標(biāo)志SUBBA,#data雙字節(jié)指令94H立即數(shù)機(jī)器碼⑵累加器減寄存器內(nèi)容和借位標(biāo)志SUBB

A,Rn(n=0~7)單字節(jié)指令98H~9FH機(jī)器碼;A

(A)-#data-CY;A

(A)-(Rn)-CY上頁下頁回目錄⑶累加器減RAM內(nèi)容和借位標(biāo)志SUBBA,@Ri(i=0,1)單字節(jié)指令96H~97H機(jī)器碼⑷累加器內(nèi)容減內(nèi)RAM內(nèi)容或SFR和借位標(biāo)志SUBBA,direct雙字節(jié)指令95H直接地址機(jī)器碼;A

(A)-((Ri))-CY;A(A)-(direct)-CY上頁下頁回目錄SUBB類指令小結(jié)指令助記符說明字節(jié)2112SUBBA,#dataSUBBA,RnSUBB

A,@RiSUBBA,direct累加器減立即數(shù)和借位累加器減寄存器內(nèi)容和借位累加器減RAM內(nèi)容和借位累加器減直接地址內(nèi)容和借位上頁下頁回目錄6、減量DEC⑴累加器內(nèi)容減“1”DECA;A

(A)-1單字節(jié)指令⑵寄存器內(nèi)容減“1DECRn;Rn(Rn)-1單字節(jié)指令18H~1FH機(jī)器碼14H機(jī)器碼上頁下頁回目錄⑶內(nèi)RAM或SFR內(nèi)容減“1DECdirect;(Ri)

((Ri))-1單字節(jié)指令16H~17H機(jī)器碼⑷內(nèi)RAM內(nèi)容減“1DEC@Ri;direct(direct)-1雙字節(jié)指令15H直接地址機(jī)器碼上頁下頁回目錄DEC類指令小結(jié)指令助記符說明字節(jié)1121DECADEC

Rn累加器內(nèi)容減“1”寄存器內(nèi)容減“1”DEC

direct內(nèi)RAM或SFR內(nèi)容減“1”DEC

@Ri內(nèi)RAM內(nèi)容減“1”上頁下頁回目錄7、MULMUL

ABDIVABA4H機(jī)器碼單字節(jié)指令;執(zhí)行(A)×(B)(BA)的操作CY=08、DIV單字節(jié)指令84H機(jī)器碼;執(zhí)行(A)/(B)后,商A余BCY=0上頁下頁回目錄三、邏輯運(yùn)算類(24條)用到的指令助記符有9種:包括與、或、異或、清除、求反、移位等操作ANL、ORL、XRL、CLR、CPL、RL、RLC、RR、RRC上頁下頁回目錄1、邏輯與ANL(6條)⑴累加器內(nèi)容邏輯與立即數(shù)ANL

A,#data;A(A)∧#data雙字節(jié)指令54H立即數(shù)機(jī)器碼⑵累加器內(nèi)容邏輯與寄存器內(nèi)容ANL

A,Rn(n=0~7);A

(A)∧(Rn)單字節(jié)指令58H~5FH機(jī)器碼上頁下頁回目錄⑶累加器內(nèi)容邏輯與內(nèi)RAM內(nèi)容ANLA,@Ri(i=0,1);A

(A)∧((Ri))單字節(jié)指令56H~57H機(jī)器碼⑷累加器內(nèi)容邏輯與內(nèi)RAM內(nèi)容或SFRANLA,direct;A(A)∧(direct)雙字節(jié)指令55H直接地址機(jī)器碼上頁下頁回目錄⑸累加器內(nèi)容邏輯與內(nèi)RAM或SFRANL

direct,A52H直接地址機(jī)器碼二字節(jié)指令;direct(direct)∧A⑹立即數(shù)邏輯與RAM或SFRANLdirect,#data三字節(jié)指令直接地址立即數(shù)53H

機(jī)器碼;direct(direct)∧#data上頁下頁回目錄ANL類傳送指令小結(jié)ANLA,#data立即數(shù)邏輯與累加器ANLA,Rn寄存器內(nèi)容邏輯與累加器ANLA,direct直接地址內(nèi)容邏輯與累加器ANLA,@Ri內(nèi)RAM內(nèi)容邏輯與累加器指令助記符說明字節(jié)2121ANLdirect,AANLdirect,#data累加器邏輯與內(nèi)RAM或SFR立即數(shù)邏輯與RAM或SFR23上頁下頁回目錄讀–修改–寫2、邏輯或ORL(6條)⑴累加器內(nèi)容邏輯或立即數(shù)ORLA,#data;A(A)∨#data雙字節(jié)指令44H立即數(shù)機(jī)器碼⑵累加器內(nèi)容邏輯或寄存器內(nèi)容ORLA,Rn(n=0~7);A

(A)∨(Rn)單字節(jié)指令48H~4FH機(jī)器碼上頁下頁回目錄⑶累加器內(nèi)容邏輯或內(nèi)RAM內(nèi)容ORL

A,@Ri(i=0,1);A

(A)∨((Ri))單字節(jié)指令46H~47H機(jī)器碼⑷累加器內(nèi)容邏輯或內(nèi)RAM內(nèi)容或SFRORLA,direct;A

(A)∨(direct)雙字節(jié)指令45H直接地址機(jī)器碼上頁下頁回目錄⑸累加器內(nèi)容邏輯或內(nèi)RAM或SFRORLdirect,A42H直接地址機(jī)器碼二字節(jié)指令;direct(direct)∨(A)⑹立即數(shù)邏輯或RAM或SFRORLdirect,#data三字節(jié)指令直接地址立即數(shù)43H

機(jī)器碼;direct(direct)∨#data上頁下頁回目錄ORL類傳送指令小結(jié)ORL

A,#data立即數(shù)邏輯或累加器ORLA,Rn寄存器內(nèi)容邏輯或累加器ORLA,direct直接地址內(nèi)容邏輯或累加器ORLA,@Ri內(nèi)RAM內(nèi)容邏輯或累加器指令符號(hào)說明字節(jié)2121ORL

direct,AORLdirect,#data累加器邏輯或內(nèi)RAM或SFR立即數(shù)邏輯或RAM或SFR23上頁下頁回目錄讀–修改–寫3、邏輯異或XRL(6條)⑴累加器內(nèi)容邏輯異或立即數(shù)XRLA,#data雙字節(jié)指令64H立即數(shù)機(jī)器碼⑵累加器內(nèi)容邏輯異或寄存器內(nèi)容XRL

A,Rn(n=0~7)單字節(jié)指令68H~6FH機(jī)器碼;A

(A)#data○+;A(A)(Rn)○+上頁下頁回目錄⑶累加器內(nèi)容邏輯異或內(nèi)RAM內(nèi)容XRLA,@Ri(i=0,1)單字節(jié)指令66H~67H機(jī)器碼⑷累加器內(nèi)容邏輯異或內(nèi)RAM內(nèi)容或SFRXRLA,direct雙字節(jié)指令65H直接地址機(jī)器碼;A(A)

((Ri))○+;A

(A)

(direct)○+上頁下頁回目錄⑸累加器內(nèi)容邏輯異或內(nèi)RAM或SFRXRL

direct,A62H直接地址機(jī)器碼二字節(jié)指令⑹立即數(shù)邏輯異或RAM或SFRXRLdirect,#data三字節(jié)指令直接地址立即數(shù)63H

機(jī)器碼;direct(direct)(A)

○+;direct(direct)#data○+上頁下頁回目錄XRL類傳送指令小結(jié)XRLA,#data立即數(shù)邏輯異或累加器XRLA,Rn寄存器內(nèi)容邏輯異或累加器XRL

A,direct直接地址內(nèi)容邏輯異或累加器XRL

A,@Ri內(nèi)RAM內(nèi)容邏輯異或累加器指令助記符說明字節(jié)2121XRLdirect,AXRLdirect,#data累加器邏輯異或內(nèi)RAM或SFR立即數(shù)邏輯異或RAM或SFR23上頁下頁回目錄讀–修改–寫例:根據(jù)累加器中4~0的狀態(tài)修改P1端口位4~0的狀態(tài)ANLA,#00011111BANLP1,#11100000BORLP1,A;A屏蔽前3位,保留后5位;A的后5位是“1”,使P1口相應(yīng)位置“1”,P1前3位不變;P1屏蔽后5位,保留前3位上頁下頁回目錄僅修改了P1

口的后5位“讀”—“修改”—“寫”4累加器清除與求反指令(2條)⑴累加器A清零CLR

A單字節(jié)指令;A

00HE4H機(jī)器碼⑵累加器A按位取反CPLAF4H機(jī)器碼;A(A)單字節(jié)指令上頁下頁回目錄例:給出下面程序分析執(zhí)行結(jié)果CLR

ACPLA;(A)=00H;(A)=FFH上頁下頁回目錄4移位指令(4條)⑴累加器內(nèi)容循環(huán)左移一位RLAA7A0單字節(jié)指令23H機(jī)器碼⑵累加器內(nèi)容連同進(jìn)位標(biāo)志循環(huán)左移一位A7A0單字節(jié)指令RLCA33H機(jī)器碼CY上頁下頁回目錄⑶累加器內(nèi)容循環(huán)右移一位RRAA7A0單字節(jié)指令03H機(jī)器碼⑷累加器內(nèi)容連同進(jìn)位標(biāo)志循環(huán)右移一位A7A0單字節(jié)指令RRCA13H機(jī)器碼CY上頁下頁回目錄

移位指令小結(jié)指令助記符說明字節(jié)1111RL

ARLC

ARRARRC

A累加器循環(huán)左移累加器連同進(jìn)位循環(huán)左移累加器循環(huán)右移累加器連同進(jìn)位循環(huán)右移11CLR

ACPLA累加器A清零累加器A按位取反

累加器清除與求反指令小結(jié)上頁下頁回目錄例:設(shè)(A)=5AH、CY=1RLARLCARR

ARRC

A;(A)=B4H;(A)=2DH;(A)=B5H;(A)=ADH0101101001011010010110101CY010110101CY010100上頁下頁回目錄四、控制轉(zhuǎn)移指令(17條)控制轉(zhuǎn)移指令共有17條:無條件轉(zhuǎn)移指令條件轉(zhuǎn)移指令子程序的調(diào)用返回等上頁下頁回目錄1、無條件轉(zhuǎn)移指令⑴長轉(zhuǎn)移LJMP

addr16;PC

addr16addr15~802H

機(jī)器碼addr7~0三字節(jié)指令⑵絕對(duì)轉(zhuǎn)移AJMPaddr11;PC10~0

A10~0

AJMP將程序存儲(chǔ)器分為32個(gè)區(qū),由PC15~11決定,每個(gè)區(qū)2KB,分8頁,由A10A9A8決定。雙字節(jié)指令A(yù)10A9A800001A7

~A0機(jī)器碼;PC

(PC)+2上頁下頁回目錄轉(zhuǎn)移范圍2KB轉(zhuǎn)移范圍64KB上頁下頁回目錄A7

~A0A10A9A8

00001PC15~PC11PC10PC9PC8PC7

~

PC0…...在2區(qū)形成11位目標(biāo)地址.........AJMP0區(qū)1區(qū)31區(qū)0000H07FFH0800H0FFFH1000H17FFHF800HFFFFH...1000H17FFH保持高5位地址以確定某區(qū)00010例如AJMPadd11

在2區(qū)的執(zhí)行過程2區(qū)2KB范圍內(nèi)頁內(nèi)地址頁地址操作碼00001⑶短轉(zhuǎn)移SJMPrel

;PC(PC)+rel

指令中的rel是8位帶符號(hào)補(bǔ)碼,范圍-128~+127??捎蓞R編自動(dòng)計(jì)算并填入指令代碼,也可手工計(jì)算。

;PC

(PC)+2

10000000

rel機(jī)器碼雙字節(jié)指令計(jì)算式:rel=目標(biāo)地址-(PC+2)例:分析指令SJMP$符號(hào)“$”指本指令執(zhí)行前的PC值,指令SJMP$執(zhí)行后,程序仍然轉(zhuǎn)移回此指令繼續(xù)執(zhí)行,計(jì)算機(jī)于是不斷的執(zhí)行這一指令,進(jìn)入等待狀態(tài)。上頁下頁回目錄原地踏步rel=0FEH=(-2)補(bǔ)⑷間接長轉(zhuǎn)移JMP@A+DPTR;PC(A)+(DPTR)73H機(jī)器碼單字節(jié)指令上頁下頁回目錄

無條件轉(zhuǎn)移指令小結(jié)指令助記符說明字節(jié)3221長轉(zhuǎn)移LJMP

addr16絕對(duì)轉(zhuǎn)移AJMP

addr11短轉(zhuǎn)移SJMP

rel間接長轉(zhuǎn)移JMP

@A+DPTR上頁下頁回目錄(散轉(zhuǎn)指令)可以有n個(gè)目標(biāo)地址則順序執(zhí)行2、條件轉(zhuǎn)移指令⑴累加器為零則轉(zhuǎn)移JZ

rel;若(A)=0,PC(PC)+2+rel

;若(A)≠0,則PC(PC)+260H

rel機(jī)器碼雙字節(jié)指令JNZrel;若(A)≠0,PC(PC)+2+rel

;若(A)=0,則PC(PC)+2雙字節(jié)指令⑵累加器不為零則轉(zhuǎn)移

70H

rel機(jī)器碼上頁下頁回目錄則轉(zhuǎn)移則順序執(zhí)行則轉(zhuǎn)移⑶累加器與立即數(shù)不等則轉(zhuǎn)移CJNEA,#data,rel三字節(jié)指令;若(A)=#data,則PC(PC)+3,CY0;若(A)>#data,PC(PC)+3+rel,CY

0;若(A)<#data,PC(PC)+3+rel,CY1

#dataB4H機(jī)器碼

rel⑷寄存器與立即數(shù)不等則轉(zhuǎn)移CJNERn,#data,rel三字節(jié)指令;若(Rn)=#data,則PC(PC)+3,CY

0;若(Rn)>#data,PC(PC)+3+rel,

CY

0;若(Rn)<#data,PC(PC)+3+rel,CY1

#dataB8H~BFH

機(jī)器碼

rel上頁下頁回目錄順序轉(zhuǎn)移轉(zhuǎn)移順序⑹累加器與內(nèi)RAM或SFR不等則轉(zhuǎn)移CJNEA,direct,rel三字節(jié)指令;若(A)=(direct),則PC(PC)+3,CY0;若(A)>(direct),PC(PC)+3+rel,

CY0;若(A)<(direct),PC(PC)+3+rel,

CY1

#dataB5H機(jī)器碼

rel⑸內(nèi)RAM與立即數(shù)不等則轉(zhuǎn)移CJNE@Ri,#data,rel三字節(jié)指令;若((Ri))=#data,則PC(PC)+3,CY

0;若((Ri))>#data,PC(PC)+3+rel,CY0;若((Ri))<#data,PC(PC)+3+rel,CY1

#dataB6H~B7H機(jī)器碼

rel上頁下頁回目錄順序轉(zhuǎn)移轉(zhuǎn)移順序⑺寄存器減“1”不等零則轉(zhuǎn)移DJNZ

Rn,rel(n=0~7)

60H

rel

機(jī)器碼雙字節(jié)指令DJNZdirect,rel三字節(jié)指令⑻內(nèi)RAM或SFR減“1”不為零則轉(zhuǎn)移;若(Rn)≠0,PC(PC)+2+rel

;若(Rn)=0,

則PC(PC)+2;Rn(Rn)-1;若(direct)≠0,PC(PC)+2+rel

;若(direct)=0,則PC(PC)+2;direct(direct)-1directD5H

機(jī)器碼

rel上頁下頁回目錄順序轉(zhuǎn)移轉(zhuǎn)移順序上頁下頁回目錄

條件轉(zhuǎn)移類指令小結(jié)指令助記符說明字節(jié)223323JZrelJNZrelCJNEA,#data,relCJNERn,#data,relDJNZRn,relDJNZdirect,rel累加器A為零則轉(zhuǎn)移累加器A不為零則轉(zhuǎn)移累加器A與立即數(shù)不等則轉(zhuǎn)移寄存器與立即數(shù)不等則轉(zhuǎn)移寄存器減“1”不等零則轉(zhuǎn)移內(nèi)RAM或SFR減“1”不為零則轉(zhuǎn)移CJNEA,direct,relCJNE@Ri,#data,rel間接RAM與立即數(shù)不等則轉(zhuǎn)移累加器A與直接內(nèi)RAM不等則轉(zhuǎn)移333、子程序調(diào)用及返回指令⑴長調(diào)用LCALL

addr16;PC

addr16addr15~812H

機(jī)器碼addr7~0三字節(jié)指令;PC(PC)+3;SP

(SP)+1,(SP)PC7~0;SP(SP)+1,(SP)PC15~8;在調(diào)用子程序之前,保護(hù)斷點(diǎn)地址上頁下頁回目錄⑵絕對(duì)調(diào)用ACALL

addr11雙字節(jié)指令;PC(PC)+2;SP

(SP)+1,(SP)

PC7~0;SP(SP)+1,(SP)PC15~8;在調(diào)用子程序之前,保護(hù)斷點(diǎn)地址A10A9A810001A7

~A0機(jī)器碼;PC10~0

A10~0

上頁下頁回目錄⑶子程序返回RET;PC15~8

((SP)),SP(SP)

-122H機(jī)器碼單字節(jié)指令⑷中斷返回RETI32H機(jī)器碼單字節(jié)指令上頁下頁回目錄;PC7~0((SP)),SP(SP)

-1;PC15~8

((SP)),SP(SP)

-1;PC7~0((SP)),SP(SP)

-1“0”

觸發(fā)器優(yōu)先級(jí)狀態(tài)4、空操作NOP;PC(PC)+1單字節(jié)指令32H機(jī)器碼上頁下頁回目錄

子程序調(diào)用及返回指令小結(jié)指令助記符

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論