指令系統(tǒng)與匯編語言程序設(shè)計(jì)ppt課件_第1頁
指令系統(tǒng)與匯編語言程序設(shè)計(jì)ppt課件_第2頁
指令系統(tǒng)與匯編語言程序設(shè)計(jì)ppt課件_第3頁
指令系統(tǒng)與匯編語言程序設(shè)計(jì)ppt課件_第4頁
指令系統(tǒng)與匯編語言程序設(shè)計(jì)ppt課件_第5頁
已閱讀5頁,還剩84頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、指令系統(tǒng)與匯編言語程序設(shè)計(jì)指令系統(tǒng)與匯編言語程序設(shè)計(jì)指令和助記符指令和助記符 指令本身是一組二進(jìn)制數(shù)代碼,為了便于記憶,將這些代碼器具有一定含義的指令助記符來表示,助記符普通采用英文單詞的縮寫 。例: 指令代碼 助記符 功能 740A MOV A,#0AH 將十六進(jìn)制數(shù)0AH放 入累加器A中 指令的字節(jié)數(shù)指令的字節(jié)數(shù) 一條指令由操作碼和操作數(shù)組成。操作碼指明執(zhí)行什么操作,例如數(shù)的傳送、加法、減法等。操作數(shù)那么表示這條指令所完成的操作對象,即是對誰進(jìn)展操作。操作數(shù)可以是一個(gè)數(shù),或者是一個(gè)數(shù)所在的內(nèi)存地址。指令由指令字節(jié)組成,不同的指令,指令的字節(jié)數(shù)不一樣。有單字節(jié)指令、雙字節(jié)指令和三字節(jié)指令。

2、尋址方式尋址方式1 存放器尋址2 直接尋址3 立刻尋址4 存放器間接尋址5 變址尋址6 相對尋址7 位尋址存放器尋址存放器尋址 以通用存放器的內(nèi)容為操作數(shù)的尋址方式。通用存放器為A、B 、DPTR以及R0R7 。 例: CLR A ;A0 INC DPTR ;DPTRDPTR+1 ADDR5,# 20H ;R5#20H+R5直接尋址直接尋址 指令中直接給出操作數(shù)地址的尋址方式,能進(jìn)展直接尋址的存儲(chǔ)空間有SFR存放器和內(nèi)部數(shù)據(jù)RAM。 例: MOVPSW,# 20H ;PSW#20H MOVA,30H ;A(30H)立刻尋址立刻尋址 指令中直接給出操作數(shù)的尋址方式。立刻操作數(shù)用前面加有#號的8位

3、或16位數(shù)來表示。 例: MOV A,# 60H ;A#60H M O VD P T R , # 3 4 0 0 H;DPTR#3400H MOV 30H,# 40H;30H單元#40H 存放器間接尋址存放器間接尋址 以存放器中內(nèi)容為地址,以該地址中內(nèi)容為操作數(shù)的尋址方式。間接尋址的存儲(chǔ)器空間包括內(nèi)部數(shù)據(jù)RAM和外部數(shù)據(jù)RAM。能用于存放器間接尋址的存放器有R0,R1和DPTR。在存放器稱號前面加一個(gè)符號來表示存放器間接尋址。 例: MOV A , R0 ;A (R0) MOVX DPTR,A ;外部RAM(DPTR)A 片內(nèi)片內(nèi)RAM30HR034HA30H34H MOV A ,R0 操作表

4、示圖操作表示圖片外片外RAM2000HDPTR30HA2000H30HMOVX DPTR,A 操作表示圖操作表示圖5 5 變址尋址變址尋址 變址尋址是以某個(gè)存放器的內(nèi)容為根本地址,然后在這個(gè)基址上加以地址的偏移量,才是真正的操作數(shù)地址。 例: MOVC A, A+DPTR ;AA+DPTR MOVC A, A+PC ;AA+PC MOVC A, A+DPTR 操作表示圖操作表示圖程序存儲(chǔ)器程序存儲(chǔ)器02F1HDPTRA0302H1EH11HA執(zhí)行前執(zhí)行前1EHA執(zhí)行后執(zhí)行后+相對尋址相對尋址 以當(dāng)前程序計(jì)數(shù)器PC的內(nèi)容為根底,加上指令給出的一字節(jié)補(bǔ)碼數(shù)偏移量構(gòu)成新的PC值的尋址方式。相對尋址用

5、于修正PC值,主要用于實(shí)現(xiàn)程序的分支轉(zhuǎn)移。 例: SJMP 08H ;PCPC+2+08H SJMP 08H 操作表示圖操作表示圖程序存儲(chǔ)器程序存儲(chǔ)器SJMP200AH08H2000H+208H執(zhí)行前執(zhí)行前PC2000H執(zhí)行后執(zhí)行后PC7 7 位尋址位尋址 位尋址只能對有位地址的單元作位尋址操作。位尋址其實(shí)是一種直接尋址方式,不過其地址是位地址。 例: SETB 10H ;將10H位置1 MOV 32H,C ;32H進(jìn)位位C CLR PSW.4 ;將RS1位清0指令分類闡明指令分類闡明1 算術(shù)運(yùn)算類指令2 邏輯運(yùn)算與循環(huán)類指令3 數(shù)據(jù)傳送類指令4 程序轉(zhuǎn)移類指令5 子程序調(diào)用及前往指令6 位操

6、作指令算術(shù)運(yùn)算類指令算術(shù)運(yùn)算類指令 主要用于主要用于8 8位無符號數(shù)運(yùn)算;也可用于帶符號數(shù)運(yùn)位無符號數(shù)運(yùn)算;也可用于帶符號數(shù)運(yùn)算。包括:加、減、乘、除、加算。包括:加、減、乘、除、加1 1、減、減1 1運(yùn)算指令,運(yùn)算指令,指令操作將影響指令操作將影響PSWPSW中有關(guān)形狀位。中有關(guān)形狀位。 1 加法指令A(yù)DD AADD A,#data #data ADD AADD A,direct direct ADD AADD A,Rn Rn ADD AADD A,Ri Ri 用途:將用途:將A A中的值與源操作數(shù)所指內(nèi)容相加,最終結(jié)果中的值與源操作數(shù)所指內(nèi)容相加,最終結(jié)果 存在存在A A中。中。1不帶進(jìn)位

7、位的加法指令4條例例1 1:ADD AADD A,#47H#47HADD AADD A,34H34HADD AADD A,R7R7ADD AADD A,R0R0例例2 2:MOV AMOV A,#0AEH ;-82#0AEH ;-82ADD AADD A,#81H ;-127#81H ;-127那么執(zhí)行完本條指令后,那么執(zhí)行完本條指令后,A A中的值為中的值為2FH2FHPSWPSW中形狀位中形狀位 C=1,AC=0,OV=1,P=1 C=1,AC=0,OV=1,P=1對無符號數(shù):結(jié)果為對無符號數(shù):結(jié)果為12FH;12FH;對帶符號數(shù):對帶符號數(shù):OV=1OV=1,有錯(cuò)。,有錯(cuò)。2帶進(jìn)位位的加

8、法指令4條ADDC AADDC A,RnRn; A ARnRnCYACYAADDC AADDC A,directdirect ; A A(direct )(direct )CYACYAADDC AADDC A,RiRi; A A(Ri)(Ri)CYACYAADDC AADDC A,#data#data; A AdatadataCYACYA用途:將用途:將A A中的值和其后面的值以及進(jìn)位位中的值和其后面的值以及進(jìn)位位C C中的值相加,中的值相加, 最終結(jié)果存在最終結(jié)果存在A A,常用于多字節(jié)數(shù)運(yùn)算中。,常用于多字節(jié)數(shù)運(yùn)算中。例: 先做先做67H+A0H=107H67H+A0H=107H,而,而1

9、07H107H顯然超越了顯然超越了0FFH0FFH,因此最終保管在因此最終保管在A A中的是中的是07H07H,而,而1 1那么到了那么到了PSWPSW中中的的CYCY位了。換言之,位了。換言之,CYCY就相當(dāng)于是就相當(dāng)于是100H100H。 然后再做然后再做10H + 30H + CY10H + 30H + CY,結(jié)果是,結(jié)果是41H41H,所以,所以最終的結(jié)果是最終的結(jié)果是4107H4107H。1067H+30A0H1067H+30A0H0001 0000 0110 0111 0011 0000 1010 0000 0100 0001 0000 0111 1067H1067H30A0H30

10、A0H4107H4107H又例: 先做先做67H+20H=87H67H+20H=87H,沒有超越,沒有超越0FFH0FFH,因此最終,因此最終保管在保管在A A中的是中的是87H87H,而,而PSWPSW中的中的CY=0CY=0。 然后再做然后再做10H + 30H + CY10H + 30H + CY,結(jié)果是,結(jié)果是40H40H,所以,所以最終的結(jié)果是最終的結(jié)果是4087H4087H。1067H+3020H1067H+3020H0001 0000 0110 0111 0011 0000 0010 0000 0100 0000 1000 0111 1067H1067H3020H3020H408

11、7H4087H3 加1指令5條INC AINC A;A+1AA+1A,影響,影響P P標(biāo)志標(biāo)志INC RnINC Rn;Rn+1RnRn+1RnINC directINC direct;(direct)+1(direct)(direct)+1(direct)INC RiINC Ri;(Rn)+1(Rn)(Rn)+1(Rn)INC DPTRINC DPTR;DPTR+1DPTRDPTR+1DPTR功能很簡單,就是將后面目的中的值加功能很簡單,就是將后面目的中的值加1 1。例:例:A=12HA=12H,R0=33HR0=33H,(21H)=32H(21H)=32H, (34H)=22H (34H)

12、=22H,DPTR=1234HDPTR=1234H。延續(xù)執(zhí)行下面的指令:延續(xù)執(zhí)行下面的指令: INC A INC A INC R0 INC R0 INC 21H INC 21H INC R0 INC R0 INC DPTR INC DPTR; A=13H; R0=34H;21H=33H;34H=23H; DPTR=1235HDA ADA A在進(jìn)展在進(jìn)展BCDBCD碼加法運(yùn)算時(shí),跟在碼加法運(yùn)算時(shí),跟在ADDADD和和ADDCADDC指令指令之后,用來對之后,用來對BCDBCD碼加法運(yùn)算結(jié)果進(jìn)展自動(dòng)修正。碼加法運(yùn)算結(jié)果進(jìn)展自動(dòng)修正。例:例:A=00010101A=00010101代表十進(jìn)制數(shù)代表十

13、進(jìn)制數(shù)1515 ADD A ADD A,#8#84 十進(jìn)制調(diào)整指令1條; A=1DH; A=1DH,按二進(jìn)制規(guī)律加,按二進(jìn)制規(guī)律加; A=23H; A=23H,按十進(jìn)制規(guī)律加,按十進(jìn)制規(guī)律加DA ADA A2 減法指令8條SUBB ASUBB A,RnRn ; A ARnRnCYACYASUBB ASUBB A,direct direct ; A A(direct )(direct )CYACYASUBB ASUBB A,RiRi ; A A(Ri)(Ri)CYACYASUBB ASUBB A,#data#data; A AdatadataCYACYA將將A A中的值減去源操作數(shù)所指內(nèi)容以及進(jìn)

14、位位中的值減去源操作數(shù)所指內(nèi)容以及進(jìn)位位C C中的中的值,最終結(jié)果存在值,最終結(jié)果存在A A中。中。闡明:沒有不帶借位的減法指令,假設(shè)需求做不帶位闡明:沒有不帶借位的減法指令,假設(shè)需求做不帶位的減法指令在做第一次相減時(shí),只需將的減法指令在做第一次相減時(shí),只需將CYCY清零即可。清零即可。1 帶借位的減法指令4條2 減1指令4條DEC ADEC A ;A-1A,A-1A,DEC RnDEC Rn;Rn-1RnRn-1RnDEC directDEC direct ;(direct)-1(direct)(direct)-1(direct)DEC RiDEC Ri;(Rn)-1(Rn)(Rn)-1(R

15、n) 與加與加1 1指令類似。指令類似。 3 乘法指令1條MUL AB MUL AB ;A ABBABBA此指令的功能是將此指令的功能是將A A和和B B中的兩個(gè)中的兩個(gè)8 8位無符號數(shù)相乘,位無符號數(shù)相乘,結(jié)果將為結(jié)果將為1616無符號數(shù)。其中高無符號數(shù)。其中高8 8位放在位放在B B中,低中,低8 8位放在位放在A A中。中。在乘積大于在乘積大于FFHFFH時(shí),時(shí),0V0V置置1 1,否那么,否那么OVOV為為0 0;而;而CYCY總是總是0 0。例:例: A=4EHA=4EH,B=5DHB=5DH,執(zhí)行執(zhí)行MUL ABMUL AB指令后,乘積是指令后,乘積是1C56H1C56H,所以在,

16、所以在B B中放的是中放的是1CH1CH,而,而A A中放的那么是中放的那么是56H56H。 4 除法指令1條DIV ABDIV AB;A AB B的商的商AA,余數(shù),余數(shù)BB此指令的功能是將此指令的功能是將A A中的中的8 8位無符號數(shù)除位無符號數(shù)除B B中的中的8 8位位無符號數(shù),商放在無符號數(shù),商放在A A中,余數(shù)放在中,余數(shù)放在B B中。中。假設(shè)在做除法前假設(shè)在做除法前B B中的值是中的值是00H00H,也就是除數(shù)為,也就是除數(shù)為0 0,那,那么么0V=10V=1。例:例:A=11HA=11H,B=04HB=04H,執(zhí)行執(zhí)行DIV ABDIV AB指令后,結(jié)果為:指令后,結(jié)果為:A=0

17、4HA=04H,B=1B=1。邏輯運(yùn)算與循環(huán)類指令邏輯運(yùn)算與循環(huán)類指令主要用于對主要用于對2 2個(gè)操作數(shù)按位進(jìn)展邏輯操作,結(jié)果送到個(gè)操作數(shù)按位進(jìn)展邏輯操作,結(jié)果送到A A或直接尋址單元?;蛑苯訉ぶ穯卧?。 主要操作主要操作 與、或、異或、移位、取反、清零等。與、或、異或、移位、取反、清零等。 對標(biāo)志位的影響對標(biāo)志位的影響 除了目的操作數(shù)為除了目的操作數(shù)為ACCACC的指令影響奇偶標(biāo)志的指令影響奇偶標(biāo)志P P外,外,普通不影響標(biāo)志位。普通不影響標(biāo)志位。1 1 邏輯或指令邏輯或指令6 6條條ORL A,Rn ;ARnAORL A,direct ;A(direct)AORL A,Ri ;A(Ri)AO

18、RL A,#data ;AdataAORL direct,A ;(direct)A(direct)ORL direct,#data ;(direct)data(direct)影響影響P P標(biāo)志標(biāo)志例:例:71H和和56H相或:相或:01110001 71H 01010110 56H 01110111 即即77H后兩條指令,假設(shè)直接地址為后兩條指令,假設(shè)直接地址為I/OI/O端口,那么為端口,那么為“讀讀改寫操作。改寫操作。2 邏輯與指令 6條ANL A,Rn ;ARnAANL A,direct ;A(direct)AANL A,Ri ;A(Ri)AANL A,#data ;AdataAANL

19、direct,A ;(direct)A(direct)ANL direct,#data ;(direct)data(direct)影響影響P P標(biāo)志標(biāo)志例:例:71H71H和和56H56H相與:相與:01110001 01110001 71H71H 01010110 01010110 56H56H 01010000 01010000 即即50H50H后兩條指令,假設(shè)直接地址為后兩條指令,假設(shè)直接地址為I/OI/O端口,那么為端口,那么為“讀讀改寫操作。改寫操作。例:例:71H71H和和56H56H相異或:相異或: 01110001 01110001 71H71H ) 01010110 ) 01

20、010110 56H56H 3 邏輯異或指令6條XRL A,Rn ;A RnAXRL A,direct ;A (direct)AXRL A,Ri ;A (Ri)AXRL A,#data ;A dataAXRL direct,A ;(direct) A(direct)XRL direct,#data ;(direct) data(direct)影響影響P標(biāo)志標(biāo)志00100111 00100111 即即27H27H后兩條指令,假設(shè)直接地址為后兩條指令,假設(shè)直接地址為I/OI/O端口,那么為端口,那么為“讀讀改寫操作。改寫操作。 4 取反與清0指令2條取反:取反:CPL A CPL A ;/AA/A

21、A例:假設(shè)例:假設(shè)A=5CHA=5CH, 執(zhí)行執(zhí)行CPL ACPL A 結(jié)果:結(jié)果:A=A3HA=A3H清清0 0:CLR ACLR A ;0A0A5 循環(huán)移位指令4條RL ARR ARLC ARRC AA.7 A.0A.7 A.0A.7 A.0CYCYA.7 A.0后兩條指令,影響后兩條指令,影響P P和和CYCY標(biāo)志。標(biāo)志。例:假設(shè)假設(shè)A=5CHA=5CH,CY=1CY=1,執(zhí)行,執(zhí)行RLC ARLC A后,后, 對對RLCRLC、RRCRRC指令,在指令,在CY=0CY=0時(shí)時(shí)RLCRLC相當(dāng)于乘以相當(dāng)于乘以2 2RRCRRC相當(dāng)于除以相當(dāng)于除以2 2結(jié)果:結(jié)果:A=B9HA=B9H,C

22、Y=0CY=0,P=1P=10101 11000101 11001 11011 10011011 10010 0綜合舉例:綜合舉例:ANL AANL A,#0FH#0FH ;屏蔽;屏蔽A A的高的高4 4位位SWAP ASWAP AANL P1ANL P1,#0FH#0FH ;清;清P1P1口高口高4 4位位ORL P1ORL P1,A A ;P1P1口高口高4 4位輸出位輸出A A的低的低4 4位;位; 把累加器把累加器A A中的低中的低4 4位形狀,經(jīng)過位形狀,經(jīng)過P1P1口的高口的高4 4位輸位輸出,出, P1 P1口的低口的低4 4位形狀不變。位形狀不變。數(shù)據(jù)傳送類指令數(shù)據(jù)傳送類指令

23、助記符助記符 闡明闡明 MOV MOV、MOVXMOVX、MOVC MOVC 傳送操作傳送操作 XCH XCH、XCHDXCHD、SWAP SWAP 交換操作交換操作 PUSH PUSH、POP POP 堆棧操作堆棧操作 源操作數(shù)尋址方式:源操作數(shù)尋址方式: 立刻尋址、直接尋址、存放器尋址、立刻尋址、直接尋址、存放器尋址、 存放器間接尋址、變址尋址。存放器間接尋址、變址尋址。 目的操作數(shù)尋址方式:目的操作數(shù)尋址方式: 直接尋址、存放器尋址、存放器間接尋址直接尋址、存放器尋址、存放器間接尋址 除了目的操作數(shù)為除了目的操作數(shù)為ACCACC的指令影響奇偶標(biāo)志的指令影響奇偶標(biāo)志P P外,外,普通不影普

24、通不影 響標(biāo)志位。響標(biāo)志位。直接地址直接地址direct累加器累加器A直接地址直接地址direct間接地址間接地址Ri存放器存放器Rn立刻數(shù)立刻數(shù)#data存放器存放器DPTR8051單片機(jī)片內(nèi)數(shù)據(jù)傳送圖單片機(jī)片內(nèi)數(shù)據(jù)傳送圖1 1 以累加器為目的操作數(shù)的指令以累加器為目的操作數(shù)的指令4 4條條 MOV AMOV A,Rn Rn MOV AMOV A,directdirectMOV AMOV A,RiRiMOV AMOV A,#data#data 這組指令功能將源操作數(shù)指定內(nèi)容送到這組指令功能將源操作數(shù)指定內(nèi)容送到A A中。中。 2 2 以存放器以存放器RnRn為目的操作數(shù)的指令為目的操作數(shù)的指

25、令 3 3條條 MOV Rn MOV Rn,A A MOV Rn MOV Rn,directdirect MOV Rn MOV Rn,#data#data 這組指令功能是把源操作數(shù)指定的內(nèi)容送入當(dāng)前任這組指令功能是把源操作數(shù)指定的內(nèi)容送入當(dāng)前任務(wù)存放務(wù)存放 器,源操作數(shù)不變。器,源操作數(shù)不變。 3 3 以直接地址為目的操作數(shù)的指令以直接地址為目的操作數(shù)的指令5 5條條MOV directMOV direct,A AMOV directMOV direct,RnRnMOV direct1MOV direct1,direct2direct2MOV directMOV direct,RiRiMOV

26、directMOV direct,#data#data 這組指令功能是把源操作數(shù)指定的內(nèi)容送入由直這組指令功能是把源操作數(shù)指定的內(nèi)容送入由直接地址指出的片內(nèi)存儲(chǔ)單元。接地址指出的片內(nèi)存儲(chǔ)單元。例:例: MOV 20HMOV 20H,A AMOV 20HMOV 20H,R1R1MOV 20HMOV 20H,30H30HMOV 20HMOV 20H,R1R1MOV 0A0HMOV 0A0H,#34H#34HMOV P2MOV P2,#34H#34H4 以間接地址為目的操作數(shù)的指令以間接地址為目的操作數(shù)的指令3條條MOV RiMOV Ri,A A MOV Ri MOV Ri,directdirect

27、MOV RiMOV Ri,#data#data 功能:把源操作數(shù)指定的內(nèi)容送入以功能:把源操作數(shù)指定的內(nèi)容送入以R0R0或或R1R1中內(nèi)容為中內(nèi)容為 地址的片內(nèi)存儲(chǔ)單元。地址的片內(nèi)存儲(chǔ)單元。例:例: MOV R0MOV R0,A AMOV R1MOV R1,20H20HMOV R0MOV R0,#34H#34H5 5 十六位數(shù)的傳送指令十六位數(shù)的傳送指令1 1條條MOV DPTRMOV DPTR,#data16#data1680518051是是8 8位機(jī),這是獨(dú)一的一條位機(jī),這是獨(dú)一的一條1616位立刻數(shù)傳送指令。位立刻數(shù)傳送指令。功能:將一個(gè)功能:將一個(gè)1616位的立刻數(shù)送入位的立刻數(shù)送入D

28、PTRDPTR中去。其中高中去。其中高8 8位位 送入送入DPHDPH,低,低8 8位送入位送入DPLDPL。 例:例:MOV DPTRMOV DPTR,#1234H#1234H執(zhí)行完了之后執(zhí)行完了之后DPHDPH中的值為中的值為12H12H,DPLDPL中的值為中的值為34H34H。假設(shè)我們分別向假設(shè)我們分別向DPHDPH,DPLDPL送數(shù),那么結(jié)果也一樣。送數(shù),那么結(jié)果也一樣。 如下面兩條指令:如下面兩條指令: MOV DPH MOV DPH,#35H#35H MOV DPL MOV DPL,#12H#12H。 相當(dāng)于執(zhí)行了相當(dāng)于執(zhí)行了 MOV DPTR MOV DPTR,#3512H#3

29、512H。6 6 累加器累加器A A與片外與片外RAMRAM之間的數(shù)據(jù)傳送類指令之間的數(shù)據(jù)傳送類指令(4(4條條) ) MOVX AMOVX A,DPTRDPTR MOVX DPTR MOVX DPTR,A A MOVX A MOVX A,RiRi MOVX Ri MOVX Ri,A A闡明:闡明: (1). (1).在在80518051中,與外部中,與外部RAMRAM存儲(chǔ)器打交道的只可以是累存儲(chǔ)器打交道的只可以是累加器加器A A 。一切需求送入外部。一切需求送入外部RAMRAM的數(shù)據(jù)必需求經(jīng)過的數(shù)據(jù)必需求經(jīng)過A A送去,送去,而一切要讀入的外部而一切要讀入的外部RAMRAM中的數(shù)據(jù)也必需經(jīng)過

30、中的數(shù)據(jù)也必需經(jīng)過A A讀入。讀入。 在此我們可以看出內(nèi)外部在此我們可以看出內(nèi)外部RAMRAM的區(qū)別了,內(nèi)部的區(qū)別了,內(nèi)部RAMRAM間可間可以直接進(jìn)展數(shù)據(jù)的傳送,而外部那么不行。以直接進(jìn)展數(shù)據(jù)的傳送,而外部那么不行。 比如,要將外部比如,要將外部RAMRAM中某一單元設(shè)為中某一單元設(shè)為0100H0100H單元的數(shù)單元的數(shù)據(jù)送入另一個(gè)單元設(shè)為據(jù)送入另一個(gè)單元設(shè)為0200H0200H單元,也必需先將單元,也必需先將0100H0100H單元中的內(nèi)容讀入單元中的內(nèi)容讀入A A,然后再送到,然后再送到0200H0200H單元中去。單元中去。 (2).要讀或?qū)懲獠縍AM,必需求知道RAM的地址,采用DP

31、TR時(shí),地址被直接放在DPTR中的。采用RiR0或R1時(shí),由于Ri只是8位的存放器,所以只提供低8位地址。高8位地址由P2口來提供。 (3).運(yùn)用時(shí)應(yīng)先將要讀或?qū)懙牡刂匪腿隓PTR或Ri中,然后再用讀寫命令。 例:將外部RAM中100H單元中的內(nèi)容送入外部RAM中200H單元中。MOV DPTR,#0100HMOVX A,DPTRMOV DPTR,#0200HMOVX DPTR,A7 讀程序存儲(chǔ)器指令讀程序存儲(chǔ)器指令2條條 MOVC A MOVC A,A+DPTRA+DPTR MOVC A MOVC A,A+PCA+PC 本組指令是將本組指令是將ROMROM中的數(shù)送入中的數(shù)送入A A中。本組指

32、令也被稱為中。本組指令也被稱為查表指查表指 令,常用此指令來查一個(gè)已做好在令,常用此指令來查一個(gè)已做好在ROMROM中的表格中的表格闡明:查找到的結(jié)果被放在闡明:查找到的結(jié)果被放在A A中,因此,本條指令執(zhí)行前中,因此,本條指令執(zhí)行前后,后,A A 中的值不一定一樣。中的值不一定一樣。例:有一個(gè)數(shù)在例:有一個(gè)數(shù)在R0R0中,要求用查表的方法確定它的平方值中,要求用查表的方法確定它的平方值此此 數(shù)的取值范圍是數(shù)的取值范圍是0-50-5MOV DPTRMOV DPTR,#100H #100H MOV AMOV A,R0 R0 MOVC AMOVC A,A+DPTR A+DPTR ORG 0100H

33、ORG 0100HDB 0,1,4,9,16,25DB 0,1,4,9,16,25 8 堆棧操作堆棧操作2條條PUSH directPUSH directPOP directPOP direct 第一條為壓入指令,將第一條為壓入指令,將directdirect中的內(nèi)容送入堆棧中,中的內(nèi)容送入堆棧中,第二條為第二條為 彈出指令,將堆棧中的內(nèi)容送回到彈出指令,將堆棧中的內(nèi)容送回到directdirect中。中。例:例: MOV SP MOV SP,#10H#10H MOV 40H MOV 40H,#50H#50H PUSH 40H PUSH 40H POP 30H POP 30H 執(zhí)行第一條執(zhí)行第

34、一條PUSH 40HPUSH 40H指令是這樣的:將指令是這樣的:將SPSP中的值加中的值加1 1,變?yōu)樽優(yōu)?1H11H,然后將,然后將40H40H中的值送到中的值送到11H11H單元中,因此執(zhí)行完單元中,因此執(zhí)行完本條指令后,內(nèi)存本條指令后,內(nèi)存11H11H單元的值是單元的值是50H50H,同樣,執(zhí)行,同樣,執(zhí)行POP POP 30H30H時(shí),是將時(shí),是將11H11H中的值送入到中的值送入到30H30H單元中,即執(zhí)行完本條單元中,即執(zhí)行完本條指令后,指令后,30H30H單元中的值變?yōu)閱卧械闹底優(yōu)?0H50H。 9 9 交換指令交換指令5 5條條XCH AXCH A,RnRnXCH AXCH

35、 A, direct directXCH AXCH A, Ri RiXCHD AXCHD A, Ri RiSWAP ASWAP A例:例: 知知A A中的內(nèi)容為中的內(nèi)容為34H34HMOV R6MOV R6, #29H #29HXCH AXCH A, R6 R6SWAP ASWAP AXCH AXCH A, R6 R6 XCHD A XCHD A, R0 R0程序轉(zhuǎn)移類指令程序轉(zhuǎn)移類指令此類指令普通不影響此類指令普通不影響PSWPSW。包括以下類型:包括以下類型:無條件轉(zhuǎn)移和條件轉(zhuǎn)移無條件轉(zhuǎn)移和條件轉(zhuǎn)移相對轉(zhuǎn)移和絕對轉(zhuǎn)移相對轉(zhuǎn)移和絕對轉(zhuǎn)移長轉(zhuǎn)移和短轉(zhuǎn)移長轉(zhuǎn)移和短轉(zhuǎn)移調(diào)用與前往指令調(diào)用與前往指令

36、 無條件轉(zhuǎn)移類指令4條 短轉(zhuǎn)移類指令:短轉(zhuǎn)移類指令:AJMP addr11AJMP addr11 長轉(zhuǎn)移類指令:長轉(zhuǎn)移類指令:LJMP addr16LJMP addr16 相對轉(zhuǎn)移指令:相對轉(zhuǎn)移指令:SJMP relSJMP rel 間接轉(zhuǎn)移指令:間接轉(zhuǎn)移指令:JMP A+DPTRJMP A+DPTR1 1上面的前三條指令,統(tǒng)統(tǒng)了解成:上面的前三條指令,統(tǒng)統(tǒng)了解成:PCPC值改動(dòng),即值改動(dòng),即跳轉(zhuǎn)到一個(gè)標(biāo)號處。跳轉(zhuǎn)到一個(gè)標(biāo)號處。 那么他們的區(qū)別何在呢?那么他們的區(qū)別何在呢?跳轉(zhuǎn)的范圍不同。跳轉(zhuǎn)的范圍不同。 短轉(zhuǎn)移類指令:短轉(zhuǎn)移類指令:AJMP addr11AJMP addr11 長轉(zhuǎn)移類指令:

37、長轉(zhuǎn)移類指令:LJMP addr16LJMP addr16 相對轉(zhuǎn)移指令:相對轉(zhuǎn)移指令:SJMP relSJMP rel轉(zhuǎn)移范圍:轉(zhuǎn)移范圍:2KB2KB64KB64KB-128+127-128+127指令構(gòu)成不同。指令構(gòu)成不同。 AJMP AJMP、LJMPLJMP后跟的是絕對地址,后跟的是絕對地址, 而而SJMPSJMP后跟的是相對地址。后跟的是相對地址。 指令長度不同指令長度不同 原那么上,一切用原那么上,一切用SJMPSJMP或或AJMPAJMP的地方都可以用的地方都可以用 LJMP LJMP來替代。來替代。散轉(zhuǎn)指令:散轉(zhuǎn)指令:JMP A+DPTRJMP A+DPTR 這條指令的用途也是

38、跳轉(zhuǎn),轉(zhuǎn)到什么地方去呢?這條指令的用途也是跳轉(zhuǎn),轉(zhuǎn)到什么地方去呢?這可不能由標(biāo)號簡單地決議了。這可不能由標(biāo)號簡單地決議了。 轉(zhuǎn)移地址由轉(zhuǎn)移地址由A+DPTRA+DPTR構(gòu)成,并直接送入構(gòu)成,并直接送入PCPC。指令對指令對A A、DPTRDPTR和標(biāo)志位均無影響。和標(biāo)志位均無影響。 本指令可替代眾多的判別跳轉(zhuǎn)指令,又稱為散本指令可替代眾多的判別跳轉(zhuǎn)指令,又稱為散轉(zhuǎn)指令,多用于多分支程序構(gòu)造中。轉(zhuǎn)指令,多用于多分支程序構(gòu)造中。2 2第四條指令與前三條指令相比有所不同第四條指令與前三條指令相比有所不同 條件轉(zhuǎn)移指令8條條件轉(zhuǎn)移指令是指在滿足一定條件時(shí)進(jìn)展相對轉(zhuǎn)條件轉(zhuǎn)移指令是指在滿足一定條件時(shí)進(jìn)展相

39、對轉(zhuǎn)移,否那么程序繼續(xù)執(zhí)行本指令的下一條指令。移,否那么程序繼續(xù)執(zhí)行本指令的下一條指令。一、判一、判A內(nèi)容能否為內(nèi)容能否為0轉(zhuǎn)移指令轉(zhuǎn)移指令2條條 JZ rel JZ rel ;假設(shè);假設(shè)A=0A=0,那么轉(zhuǎn)移,否那么順序執(zhí),那么轉(zhuǎn)移,否那么順序執(zhí)行。行。 JNZ rel JNZ rel ;假設(shè);假設(shè)A0A0,就轉(zhuǎn)移。,就轉(zhuǎn)移。轉(zhuǎn)移到相對于當(dāng)前轉(zhuǎn)移到相對于當(dāng)前PCPC值的值的8 8位移量的地址去。即:位移量的地址去。即: 新的新的PCPC值值= =當(dāng)前當(dāng)前PC+PC+偏移量偏移量relrel在編寫匯編言語源程序時(shí),可以直接寫成:在編寫匯編言語源程序時(shí),可以直接寫成: JZ JZ 標(biāo)號標(biāo)號 ;即

40、轉(zhuǎn)移到標(biāo)號處。;即轉(zhuǎn)移到標(biāo)號處。二、比較不等轉(zhuǎn)移指令4條CJNE ACJNE A,#data#data,rel rel CJNE ACJNE A,directdirect,relrelCJNE RnCJNE Rn,#data#data,relrelCJNE RiCJNE Ri,#data#data,relrel此類指令的功能是將兩個(gè)操作數(shù)比較,假設(shè)此類指令的功能是將兩個(gè)操作數(shù)比較,假設(shè)兩者相等,就順序執(zhí)行,假設(shè)不相等,就轉(zhuǎn)兩者相等,就順序執(zhí)行,假設(shè)不相等,就轉(zhuǎn)移。移。同樣地,運(yùn)用時(shí),可以將同樣地,運(yùn)用時(shí),可以將relrel了解成標(biāo)號,即:了解成標(biāo)號,即:CJNE ACJNE A,#data#d

41、ata,標(biāo)號,標(biāo)號CJNE ACJNE A,directdirect,標(biāo)號,標(biāo)號CJNE RnCJNE Rn,#data#data,標(biāo)號,標(biāo)號CJNE RiCJNE Ri,#data#data,標(biāo)號,標(biāo)號利用這些指令,可以判別兩數(shù)能否相等。利用這些指令,可以判別兩數(shù)能否相等。但有時(shí)還想得知兩數(shù)比較之后哪個(gè)大,哪個(gè)小,但有時(shí)還想得知兩數(shù)比較之后哪個(gè)大,哪個(gè)小,本條指令也具有這樣的功能:本條指令也具有這樣的功能:假設(shè)兩數(shù)不相等,那么假設(shè)兩數(shù)不相等,那么CPUCPU還會(huì)用還會(huì)用CYCY進(jìn)位位進(jìn)位位來反映哪個(gè)數(shù)大,哪個(gè)數(shù)小。來反映哪個(gè)數(shù)大,哪個(gè)數(shù)小。假設(shè)前面的數(shù)大,那么假設(shè)前面的數(shù)大,那么CY=0CY

42、=0,否那么,否那么CY=1CY=1。因此在程序轉(zhuǎn)移后再次利用因此在程序轉(zhuǎn)移后再次利用CYCY就可判別出哪個(gè)就可判別出哪個(gè)數(shù)大,哪個(gè)數(shù)小了。數(shù)大,哪個(gè)數(shù)小了。三、減三、減1 1不為不為0 0轉(zhuǎn)移指令轉(zhuǎn)移指令2 2條條DJNZ RnDJNZ Rn,relrelDJNZ directDJNZ direct,relrelDJNZDJNZ指令的執(zhí)行過程是這樣的指令的執(zhí)行過程是這樣的: :它將第一個(gè)參數(shù)中的值減它將第一個(gè)參數(shù)中的值減1 1,然后看這個(gè)值能否等于,然后看這個(gè)值能否等于0 0,假設(shè)等于,假設(shè)等于0 0,就往下執(zhí)行,假設(shè)不等于,就往下執(zhí)行,假設(shè)不等于0 0,就轉(zhuǎn)移,就轉(zhuǎn)移到第二個(gè)參數(shù)所指定的地

43、方去。到第二個(gè)參數(shù)所指定的地方去。例:例: LOOP LOOP: DJNZ 10H DJNZ 10H,LOOPLOOP 例:例: MOV 23H,#0AH MOV 23H,#0AH CLR A CLR ALOOP: ADD A,23HLOOP: ADD A,23H DJNZ 23H,LOOP DJNZ 23H,LOOP SJMP $ SJMP $上述程序段的執(zhí)行過程是:上述程序段的執(zhí)行過程是:將將23H23H單元中的數(shù)延續(xù)相加,存至單元中的數(shù)延續(xù)相加,存至A A中,每加中,每加一次,一次, 23H 23H單元中的數(shù)值減單元中的數(shù)值減1 1,直至減到,直至減到0 0,共加共加23H23H次。次。

44、 子程序調(diào)用與前往指令一、調(diào)用指令一、調(diào)用指令2條條 LCALL addr16 LCALL addr16 ;長調(diào)用指令;長調(diào)用指令(3(3字節(jié)字節(jié)) ) ACALL addr11 ACALL addr11 ;短調(diào)用指令;短調(diào)用指令(2(2字節(jié)字節(jié)) )上面兩條指令都是在主程序中調(diào)用子程序,兩者的區(qū)別上面兩條指令都是在主程序中調(diào)用子程序,兩者的區(qū)別: :對短調(diào)用指令,被調(diào)用子程序入口地址必需與調(diào)用指令下對短調(diào)用指令,被調(diào)用子程序入口地址必需與調(diào)用指令下一條指令的第一字節(jié)在一樣的一條指令的第一字節(jié)在一樣的2KB2KB存儲(chǔ)區(qū)之內(nèi)。運(yùn)用時(shí)可存儲(chǔ)區(qū)之內(nèi)。運(yùn)用時(shí)可以用標(biāo)號表示子程序首地址以用標(biāo)號表示子程序

45、首地址二、前往指令 2條子程序執(zhí)行完后必需回到主程序,如何子程序執(zhí)行完后必需回到主程序,如何前往呢?只需執(zhí)行一條前往指令就可以了。前往呢?只需執(zhí)行一條前往指令就可以了。RETRET;子程序前往指令;子程序前往指令RETIRETI;中斷子程序前往指令;中斷子程序前往指令兩者不能互換運(yùn)用。兩者不能互換運(yùn)用。空操作指令空操作指令1 1條條 NOP空操作,就是什么事也不干,停一個(gè)周期,普通空操作,就是什么事也不干,停一個(gè)周期,普通用作短時(shí)間的延時(shí)。用作短時(shí)間的延時(shí)。位操作指令位操作指令80518051單片機(jī)的硬件構(gòu)造中,有一個(gè)位處置器又單片機(jī)的硬件構(gòu)造中,有一個(gè)位處置器又稱布爾處置器,它有一套位變量處

46、置的指令集,包稱布爾處置器,它有一套位變量處置的指令集,包括位變量傳送、邏輯運(yùn)算、控制程序轉(zhuǎn)移等。括位變量傳送、邏輯運(yùn)算、控制程序轉(zhuǎn)移等。在在80518051中,有一部份中,有一部份RAMRAM和一部份和一部份SFRSFR是具有位尋是具有位尋址功能的。址功能的。位操作區(qū):內(nèi)部位操作區(qū):內(nèi)部RAMRAM的的20H-2FH20H-2FH這這1616個(gè)字節(jié)單元,個(gè)字節(jié)單元,即即128128個(gè)位單元個(gè)位單元( (位地址空間位位地址空間位00007FH)7FH);可以位尋址的特殊功能存放器??梢晕粚ぶ返奶厥夤δ艽娣牌?。 以以PSW中位中位4 RS1 為例。為例。直接直接(位位)地址方式:如地址方式:如

47、D4H;點(diǎn)操作符號方式:如點(diǎn)操作符號方式:如 PSW.4,D0H.4;位稱號方式:如位稱號方式:如 RS1;用戶定義名方式:如用偽指令用戶定義名方式:如用偽指令 bitSUB.REG bit RS1定義后,可用定義后,可用SUB.REG替代替代RS1。位地址表達(dá)方式位地址表達(dá)方式 位傳送指令位傳送指令2 2條條 MOV CMOV C,bitbit;bit Cbit CMOV bitMOV bit,C C;C bitC bit這組指令的功能是實(shí)現(xiàn)位累加器這組指令的功能是實(shí)現(xiàn)位累加器CYCY和其它和其它位地址之間的數(shù)據(jù)傳送。位地址之間的數(shù)據(jù)傳送。例:例:MOV CMOV C,P1.0P1.0;將;

48、將P1.0P1.0的形狀送給的形狀送給C C。 MOV P1.0 MOV P1.0,C C ;將;將C C中的形狀送到中的形狀送到P1.0 P1.0 ;引腳上去。;引腳上去。位清位清0 0和置位和置位4 4條條 位清位清0 0指令指令 CLR C CLR C ;使;使CY=0CY=0 CLR bit CLR bit ;使指令的位地址等于;使指令的位地址等于0 0。 例:例:CLR P1.0 CLR P1.0 ;即使;即使P1.0P1.0變?yōu)樽優(yōu)? 0 位置位置1 1指令指令 SETB C SETB C ;使;使CY=1CY=1 SETB bit SETB bit ;使指定的位地址等于;使指定的

49、位地址等于1 1。 例:例:SETB P1.0 SETB P1.0 ;使;使P.0P.0變?yōu)樽優(yōu)? 1 位邏輯運(yùn)算指令位邏輯運(yùn)算指令 6條條 位與指令位與指令 ANL CANL C,bit bit ;CyCy與指定位的值相與,結(jié)果送與指定位的值相與,結(jié)果送CyCyANL CANL C,/bit /bit ;先將指定的位地址中的值取出;先將指定的位地址中的值取出后取反,再和后取反,再和CyCy相與,結(jié)果送回相與,結(jié)果送回CyCy。但留意。但留意: :指指定的位地址中的值本身并不發(fā)生變化。定的位地址中的值本身并不發(fā)生變化。例:例:ANL CANL C,/P1.0/P1.0位取反指令位取反指令 CP

50、L C CPL C ;使;使CyCy值取反。值取反。CPL bit CPL bit ;使指定的位的值取反。;使指定的位的值取反。例:例:CPL P1.0CPL P1.0位或指令位或指令 ORL CORL C,bitbitORL CORL C,/bit/bit 位條件轉(zhuǎn)移指令位條件轉(zhuǎn)移指令5 5條條 判判CyCy轉(zhuǎn)移指令轉(zhuǎn)移指令 JC relJC relJNC relJNC rel 第一條指令的功能是假設(shè)第一條指令的功能是假設(shè)Cy=1Cy=1就轉(zhuǎn)移,否那就轉(zhuǎn)移,否那么就順序執(zhí)行。么就順序執(zhí)行。 第二條指令那么和第一條指令相反,即假設(shè)第二條指令那么和第一條指令相反,即假設(shè)Cy=0Cy=0就轉(zhuǎn)移,否

51、那么就順序執(zhí)行。就轉(zhuǎn)移,否那么就順序執(zhí)行。 判位變量轉(zhuǎn)移指令判位變量轉(zhuǎn)移指令 JB bitJB bit,relrelJNB bitJNB bit,rel rel JBC bitJBC bit,relrel第一條指令第一條指令: :假設(shè)指定的假設(shè)指定的bitbit=1=1,那么轉(zhuǎn)移,那么轉(zhuǎn)移,否那么順序執(zhí)行,第二條指令功能相反。否那么順序執(zhí)行,第二條指令功能相反。第三條指令是假設(shè)指定的第三條指令是假設(shè)指定的bitbit=1=1,那么轉(zhuǎn)移,那么轉(zhuǎn)移,并把該位清并把該位清0 0,否那么順序執(zhí)行。,否那么順序執(zhí)行。匯編言語格式與偽指令匯編言語格式與偽指令匯編言語源程序由以下兩種指令構(gòu)成匯編言語源程序由

52、以下兩種指令構(gòu)成匯編語句指令語句匯編語句指令語句偽指令指示性語句偽指令指示性語句匯編語句的格式:匯編語句的格式: 標(biāo)號:標(biāo)號:操作碼操作碼操作數(shù)操作數(shù);注釋;注釋3. 3. 偽指令:控制匯編用的特殊指令,這些指偽指令:控制匯編用的特殊指令,這些指令不屬于指令系統(tǒng),不產(chǎn)活力器代碼。令不屬于指令系統(tǒng),不產(chǎn)活力器代碼。 常用的偽指令v ORG ORG 定位目的程序的起始地址。定位目的程序的起始地址。v 格式:格式:ORG ORG 表達(dá)式表達(dá)式v 表達(dá)式必需為表達(dá)式必需為1616位地位地址值。址值。v如:如:ORG 0000HORG 0000Hv END END 匯編言語程序終了偽指令。匯編言語程序終

53、了偽指令。v 一定放在程序末尾!一定放在程序末尾!v EQU EQU 賦值偽指令。賦值偽指令。v v 格式:格式: 字符稱號字符稱號 EQU EQU 數(shù)值或匯編符數(shù)值或匯編符號號v v例:例:AAAAEQUEQU30H30HvK1K1EQUEQU40H40HvMOV AMOV A,AAAA; (30H (30HAAvMOV AMOV A,K1K1;40H40HAA常用的偽指令v DBDBv 從指定單元開場定義存儲(chǔ)假設(shè)干個(gè)字節(jié)從指定單元開場定義存儲(chǔ)假設(shè)干個(gè)字節(jié)的數(shù)據(jù)或的數(shù)據(jù)或ASCIIASCII碼字符,常用于定義數(shù)據(jù)常數(shù)表。碼字符,常用于定義數(shù)據(jù)常數(shù)表。v格式:格式:DB DB 字節(jié)常數(shù)字節(jié)常數(shù)

54、 或或 ASCII ASCII字符字符v 例例: :ORGORG 1000H 1000HvDBDB34H34H,0DEH0DEH,A A,B BvDBDB0AH0AH,0BH0BH,2020常用的偽指令常用的偽指令vDWDWv 從指定單元開場定義存儲(chǔ)假設(shè)干個(gè)字的數(shù)從指定單元開場定義存儲(chǔ)假設(shè)干個(gè)字的數(shù)據(jù)據(jù)v 或或ASCIIASCII碼字符。碼字符。v 格式:格式:DWDW 字常數(shù)或字常數(shù)或ASCIIASCII字符字符v v 例:例: ORG 2000HORG 2000HvDWDW1234H1234H,B BvDWDW0AH0AH,2020常用的偽指令v BIT BIT 位地址符號指令。位地址符號

55、指令。v 把位地址賦于規(guī)定的字符稱號。把位地址賦于規(guī)定的字符稱號。v 格式:字符稱號格式:字符稱號BITBIT位地址位地址v 例:例:ABCABCBITBITP1.1P1.1vBITBITP3.2P3.2運(yùn)用程序設(shè)計(jì)運(yùn)用程序設(shè)計(jì) 在進(jìn)展運(yùn)用匯編程序設(shè)計(jì)時(shí),首先要確定算法,算法的優(yōu)劣很大程度上決議了程序的效率,另外還要盡能夠畫出程序框圖,以便于分析程序流程。定點(diǎn)數(shù)運(yùn)算子程序定點(diǎn)數(shù)運(yùn)算子程序定點(diǎn)數(shù):小數(shù)點(diǎn)固定的數(shù)。 可以把小數(shù)點(diǎn)固定在數(shù)值的最高位之前, 對于有符號的數(shù),小數(shù)點(diǎn)應(yīng)在符號位與最高數(shù)值位之間,即: 符號位 數(shù)值部分 也可以把小數(shù)點(diǎn)固定在最低數(shù)值位后面,即: 符號位 數(shù)值部分定點(diǎn)數(shù)表示方式

56、定點(diǎn)數(shù)表示方式(1)原碼表示法 符號位為0表示正數(shù),符號位為1表示負(fù)數(shù) 如:二進(jìn)制數(shù)00110100表示十進(jìn)制數(shù)+52二進(jìn)制數(shù)10110100表示十進(jìn)制數(shù)-52 (2)補(bǔ)碼表示法正數(shù)的補(bǔ)碼表示與原碼一樣, 即最高位為0, 其他位為數(shù)值位。負(fù)數(shù)用補(bǔ)碼表示時(shí), 最高位為1, 數(shù)值位要按位取反后再在最低位加1,才是該負(fù)數(shù)的數(shù)值。 例如:十進(jìn)制數(shù)+51的二進(jìn)制補(bǔ)碼為00110011十進(jìn)制數(shù) -51的二進(jìn)制補(bǔ)碼為11001101 例:例: 雙字節(jié)數(shù)取補(bǔ)子程序。雙字節(jié)數(shù)取補(bǔ)子程序。 將將(R4R5)(R4R5)中的雙字節(jié)數(shù)取補(bǔ),結(jié)果送中的雙字節(jié)數(shù)取補(bǔ),結(jié)果送R4R5R4R5。 CMPTCMPT:MOV A

57、MOV A,R5R5 CPL A CPL A ADD A ADD A,#1#1 MOV R5 MOV R5,A A MOV A MOV A,R4R4 CPL A CPL A ADDC A ADDC A,#0#0 MOV R4 MOV R4,A A RET RET例:例: 雙字節(jié)原碼數(shù)左移一位子程序。雙字節(jié)原碼數(shù)左移一位子程序。 將將(R2R3)(R2R3)左移一位,結(jié)果送左移一位,結(jié)果送R2R3R2R3,不改動(dòng),不改動(dòng)符號位,符號位, 不思索溢出。不思索溢出。 DRL1DRL1:MOV AMOV A,R3R3CLR CCLR CRLC ARLC AMOV R3MOV R3,A AMOV AMO

58、V A,R2R2RLC ARLC AMOV ACC.7MOV ACC.7,C C ;恢復(fù)符號位;恢復(fù)符號位MOV R2MOV R2,A ARETRET例:例: 雙字節(jié)原碼右移一位子程序。雙字節(jié)原碼右移一位子程序。 將將(R2R3)(R2R3)右移一位,結(jié)果送右移一位,結(jié)果送R2R3R2R3,不改動(dòng)符,不改動(dòng)符號位。號位。 DRR1DRR1: MOV AMOV A,R2R2MOV CMOV C,ACC.7 ACC.7 ;維護(hù)符號位;維護(hù)符號位CLR ACC.7 CLR ACC.7 ;移入;移入0 0RRC ARRC AMOV R2MOV R2,A AMOV AMOV A,R3R3RRC ARRC

59、 AMOV R3MOV R3,A ARETRET例:例: 雙字節(jié)補(bǔ)碼右移一位子程序。雙字節(jié)補(bǔ)碼右移一位子程序。 將將(R2R3)(R2R3)右移一位,結(jié)果送右移一位,結(jié)果送R2R3R2R3,不改動(dòng)符,不改動(dòng)符號位。號位。CRR1CRR1: MOV AMOV A,R2R2MOV CMOV C,ACC.7 ACC.7 ;維護(hù)符號位;維護(hù)符號位RRC A RRC A ;移入符;移入符號位號位MOV R2 MOV R2 ,A AMOV AMOV A,R3R3RRC ARRC AMOV R3MOV R3,A ARETRET例:雙字節(jié)無符號數(shù)加法子程序。例:雙字節(jié)無符號數(shù)加法子程序。 將將(R2R3)(R2R3)和和(R6R7)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論