版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第3章51系列單片機(jī)的指令系統(tǒng)和程序設(shè)計(jì)方法(1)理解指令的尋址方式及相應(yīng)的尋址空間。
(2)理解51系列單片機(jī)的111條基本指令的含義,熟練掌握其應(yīng)用方法。
(3)了解機(jī)器語言、匯編語言和高級(jí)語言的特點(diǎn)、匯編語言程序設(shè)計(jì)步驟。
(4)掌握匯編語言的基本格式,熟練掌握匯編語言的程序設(shè)計(jì)思想和設(shè)計(jì)方法。
(5)理解子程序的特點(diǎn),掌握子程序的設(shè)計(jì)方法和設(shè)計(jì)中應(yīng)該注意的問題。
3.1指令系統(tǒng)概述
3.2尋址方式
3.3數(shù)據(jù)傳送類指令
5.16位數(shù)據(jù)的傳遞指令(1條)
3.4算術(shù)運(yùn)算類指令第3章51系列單片機(jī)的指令系統(tǒng)和程序設(shè)計(jì)方法(1)理解指第3章51系列單片機(jī)的指令系統(tǒng)和程序設(shè)計(jì)方法3.5邏輯運(yùn)算類指令
3.6位操作類指令
3.7控制轉(zhuǎn)移類指令
3.8匯編語言程序設(shè)計(jì)第3章51系列單片機(jī)的指令系統(tǒng)和程序設(shè)計(jì)方法3.5邏輯運(yùn)3.1指令系統(tǒng)概述3.1.1指令分類
3.1.2指令格式
3.1.3指令中常用縮寫符號(hào)的意義3.1指令系統(tǒng)概述3.1.1指令分類
3.1.2指令格3.1.1指令分類1.按指令功能可分為五類
2.按指令執(zhí)行所需要的時(shí)間可分為三類
3.按指令所占的字節(jié)數(shù)可分為三類3.1.1指令分類1.按指令功能可分為五類
2.按指令執(zhí)行1.按指令功能可分為五類1)數(shù)據(jù)傳送類指令(29條):內(nèi)部8位數(shù)據(jù)傳送指令15條,內(nèi)部16位數(shù)據(jù)傳送指令1條,外部數(shù)據(jù)傳送指令4條,交換、查表和堆棧操作指令9條。
2)算術(shù)傳送類指令(24條):加法指令14條(包括BCD碼調(diào)整指令1條),減法指令8條,乘/除法指令各1條。
3)邏輯運(yùn)算類指令(24條):邏輯運(yùn)算指令20條,循環(huán)移位指令4條。
4)位操作指令(12條):位傳送指令2條,位置位、位清“0”和位取反指令6條,位運(yùn)算指令4條。
5)控制轉(zhuǎn)移類指令(22條):無條件轉(zhuǎn)移指令4條,條件轉(zhuǎn)移指令8條,調(diào)用和返回指令5條,位測(cè)試轉(zhuǎn)移指令3條,判別CY標(biāo)志轉(zhuǎn)移指令2條。1.按指令功能可分為五類1)數(shù)據(jù)傳送類指令(29條):內(nèi)部82.按指令執(zhí)行所需要的時(shí)間可分為三類1)單周期指令(64條)。
2)雙周期指令(45條)。
3)四周期指令(2條)。2.按指令執(zhí)行所需要的時(shí)間可分為三類1)單周期指令(64條)3.按指令所占的字節(jié)數(shù)可分為三類1)單字節(jié)指令(49條)。
2)雙字節(jié)指令(46條)。
3)三字節(jié)指令(16條)。3.按指令所占的字節(jié)數(shù)可分為三類1)單字節(jié)指令(49條)。
3.1.2指令格式1.指令格式介紹
2.指令中數(shù)據(jù)的表示3.1.2指令格式1.指令格式介紹
2.指令中數(shù)據(jù)的表示1.指令格式介紹1)匯編語言語句由標(biāo)號(hào)、操作碼、操作數(shù)和注釋四部分組成。
2)標(biāo)號(hào)位于語句的開始,由1~8個(gè)ASCII字符組成,第一個(gè)字符必須是字母。
3)操作碼是用英文縮寫的指令功能助記符。
4)操作數(shù)在操作碼之后,兩者用空格分開。
5)注釋在語句的最后,以分號(hào)“;”開始,是說明性的文字,與語句的具體功能無關(guān),但是能增加程序的可閱讀性,便于程序的調(diào)試與交流。1.指令格式介紹1)匯編語言語句由標(biāo)號(hào)、操作碼、操作數(shù)和注釋2.指令中數(shù)據(jù)的表示1)十進(jìn)制數(shù)以D結(jié)尾,也可以省略,如55D或55。
2)十六進(jìn)制數(shù)以H結(jié)尾,如55H。
3)二進(jìn)制數(shù)以B結(jié)尾,如00110011B。
4)八進(jìn)制數(shù)以O(shè)或Q結(jié)尾,如55O或55Q。
5)字符串用“”括起來,如′M′表示字符M的ASCII碼。2.指令中數(shù)據(jù)的表示1)十進(jìn)制數(shù)以D結(jié)尾,也可以省略,如553.1.3指令中常用縮寫符號(hào)的意義1)#data:8位立即數(shù)。
2)#data16:16位立即數(shù)。
3)Rn:工作寄存器,R0~R7,n=0~7。
4)Ri:工作寄存器,i=0或1。
5)@:間接地址符號(hào)。
6)direct:8位直接地址,可以是特殊功能寄存器(SFR)的地址或片內(nèi)RAM單元地址。
7)addr11:11位目的地址。
8)addr16:16位目的地址。
9)rel:有符號(hào)的8位偏移地址,主要用于所有的條件轉(zhuǎn)移指令和SJMP指令。
10)bit:位地址。
11)/:位操作數(shù)的前綴,表示對(duì)該位操作數(shù)取反,如/bit。3.1.3指令中常用縮寫符號(hào)的意義1)#data:8位立即3.1.3指令中常用縮寫符號(hào)的意義12):當(dāng)前指令存放的地址。
13)(X):表示由X所指定的某寄存器或某單元中的內(nèi)容。
14)((X)):表示由X間接尋址單元中的內(nèi)容。
15)B:通用寄存器,常用于乘法MUL和除法DIV的指令。
16)C:進(jìn)位標(biāo)志位或者布爾處理器中的累加器。
17)←:表示指令的操作結(jié)果是將箭頭右邊的內(nèi)容傳送到左邊。3.1.3指令中常用縮寫符號(hào)的意義12):當(dāng)前指令存放的地3.2尋址方式3.2.1立即尋址
3.2.2直接尋址
3.2.3寄存器尋址
3.2.4寄存器間接尋址
3.2.5變址尋址
3.2.6相對(duì)尋址
3.2.7位尋址3.2尋址方式3.2.1立即尋址
3.2.2直接尋址
3.2.1立即尋址立即尋址是指指令中直接給出操作數(shù)的尋址方式。立即數(shù)用前面加有#號(hào)的8位或16位數(shù)來表示。立即數(shù)是指令代碼的一部分,只能作源操作數(shù)。這種尋址方式主要用于對(duì)特殊功能寄存器和指定的存儲(chǔ)單元賦初值。3.2.1立即尋址立即尋址是指指令中直接給出操作數(shù)的尋址方3.2.2直接尋址1)特殊功能寄存器(SFR):直接尋址是唯一的訪問形式。
2)片內(nèi)RAM低128B單元(地址范圍00H~7FH)。
3)221個(gè)位地址空間。3.2.2直接尋址1)特殊功能寄存器(SFR):直接尋址3.2.3寄存器尋址寄存器尋址是指操作數(shù)存放于寄存器中(Rn、A、B、DPTR、CY)的尋址方式。例如:MOV
A,R7;(A)←(R7)其功能是把寄存器R7內(nèi)的操作數(shù)傳送到累加器A中。由于操作數(shù)在R7中,因此在指令中指定了R7,就能從中取得操作數(shù)。3.2.3寄存器尋址寄存器尋址是指操作數(shù)存放于寄存器中(R3.2.4寄存器間接尋址圖3-1寄存器間接尋址示意圖3.2.4寄存器間接尋址圖3-1寄存器間接尋址示意圖3.2.5變址尋址圖3-2變址尋址示意圖3.2.5變址尋址圖3-2變址尋址示意圖3.2.6相對(duì)尋址1)當(dāng)前PC值是指相對(duì)轉(zhuǎn)移指令所在地址(一般稱為源地址)加上轉(zhuǎn)移指令字節(jié)數(shù),即當(dāng)前PC值=源地址+轉(zhuǎn)移指令字節(jié)數(shù)。
2)偏移量rel是有符號(hào)的單字節(jié)數(shù),以補(bǔ)碼表示,其相對(duì)值的范圍是-128~+127,負(fù)數(shù)表示從當(dāng)前地址向地址減小的方向轉(zhuǎn)移,正數(shù)表示從當(dāng)前地址向地址增大的方向轉(zhuǎn)移。3.2.6相對(duì)尋址1)當(dāng)前PC值是指相對(duì)轉(zhuǎn)移指令所在地址(圖3-3相對(duì)尋址示意圖
a)指令JZ08H尋址示意圖b)指令JZ0F4H尋址示意圖圖3-3相對(duì)尋址示意圖
a)指令JZ08H尋址示意圖b3.2.7位尋址1)直接使用位地址。
2)位名稱表示方法。
3)單元地址加位數(shù)的表示方法。
4)專用寄存器符號(hào)加位數(shù)的表示方法。3.2.7位尋址1)直接使用位地址。
2)位名稱表示方法。表3-17種尋址方式及尋址空間序號(hào)尋址方式尋址空間范圍1寄存器尋址R0~R7,A,B,CY,DPTR寄存器2立即尋址程序存儲(chǔ)器3寄存器間址片內(nèi)RAM的00H~0FFH,片外RAM4直接尋址片內(nèi)RAM的00H~7FH,SFR5變址尋址程序存儲(chǔ)器6相對(duì)尋址程序存儲(chǔ)器7位尋址片內(nèi)RAM的20H~2FH的128位,SFR中的93位表3-17種尋址方式及尋址空間序號(hào)尋址方式尋址空間范圍13.3數(shù)據(jù)傳送類指令3.3.1片內(nèi)RAM數(shù)據(jù)傳送類指令3.3數(shù)據(jù)傳送類指令3.3.1片內(nèi)RAM數(shù)據(jù)傳送類指令3.3.1片內(nèi)RAM數(shù)據(jù)傳送類指令1.以累加器為目的操作數(shù)的指令(4條)
2.以寄存器Rn為目的操作數(shù)的指令(3條)
3.以直接地址為目的操作數(shù)的指令(5條)
4.以間接地址為目的操作數(shù)的指令(3條)3.3.1片內(nèi)RAM數(shù)據(jù)傳送類指令1.以累加器為目的操作數(shù)3.3.1片內(nèi)RAM數(shù)據(jù)傳送類指令圖3-4片內(nèi)RAM間數(shù)據(jù)傳遞關(guān)系3.3.1片內(nèi)RAM數(shù)據(jù)傳送類指令圖3-4片內(nèi)RAM間數(shù)1.以累加器為目的操作數(shù)的指令(4條)MOV
A,Rn;(A)←(Rn),(n=0~7)MOV
A,direct;(A)←(direct)MOV
A,@Ri;(A)←((Ri))(i=0、1)MOV
A,#data;(A)←data這組指令的目的操作數(shù)都是累加器A,源操作數(shù)的尋址方式采用寄存器尋址、直接尋址、寄存器間接尋址和立即尋址。1.以累加器為目的操作數(shù)的指令(4條)MOVA,Rn2.以寄存器Rn為目的操作數(shù)的指令(3條)MOV
Rn,A;(Rn)←(A),(n=0~7)MOV
Rn,direct;(Rn)←(direct),(n=0~7)MOV
Rn,#data;(Rn)←data,(n=0~7)這組指令都是以工作寄存器為目的操作數(shù),源操作數(shù)的尋址方式采用寄存器尋址、直接尋址和立即尋址。2.以寄存器Rn為目的操作數(shù)的指令(3條)MOVRn,A;3.以直接地址為目的操作數(shù)的指令(5條)MOV
direct,A;(direct)←(A)MOV
direct,Rn;(direct)←(Rn),(n=0~7)MOV
directl,direct2;(direct1)←(direct2)MOV
direct,@Ri;(direct)←((Ri)),(i=0、1)MOV
direct,#data;(direct)←data這組指令的目的操作數(shù)都是直接尋址單元,源操作數(shù)采用寄存器尋址、直接尋址、寄存器間接尋址和立即尋址。3.以直接地址為目的操作數(shù)的指令(5條)MOVdirect4.以間接地址為目的操作數(shù)的指令(3條)MOV
@Ri,A;((Ri))←(A)MOV
@Ri,direct;((Ri))←(direct)MOV
@Ri,#data;((Ri))←data這組指令的目的操作數(shù)都是間接尋址單元,源操作數(shù)可采用寄存器尋址、直接尋址和立即尋址方式。4.以間接地址為目的操作數(shù)的指令(3條)MOV@Ri,A5.16位數(shù)據(jù)的傳遞指令(1條)(1)MOVA,R0和MOVA,@R0
(2)MOVA,#40H和MOVA,40H
3.3.2片外RAM數(shù)據(jù)傳送類指令
3.3.3程序存儲(chǔ)器向累加器A傳送數(shù)據(jù)類指令
3.3.4數(shù)據(jù)交換類指令
3.3.5堆棧操作類指令5.16位數(shù)據(jù)的傳遞指令(1條)(1)MOVA,R0和(2)MOVA,#40H和MOVA,40H解:它們的執(zhí)行結(jié)果為
解:運(yùn)行結(jié)果為
解:上述指令均是錯(cuò)誤的。
解法一:MOV55H,15H
解法二:MOVR6,15H
解法三:MOVR1,#15H
解法四:MOVA,15H
解:30H和40H單元中都裝有數(shù)據(jù),要想把其中的內(nèi)容相交換必須尋求第三個(gè)存儲(chǔ)單元對(duì)其中的一個(gè)數(shù)進(jìn)行緩沖,這個(gè)存儲(chǔ)單元若選為累加器A,則相應(yīng)程序如下:(2)MOVA,#40H和MOVA,40H解:它3.3.2片外RAM數(shù)據(jù)傳送類指令1)要訪問片外RAM,必須知道片外RAM單元的地址,在后兩條指令中,地址是被直接放在DPTR中,可尋址片外RAM的64KB空間。
2)使用訪問片外RAM數(shù)據(jù)傳送指令時(shí),應(yīng)當(dāng)首先將要讀或?qū)懙牡刂匪腿隓PTR或Ri中,然后再用讀或者寫命令。
3)也可以由P2與R0或P2與R1組成16位地址指針,尋址片外RAM的64KB空間。3.3.2片外RAM數(shù)據(jù)傳送類指令1)要訪問片外RAM,必3.3.3程序存儲(chǔ)器向累加器A傳送數(shù)據(jù)類指令1)MOVCA,@A+DPTR:這條指令的執(zhí)行結(jié)果只與指針DPTR及累加器A的內(nèi)容有關(guān),與該指令存放的地址無關(guān)。
2)MOVCA,@A+PC:這條指令的優(yōu)點(diǎn)是不改變SFR和PC的狀態(tài),只要根據(jù)A的內(nèi)容就可以取出表格中的常數(shù)。3.3.3程序存儲(chǔ)器向累加器A傳送數(shù)據(jù)類指令1)MOVC3.3.3程序存儲(chǔ)器向累加器A傳送數(shù)據(jù)類指令圖3-5查表指令3.3.3程序存儲(chǔ)器向累加器A傳送數(shù)據(jù)類指令圖3-5查表圖3-60~9二次方值表圖3-60~9二次方值表3.3.4數(shù)據(jù)交換類指令1.字節(jié)交換指令(Exchange,XCH
2.半字節(jié)交換指令(1條)
3.累加器A高低半字節(jié)交換指令(1條)3.3.4數(shù)據(jù)交換類指令1.字節(jié)交換指令(Exchange1.字節(jié)交換指令(Exchange,XCHXCH
A,Rn;(A)←→(Rn)XCH
A,@Ri;(A)←→((Ri))XCH
A,direct;(A)←→(direct)指令功能:將累加器A的內(nèi)容與源操作數(shù)(Rn、direct或@Ri)所指定單元的內(nèi)容相互交換。1.字節(jié)交換指令(Exchange,XCHXCHA,Rn2.半字節(jié)交換指令(1條)XCHDA,@Ri;(A)3~0←→((Ri))3~0指令功能:將累加器A中的內(nèi)容的低4位與Ri所指的片內(nèi)RAM單元中的低4位互換,但它們的高4位均不變。例如,設(shè)(A)=0ABH,(R0)=30H,(30H)=12H,執(zhí)行指令“XCHDA,@R0”后,(A)=0A2H,(30H)=1BH。2.半字節(jié)交換指令(1條)XCHDA,@Ri;(A)3.累加器A高低半字節(jié)交換指令(1條)解:本題是一個(gè)字節(jié)交換問題,故可以采用3條字節(jié)交換指令中的任何一條。若采用第三條字節(jié)交換指令,則相應(yīng)程序?yàn)?/p>
解:0~9的ASCII碼為30H~39H。進(jìn)行比較后發(fā)現(xiàn),兩者之間僅相差30H,故可以利用半字節(jié)指令把0~9的數(shù)裝配成相應(yīng)的ASCII碼。程序如下:3.累加器A高低半字節(jié)交換指令(1條)解:本題是一個(gè)字節(jié)交換3.3.5堆棧操作類指令1)PUSH稱為壓棧指令,將指定的直接尋址單元的內(nèi)容壓入堆棧。
2)POP稱為出棧指令,它是將當(dāng)前堆棧指針SP所指示的單元內(nèi)容彈出到指定的片內(nèi)RAM單元中,然后再將SP減1。3.3.5堆棧操作類指令1)PUSH稱為壓棧指令,將指定的圖3-7堆棧指令執(zhí)行過程
a)指令“PUSH40H”操作示意圖b)指令“POP30H”操作示意圖圖3-7堆棧指令執(zhí)行過程
a)指令“PUSH40H”操3.4算術(shù)運(yùn)算類指令3.4.1加法指令
3.4.2減法指令
3.4.3乘法指令
3.4.4除法指令3.4算術(shù)運(yùn)算類指令3.4.1加法指令
3.4.2減法3.4.1加法指令1.不帶進(jìn)位位的加法指令(Addition,ADD
100110100
2.帶進(jìn)位加法指令(Addition
3.增量指令(Increase,INC
4.十進(jìn)制調(diào)整指令(Decimal3.4.1加法指令1.不帶進(jìn)位位的加法指令(Additio1.不帶進(jìn)位位的加法指令(Addition,ADD解:100001011.不帶進(jìn)位位的加法指令(Addition,ADD解:2.帶進(jìn)位加法指令(Addition解:參考程序如下:2.帶進(jìn)位加法指令(Addition解:參考程序如下:3.增量指令(Increase,INC解:3.增量指令(Increase,INC解:4.十進(jìn)制調(diào)整指令(Decimal1)這條指令必須緊跟在ADD或ADDC指令之后,對(duì)加法指令的結(jié)果進(jìn)行調(diào)整,且這里的ADD或ADDC的操作是對(duì)壓縮的BCD碼表示的數(shù)進(jìn)行運(yùn)算。
2)DA指令不影響溢出標(biāo)志。4.十進(jìn)制調(diào)整指令(Decimal1)這條指令必須緊跟在AD1W4.TIF1W4.TIF3.4.2減法指令1.帶借位減法指令(Subtract
2.減1指令(Decrease,DEC3.4.2減法指令1.帶借位減法指令(Subtract
21.帶借位減法指令(Subtract圖3-8例題3-19程序
流程圖1.帶借位減法指令(Subtract圖3-8例題3-19程2.減1指令(Decrease,DEC解:首先要考慮到“DAA”指令只能對(duì)加法調(diào)整,故必須先化BCD減法為加法,關(guān)鍵是求兩位十進(jìn)制減數(shù)的補(bǔ)碼(9AH-減數(shù)),如圖3-8所示。2.減1指令(Decrease,DEC解:首先要考慮到“DA1W5.TIF1W5.TIF1W6.TIF1W6.TIF3.4.3乘法指令1)若乘積大于255,(OV)=1;否則(OV)=0。
2)CY總是為“0”。
3)P受累加器A中的內(nèi)容影響。3.4.3乘法指令1)若乘積大于255,(OV)=1;否則圖3-9例題3-20
程序流程圖圖3-9例題3-20
程序流程圖1W7.TIF1W7.TIF3.4.4除法指令1)CY、OV,清“0”。
2)若(B)=0,(OV)=1。
3)P受累加器A中的內(nèi)容影響。
1)將要轉(zhuǎn)換的二進(jìn)制數(shù)除以100,商即為百位數(shù),余數(shù)再除以10,商和余數(shù)分別為十位和個(gè)位數(shù)。
2)通過SWAP、ADD指令組成一個(gè)壓縮的BCD數(shù),其中十位數(shù)放在A7~4,個(gè)位數(shù)放在A3~0。
1)乘法指令和除法指令需要4個(gè)機(jī)器周期,是指令系統(tǒng)中執(zhí)行時(shí)間最長(zhǎng)的指令。
2)在進(jìn)行8位數(shù)乘除法運(yùn)算時(shí),必須將相應(yīng)的被乘數(shù)和乘數(shù)、被除數(shù)和除數(shù)分別放入累加器A和寄存器B中,才能進(jìn)行計(jì)算。
3)在51單片機(jī)中,乘法和除法指令僅適用于8位數(shù)乘法和除法運(yùn)算。3.4.4除法指令1)CY、OV,清“0”。
2)若(B3.4.4除法指令圖3-10例3-21流程圖3.4.4除法指令圖3-10例3-21流程圖3.5邏輯運(yùn)算類指令3.5.1累加器A的邏輯運(yùn)算指令
3.5.2兩個(gè)操作數(shù)的邏輯操作運(yùn)算指令3.5邏輯運(yùn)算類指令3.5.1累加器A的邏輯運(yùn)算指令
33.5.1累加器A的邏輯運(yùn)算指令1.累加器清“0”2.累加器按位取反指令
3.循環(huán)移位指令(4條)3.5.1累加器A的邏輯運(yùn)算指令1.累加器清“0”1W8.TIF1W10.TIF1W8.TIF1W10.TIF3.循環(huán)移位指令(4條)1W11.TIF1W9.TIF3.循環(huán)移位指令(4條)1W11.TIF1W9.TIF3.5.2兩個(gè)操作數(shù)的邏輯操作運(yùn)算指令1.邏輯“與”操作指令(And
2.邏輯“或”操作指令(Or
3.邏輯“異或”指令(6條)3.5.2兩個(gè)操作數(shù)的邏輯操作運(yùn)算指令1.邏輯“與”操作指1.邏輯“與”操作指令
ANL
A,Rn;(A)←(A)∧(Rn)ANL
A,direct;(A)←(A)∧(direct)ANL
A,@Ri;(A)←(A)∧((Ri))ANL
A,#data;(A)←(A)∧dataANL
direct,A;(direct)←(direct)∧(A)ANL
direct,#data;(direct)←(direct)∧data指令功能:將兩個(gè)操作數(shù)的內(nèi)容按位進(jìn)行邏輯“與”操作,并將結(jié)果送回目的操作數(shù)的單元中。利用“與”操作可屏蔽一些位或影響標(biāo)志位。例如,要將一個(gè)字節(jié)中的高4位清“0”,可用0FH進(jìn)行“與”操作。1.邏輯“與”操作指令
ANLA,Rn;(A2.邏輯“或”操作指令ORL
A,Rn;(A)←(A)∨(Rn)ORL
A,direct;(A)←(A)∨(direct)ORL
A,@Ri;(A)←(A)∨((Ri))ORL
A,#data;(A)←(A)∨dataORL
direct,A;(direct)←(direct)∨(A)ORL
direct,#data;(direct)←(direct)∨data指令功能:將兩個(gè)操作數(shù)的內(nèi)容按位進(jìn)行邏輯“或”操作,并將結(jié)果送回目的操作數(shù)的單元中。利用“或”操作可進(jìn)行數(shù)位的組合。例如,要把數(shù)字轉(zhuǎn)換成ASCII碼,可用30H進(jìn)行或操作。2.邏輯“或”操作指令ORLA,Rn;(A)3.邏輯“異或”指令(6條)解:完成本題有多種求解方法,現(xiàn)介紹其中兩種。
(1)利用MOVX
(2)利用MOVX3.邏輯“異或”指令(6條)解:完成本題有多種求解方法,現(xiàn)介(1)利用MOVX1W12.TIF(1)利用MOVX1W12.TIF(2)利用MOVX1)選用工作寄存器組中0區(qū)為工作區(qū)。
2)利用移位指令實(shí)現(xiàn)累加器A的內(nèi)容乘6。
1)ANLPSW,#11100111B;PSW的D4、D3位為00
2)CLRC(2)利用MOVX1)選用工作寄存器組中0區(qū)為工作區(qū)。
2)3.6位操作類指令3.6.1位變量傳送指令
3.6.2位變量修改指令
3.6.3位變量邏輯操作指令3.6位操作類指令3.6.1位變量傳送指令
3.6.23.6.1位變量傳送指令位變量傳送指令有互逆的2條,可實(shí)現(xiàn)進(jìn)位位C與某直接尋址位bit間內(nèi)容的傳送。MOV
C,bit;(CY)←(bit)MOV
bit,C;(bit)←(CY)指令功能:把源操作數(shù)的布爾變量送到目的操作數(shù)指定的位地址單元,其中一個(gè)操作數(shù)必須為進(jìn)位標(biāo)志CY,另一個(gè)操作數(shù)可以是任何可直接尋址位。3.6.1位變量傳送指令位變量傳送指令有互逆的2條,可實(shí)現(xiàn)3.6.2位變量修改指令位變量修改指令共有6條,分別是對(duì)位進(jìn)行清“0”、置“1”和取反指令,不影響其他標(biāo)志。CLR
C;(CY)←0CLR
bit;(bit)←0CPL
C;(CY)←(/CY)CPL
bit;(bit)←(/bit)SETB
C;(CY)←1SETB
bit;(bit)←13.6.2位變量修改指令位變量修改指令共有6條,分別是對(duì)位3.6.3位變量邏輯操作指令位變量邏輯操作指令包括位變量邏輯“與”和邏輯“或”,共有4條指令。ANL
C,bit;(CY)←(CY)∧(bit)ANL
C,/bit;(CY)←(CY)∧(/bit)ORL
C,bit;(CY)←(CY)∨(bit)ORL
C,/bit;(CY)←(CY)∨(/bit)【注意】位變量邏輯運(yùn)算指令中無邏輯“異或”(XRL)。3.6.3位變量邏輯操作指令位變量邏輯操作指令包括位變量邏3.6.3位變量邏輯操作指令圖3-11例3-29硬件邏輯電路3.6.3位變量邏輯操作指令圖3-11例3-29硬件邏輯3.7控制轉(zhuǎn)移類指令3.7.1無條件轉(zhuǎn)移指令
3.7.2條件轉(zhuǎn)移指令
3.7.3調(diào)用與返回指令3.7控制轉(zhuǎn)移類指令3.7.1無條件轉(zhuǎn)移指令
3.7.23.7.1無條件轉(zhuǎn)移指令1.絕對(duì)轉(zhuǎn)移指令(Absolute
2.相對(duì)轉(zhuǎn)移指令(Short
3.長(zhǎng)轉(zhuǎn)移指令(Long
4.間接轉(zhuǎn)移指令(散轉(zhuǎn)指令)3.7.1無條件轉(zhuǎn)移指令1.絕對(duì)轉(zhuǎn)移指令(Absolute1.絕對(duì)轉(zhuǎn)移指令(Absolute1W13.TIF1.絕對(duì)轉(zhuǎn)移指令(Absolute1W13.TIF1.絕對(duì)轉(zhuǎn)移指令(Absolute1W14.TIF1.絕對(duì)轉(zhuǎn)移指令(Absolute1W14.TIF2.相對(duì)轉(zhuǎn)移指令
SJMP
rel;(PC)←(PC)+2+rel轉(zhuǎn)移范圍為當(dāng)前PC值的-128~+127范圍內(nèi),共256個(gè)單元。若偏移量rel取值為0FEH(-2的補(bǔ)碼),則目標(biāo)地址等于源地址,相當(dāng)于動(dòng)態(tài)停機(jī),程序終止在這條指令上,停機(jī)指令在調(diào)試程序時(shí)很有用。51系列單片機(jī)沒有專用的停機(jī)指令,若要求動(dòng)態(tài)停機(jī)可用SJMP指令來實(shí)現(xiàn):HERE:SJMP
HERE;動(dòng)態(tài)停機(jī)2.相對(duì)轉(zhuǎn)移指令
SJMPrel;(PC)←(PC)+23.長(zhǎng)轉(zhuǎn)移指令
LJMP
addr16;(PC)←addr16執(zhí)行該指令時(shí),將16位目標(biāo)地址addr16裝入PC,程序無條件轉(zhuǎn)向指定的目標(biāo)地址。轉(zhuǎn)移指令的目標(biāo)地址可在64KB程序存儲(chǔ)器地址空間的任何地方,不影響任何標(biāo)志。4.間接轉(zhuǎn)移指令(散轉(zhuǎn)指令)JMP
@A+DPTR;(PC)←(A)+(DPTR)3.長(zhǎng)轉(zhuǎn)移指令
LJMPaddr16;(PC)←addr4.間接轉(zhuǎn)移指令(散轉(zhuǎn)指令)JMP
@A+DPTR;(PC)←(A)+(DPTR)指令功能:把累加器A中的8位無符號(hào)數(shù)與數(shù)據(jù)指針DPTR的16位數(shù)相加,其和作為下一條指令的地址送入PC,不影響標(biāo)志位。間接轉(zhuǎn)移指令采用變址方式實(shí)現(xiàn)無條件轉(zhuǎn)移,其特點(diǎn)是轉(zhuǎn)移地址可以在程序運(yùn)行中加以改變。例如,把DPTR作為基地址時(shí),根據(jù)A的不同值就可以實(shí)現(xiàn)多分支轉(zhuǎn)移,故一條指令可完成多條條件判斷轉(zhuǎn)移指令功能。這種功能稱為散轉(zhuǎn)功能,所以間接指令又稱為散轉(zhuǎn)指令。4.間接轉(zhuǎn)移指令(散轉(zhuǎn)指令)JMP@A+DPTR;(PC3.7.2條件轉(zhuǎn)移指令1.進(jìn)位/無進(jìn)位轉(zhuǎn)移指令
2.累加器內(nèi)容為零/非零轉(zhuǎn)移指令3.比較不相等轉(zhuǎn)移指令4.減1不為零轉(zhuǎn)移指令5.位測(cè)試指令3.7.2條件轉(zhuǎn)移指令1.進(jìn)位/無進(jìn)位轉(zhuǎn)移指令
2.累加器1.進(jìn)位/無進(jìn)位轉(zhuǎn)移指令JC
rel;(CY)=1,則(PC)←(PC)+2+rel
;(CY)=0,則(PC)←(PC)+2JNC
rel;(CY)=0,則(PC)←(PC)+2+rel
;(CY)=1,則(PC)←(PC)+2指令功能:第一條指令執(zhí)行時(shí),先判斷CY中的值。若CY=1,則程序發(fā)生轉(zhuǎn)移;若(CY)=0,則程序不轉(zhuǎn)移,繼續(xù)執(zhí)行原程序。第二條指令執(zhí)行時(shí)的情況與第一條指令恰好相反:若(CY)=0,則程序發(fā)生轉(zhuǎn)移;若(CY)=1,則程序不轉(zhuǎn)移,繼續(xù)執(zhí)行原程序。1.進(jìn)位/無進(jìn)位轉(zhuǎn)移指令JCrel;(CY)=1,則2.累加器內(nèi)容為零/非零轉(zhuǎn)移指令圖3-12JZ和JNZ指令執(zhí)行示意圖
a)JZrel指令b)JNZrel指令2.累加器內(nèi)容為零/非零轉(zhuǎn)移指令圖3-12JZ和JNZ指令3.比較不相等轉(zhuǎn)移指令1)這4條指令都是三字節(jié)指令,指令執(zhí)行時(shí)PC3次加1,然后再加地址偏移量rel。
2)指令執(zhí)行過程中的比較操作實(shí)際上是減法操作,但不保存兩數(shù)之差,產(chǎn)生CY標(biāo)志。
3)若參加比較的兩個(gè)操作數(shù)X和Y是無符號(hào)數(shù),則可以直接根據(jù)指令執(zhí)行后產(chǎn)生的CY來判斷兩個(gè)操作數(shù)的大小。
4)若參加比較的兩個(gè)操作數(shù)X和Y是有符號(hào)數(shù)補(bǔ)碼。3.比較不相等轉(zhuǎn)移指令1)這4條指令都是三字節(jié)指令,指令執(zhí)圖3-13帶符號(hào)數(shù)的比較方法圖3-13帶符號(hào)數(shù)的比較方法4.減1不為零轉(zhuǎn)移指令DJNZ
Rn,rel;兩字節(jié)指令DJNZ
direct,rel;三字節(jié)指令,direct可以是片內(nèi)RAM任意字節(jié)地址指令功能:把源操作數(shù)減1,結(jié)果回送到源操作數(shù)中去,如果結(jié)果不為0則轉(zhuǎn)移?!咀⒁狻窟@兩條指令均可以構(gòu)成循環(huán)結(jié)構(gòu)程序。4.減1不為零轉(zhuǎn)移指令DJNZRn,rel;兩字節(jié)指令5.位測(cè)試指令JB
bit,rel;(bit)=1,則(PC)←(PC)+3+rel
;(bit)=0,則(PC)←(PC)+3JNB
bit,rel;(bit)=0,則(PC)←(PC)+3+rel
;(bit)=1,則(PC)←(PC)+3JBC
bit,rel;(bit)=1,則(PC)←(PC)+3+rel且(bit)←0
;(bit)=0,則(PC)←(PC)+3指令功能:當(dāng)某一特定條件滿足時(shí),執(zhí)行轉(zhuǎn)移操作指令(相當(dāng)于一條相對(duì)轉(zhuǎn)移指令);條件不滿足時(shí),順序執(zhí)行下面的一條指令。5.位測(cè)試指令JBbit,rel;(解:程序如下:圖3-14按鍵連接圖及流程圖解:程序如下:圖3-14按鍵連接圖及流程圖解:程序如下。圖3-15主程序與子程序結(jié)構(gòu)
a)二次調(diào)用b)二級(jí)子程序嵌套解:程序如下。圖3-15主程序與子程序結(jié)構(gòu)
a)二次調(diào)用3.7.3調(diào)用與返回指令1.絕對(duì)調(diào)用指令(Absolute
2.長(zhǎng)調(diào)用指令(Long
3.返回指令(2條)
4.空操作指令(1條)3.7.3調(diào)用與返回指令1.絕對(duì)調(diào)用指令(Absolute3.7.3調(diào)用與返回指令圖3-16二級(jí)子程序嵌套及斷點(diǎn)地址存放
a)二級(jí)子程序嵌套示意圖b)轉(zhuǎn)入子程序2時(shí)的堆棧3.7.3調(diào)用與返回指令圖3-16二級(jí)子程序嵌套及斷點(diǎn)地1.絕對(duì)調(diào)用指令(Absolute1)(PC)+2→(PC),并壓入堆棧,先壓入PC低8位,后壓入PC高8位。
2)PC15~11a10~0→PC,獲得子程序起始地址。1.絕對(duì)調(diào)用指令(Absolute1)(PC)+2→(P圖3-17例3-36圖圖3-17例3-36圖2.長(zhǎng)調(diào)用指令(Long1)(PC)+3→(PC),并壓入堆棧,先壓入PC的低8位,后壓入PC的高8位。
2)addr16→PC,獲得子程序起始地址。
3)可調(diào)用64KB地址范圍內(nèi)的任意子程序。
1)轉(zhuǎn)移指令不保存返回地址,而子程序調(diào)用指令在轉(zhuǎn)向目的地址的同時(shí),必須保留返回地址(也稱為斷點(diǎn)地址),以便執(zhí)行返回指令時(shí)回到主程序斷點(diǎn)的位置。
2)堆棧是片內(nèi)RAM中一片存儲(chǔ)區(qū),采用先進(jìn)后出的原則存取數(shù)據(jù),調(diào)用時(shí)保護(hù)斷點(diǎn)的工作由調(diào)用指令完成,調(diào)用后恢復(fù)斷點(diǎn)的工作由返回指令完成。2.長(zhǎng)調(diào)用指令(Long1)(PC)+3→(PC),并壓3.返回指令(2條)(1)子程序的返回
(2)中斷返回指令3.返回指令(2條)(1)子程序的返回
(2)中斷返回指(1)子程序的返回RET;PC15~PC8←(SP),(SP)←(SP)-1
;PC7~PC0←(SP),(SP)←(SP)-1指令功能:RET(Return)指令從堆棧中取出16位斷點(diǎn)地址送回PC,使子程序返回主程序。(1)子程序的返回RET;PC15~PC8←(SP),(2)中斷返回指令RETI;PC15~PC8←(SP),(SP)←(SP)-1
;PC7~PC0←(SP),(SP)←(SP)-1指令功能:RETI(ReturnforInterrupt)將堆棧頂部2字節(jié)的內(nèi)容送到PC中,該指令用于中斷服務(wù)程序的末尾。與RET指令不同之處:RETI指令還具有清除中斷優(yōu)先級(jí)觸發(fā)器狀態(tài)、恢復(fù)中斷邏輯等功能。(2)中斷返回指令RETI;PC15~PC8←(SP),((2)中斷返回指令圖3-18紅綠燈和P1口連接圖(2)中斷返回指令圖3-18紅綠燈和P1口連接圖4.空操作指令(1條)1)該指令不執(zhí)行任何操作,僅僅將PC加1,使程序繼續(xù)向下執(zhí)行。
2)該指令為單周期指令,所以在時(shí)間上占用一個(gè)機(jī)器周期,常用于程序的等待或時(shí)間的延遲。4.空操作指令(1條)1)該指令不執(zhí)行任何操作,僅僅將PC3.8匯編語言程序設(shè)計(jì)3.8.1匯編語言程序設(shè)計(jì)概述
3.8.2常用偽指令
3.8.3順序結(jié)構(gòu)程序設(shè)計(jì)
3.8.4分支結(jié)構(gòu)程序設(shè)計(jì)
3.8.5循環(huán)結(jié)構(gòu)程序設(shè)計(jì)
3.8.6子程序設(shè)計(jì)
3.8.7綜合編程舉例3.8匯編語言程序設(shè)計(jì)3.8.1匯編語言程序設(shè)計(jì)概述
33.8.1匯編語言程序設(shè)計(jì)概述1.程序設(shè)計(jì)的三種語言
2.匯編語言程序設(shè)計(jì)思路3.8.1匯編語言程序設(shè)計(jì)概述1.程序設(shè)計(jì)的三種語言
2.1.程序設(shè)計(jì)的三種語言(1)機(jī)器語言
(2)匯編語言
(3)高級(jí)語言1.程序設(shè)計(jì)的三種語言(1)機(jī)器語言
(2)匯編語言
((1)機(jī)器語言在計(jì)算機(jī)中,用二進(jìn)制代碼表示的指令、數(shù)字和符號(hào)簡(jiǎn)稱為機(jī)器語言。直接用機(jī)器語言編寫的程序稱為機(jī)器語言程序。但是用機(jī)器語言編制的程序不易看懂,難于編寫、難于查錯(cuò)和難于交流,容易出錯(cuò)。(1)機(jī)器語言在計(jì)算機(jī)中,用二進(jìn)制代碼表示的指令、數(shù)字和符(2)匯編語言匯編語言是一種面向機(jī)器的程序設(shè)計(jì)語言,它用英文字符來代替對(duì)應(yīng)的機(jī)器語言。例如,用ADD代替機(jī)器語言中的加法運(yùn)算,這些英文字符被稱為助記符。(2)匯編語言匯編語言是一種面向機(jī)器的程序設(shè)計(jì)語言,它用英(3)高級(jí)語言計(jì)算機(jī)高級(jí)語言是一種面向算法、過程和對(duì)象的程序設(shè)計(jì)語言,它采用更接近人們習(xí)慣的自然語言和數(shù)學(xué)語言描述算法、過程和對(duì)象,如BASIC、C、Java等都是常用的高級(jí)語言。(3)高級(jí)語言計(jì)算機(jī)高級(jí)語言是一種面向算法、過程和對(duì)象的程2.匯編語言程序設(shè)計(jì)思路(1)分析問題,確定算法
(2)畫程序流程圖
(3)編寫源程序
(4)匯編和調(diào)試2.匯編語言程序設(shè)計(jì)思路(1)分析問題,確定算法
(2)(1)分析問題,確定算法先對(duì)所需解決的問題進(jìn)行分析,明確目的和任務(wù),了解現(xiàn)有條件和目標(biāo)要求后再確定解決該問題的方法和步驟,即通常所說的算法。對(duì)于一個(gè)問題,一般有多種不同的解決方案,通過比較從中挑選最優(yōu)方案。(1)分析問題,確定算法先對(duì)所需解決的問題進(jìn)行分析,明確目(2)畫程序流程圖把算法用流程圖描述出來,即用流程圖中的各種圖形、符號(hào)、流向線等來描述程序設(shè)計(jì)的過程,它可以清晰表達(dá)程序的設(shè)計(jì)思路。起止框:開始和結(jié)束框,在程序的開始和結(jié)束時(shí)使用。判斷框:進(jìn)行條件判斷,以決定程序的流向。處理框:表示各種處理和運(yùn)算。流向線:表示程序執(zhí)行的流向。連接點(diǎn):圈中標(biāo)注相同數(shù)字或符號(hào)的,表示連接在一起。(2)畫程序流程圖把算法用流程圖描述出來,即用流程圖中的(3)編寫源程序根據(jù)流程圖中各部分的功能,選取合適的指令和結(jié)構(gòu)編寫出具體程序。(3)編寫源程序根據(jù)流程圖中各部分的功能,選取合適的指令和(4)匯編和調(diào)試對(duì)已編寫好的程序,先進(jìn)行匯編。在匯編過程中,若還有語法錯(cuò)誤,需要對(duì)源程序進(jìn)行修改。匯編工作完成后,上機(jī)調(diào)試運(yùn)行。先輸入給定的數(shù)據(jù),運(yùn)行程序,檢查運(yùn)行結(jié)果是否正確,若發(fā)現(xiàn)錯(cuò)誤,通過分析,再對(duì)源程序進(jìn)行修改。(4)匯編和調(diào)試對(duì)已編寫好的程序,先進(jìn)行匯編。在匯編過程中3.8.2常用偽指令1.匯編起始地址偽指令
2.匯編結(jié)束偽指令
3.定義字節(jié)數(shù)據(jù)偽指令
4.定義字?jǐn)?shù)據(jù)偽指令
5.賦值偽指令
6.數(shù)據(jù)地址賦值偽指令
7.位地址符號(hào)定義偽指令3.8.2常用偽指令1.匯編起始地址偽指令
2.匯編結(jié)束偽1.匯編起始地址偽指令對(duì)已編寫好的程序,先進(jìn)行匯編。在匯編過程中,若還有語法錯(cuò)誤,需要對(duì)源程序進(jìn)行修改。匯編工作完成后,上機(jī)調(diào)試運(yùn)行。先輸入給定的數(shù)據(jù),運(yùn)行程序,檢查運(yùn)行結(jié)果是否正確,若發(fā)現(xiàn)錯(cuò)誤,通過分析,再對(duì)源程序進(jìn)行修改。1.匯編起始地址偽指令對(duì)已編寫好的程序,先進(jìn)行匯編。在匯編過2.匯編結(jié)束偽指令格式:END指令功能:END是匯編源程序的結(jié)束標(biāo)志,在整個(gè)源程序中只能有一條END命令,且位于程序的最后。如果END命令出現(xiàn)在中間,則其后的源程序匯編時(shí)將不予處理。2.匯編結(jié)束偽指令格式:3.定義字節(jié)數(shù)據(jù)偽指令格式:[標(biāo)號(hào):]DB
8位字?jǐn)?shù)據(jù)表指令功能:DB(DefinitionByte)命令用于定義從指定的地址開始,在程序存儲(chǔ)器的連續(xù)單元中定義字?jǐn)?shù)據(jù)。常用于存放數(shù)據(jù)表格。說明:字節(jié)數(shù)據(jù)可以是一字節(jié)常數(shù)或字符,或用逗號(hào)分開的字符串,或用引號(hào)括起來的字符串。3.定義字節(jié)數(shù)據(jù)偽指令格式:4.定義字?jǐn)?shù)據(jù)偽指令格式:[標(biāo)號(hào):]DW
16位字?jǐn)?shù)據(jù)表指令功能:DW(DefinitionWord)命令用于定義從指定地址開始,在程序存儲(chǔ)器的連續(xù)單元中定義16位的字?jǐn)?shù)據(jù)。說明:存放時(shí),數(shù)據(jù)的高8位在前(低地址),低8位在后(高地址)。4.定義字?jǐn)?shù)據(jù)偽指令格式:5.賦值偽指令格式:字符名稱EQU賦值項(xiàng)指令功能:EQU(Equate)用于給字符名稱賦值。賦值后,其符號(hào)值在整個(gè)程序中有效。說明:賦值項(xiàng)可以是常數(shù)、地址、標(biāo)號(hào)或表達(dá)式。其值為8位或16位二進(jìn)制數(shù)。賦值以后的字符名稱既可以作立即數(shù)使用,也可以作地址使用。必須先定義后使用,放在程序開頭。5.賦值偽指令格式:6.數(shù)據(jù)地址賦值偽指令1)EQU指令可以把一個(gè)匯編符號(hào)賦給一個(gè)字符名稱,而DATA指令不能。
2)EQU指令應(yīng)先定義后使用,而DATA指令可以先使用后定義。6.數(shù)據(jù)地址賦值偽指令1)EQU指令可以把一個(gè)匯編符號(hào)賦給7.位地址符號(hào)定義偽指令格式:字符名稱BIT位地址指令功能:用于給字符名稱賦以位地址。說明:位地址可以是絕對(duì)地址,也可以是符號(hào)地址(即位符號(hào)名稱)。例如:KEY0
BIT
P1.0表示把P1.0的位地址賦給變量KEY0,在其后的編程過程中,KEY0就可以作為位地址(P1.0)使用。7.位地址符號(hào)定義偽指令格式:3.8.3順序結(jié)構(gòu)程序設(shè)計(jì)解:兩位壓縮BCD碼轉(zhuǎn)換成二進(jìn)制數(shù)的算法為:(a1a0)BCD=10×a1+a0,程序流程圖如圖3-19所示。3.8.3順序結(jié)構(gòu)程序設(shè)計(jì)解:兩位壓縮BCD碼轉(zhuǎn)換成二進(jìn)制3.8.3順序結(jié)構(gòu)程序設(shè)計(jì)圖3-19例3-38流程圖3.8.3順序結(jié)構(gòu)程序設(shè)計(jì)圖3-19例3-38流程圖3.8.4分支結(jié)構(gòu)程序設(shè)計(jì)1)建立測(cè)試條件。
2)選用合適的條件轉(zhuǎn)移指令。
3)在轉(zhuǎn)移的目的地址處設(shè)定標(biāo)號(hào)。
1.單分支程序
2.多分支程序3.8.4分支結(jié)構(gòu)程序設(shè)計(jì)1)建立測(cè)試條件。
2)選用3.8.4分支結(jié)構(gòu)程序設(shè)計(jì)圖3-20分支結(jié)構(gòu)圖3.8.4分支結(jié)構(gòu)程序設(shè)計(jì)圖3-20分支結(jié)構(gòu)圖圖3-21分支程序結(jié)構(gòu)圖
a)單分支結(jié)構(gòu)圖b)雙分支結(jié)構(gòu)圖c)多支結(jié)構(gòu)圖圖3-21分支程序結(jié)構(gòu)圖
a)單分支結(jié)構(gòu)圖b)雙分支結(jié)構(gòu)1.單分支程序單分支程序是通過條件轉(zhuǎn)移指令實(shí)現(xiàn)的,即根據(jù)條件對(duì)程序的執(zhí)行結(jié)果進(jìn)行判斷,條件滿足則進(jìn)行程序轉(zhuǎn)移,條件不滿足則程序順序執(zhí)行。在51系列單片機(jī)指令系統(tǒng)中,可利用JZ、JNZ、CJNE、DJNZ、JC、JNC、JB、JNB、JBC等指令,完成為0、為1、為正、為負(fù)以及相等、不相等各種條件判斷。1.單分支程序單分支程序是通過條件轉(zhuǎn)移指令實(shí)現(xiàn)的,即根據(jù)條件解:根據(jù)題意,程序流程如圖3-22所示。圖3-22例3-39流程圖解:根據(jù)題意,程序流程如圖3-22所示。圖3-22例3-32.多分支程序1)使用多條CJNE指令,通過逐次比較,實(shí)現(xiàn)多分支程序轉(zhuǎn)移。
2)使用查地址表方法實(shí)現(xiàn)多分支程序轉(zhuǎn)移。2.多分支程序1)使用多條CJNE指令,通過逐次比較,實(shí)現(xiàn)圖3-23例題3-41程序流程圖圖3-23例題3-41程序流程圖3.8.5循環(huán)結(jié)構(gòu)程序設(shè)計(jì)1)循環(huán)初始化。
2)循環(huán)體。
3)循環(huán)控制。
4)循環(huán)結(jié)束。
1.單重循環(huán)程序
2.多重循環(huán)程序3.8.5循環(huán)結(jié)構(gòu)程序設(shè)計(jì)1)循環(huán)初始化。
2)循環(huán)體圖3-24循環(huán)程序結(jié)構(gòu)
a)先處理后控制b)先控制后處理圖3-24循環(huán)程序結(jié)構(gòu)
a)先處理后控制b)先控制后處理圖3-25例3-42流程圖圖3-25例3-42流程圖圖3-26例3-43流程圖圖3-26例3-43流程圖圖3-27例3-44圖
a)硬件連線圖b)程序流程圖圖3-27例3-44圖
a)硬件連線圖b)程序流程圖3.8.6子程序設(shè)計(jì)1.子程序的調(diào)用與返回
2.保存與恢復(fù)寄存器內(nèi)容
3.子程序的參數(shù)傳遞
4.子程序的嵌套
5.典型子程序設(shè)計(jì)
0123456789ABCDEF3.8.6子程序設(shè)計(jì)1.子程序的調(diào)用與返回
2.保存與恢復(fù)1.子程序的調(diào)用與返回(1)子程序的調(diào)用
(2)子程序的返回1.子程序的調(diào)用與返回(1)子程序的調(diào)用
(2)子程序的2.保存與恢復(fù)寄存器內(nèi)容(1)保護(hù)現(xiàn)場(chǎng)
(2)恢復(fù)現(xiàn)場(chǎng)2.保存與恢復(fù)寄存器內(nèi)容(1)保護(hù)現(xiàn)場(chǎng)
(2)恢復(fù)現(xiàn)場(chǎng)3.子程序的參數(shù)傳遞1)應(yīng)用工作寄存器或累加器傳遞參數(shù)。
2)應(yīng)用內(nèi)存單元。
3)應(yīng)用堆棧傳遞參數(shù)。
4)利用位地址傳送子程序參數(shù)。3.子程序的參數(shù)傳遞1)應(yīng)用工作寄存器或累加器傳遞參數(shù)。
圖3-28子程序嵌套示意圖圖3-28子程序嵌套示意圖4.子程序的嵌套在子程序中若再調(diào)用子程序,稱為子程序的嵌套,如圖3-28所示。51系列單片機(jī)也允許多重嵌套。4.子程序的嵌套在子程序中若再調(diào)用子程序,稱為子程序的嵌套,5.典型子程序設(shè)計(jì)(1)延時(shí)程序
(2)查表程序
(3)代碼轉(zhuǎn)換程序5.典型子程序設(shè)計(jì)(1)延時(shí)程序
(2)查表程序
(3)(1)延時(shí)程序解:根據(jù)題意,延時(shí)子程序的時(shí)限可以有以下幾種方法。
1)單循環(huán)延時(shí),延時(shí)時(shí)間Δt=(2×10+1+2)μs=23μs
2)雙重循環(huán)延時(shí),延時(shí)時(shí)間Δt=[(2×100+2+1)×10+1+2]μs=2033μs
3)三重循環(huán)延時(shí),程序流程如圖3-29所示。(1)延時(shí)程序解:根據(jù)題意,延時(shí)子程序的時(shí)限可以有以下幾種(1)延時(shí)程序圖3-29延時(shí)子程序
流程圖(1)延時(shí)程序圖3-29延時(shí)子程序
流程圖(2)查表程序解:計(jì)算某數(shù)的二次方可采用查表的方法實(shí)現(xiàn),并編寫成子程序。只要兩次調(diào)用子程序,并求和就可得運(yùn)算結(jié)果。(2)查表程序解:計(jì)算某數(shù)的二次方可采用查表的方法實(shí)現(xiàn),并圖3-30例3-46流程圖圖3-30例3-46流程圖(3)代碼轉(zhuǎn)換程序解:在單片機(jī)匯編程序設(shè)計(jì)中,主要涉及十六進(jìn)制的16個(gè)符號(hào)“0~F”的ASCII碼及其數(shù)值的轉(zhuǎn)換。ASCII碼是有一定規(guī)律的,數(shù)字0~9的ASCII碼為該數(shù)值加上30H,而對(duì)于字母“A~F”的ASCII碼為該數(shù)值加上37H?!?~F”對(duì)應(yīng)的ASCII碼如下:(3)代碼轉(zhuǎn)換程序解:在單片機(jī)匯編程序設(shè)計(jì)中,主要涉及十六1)入口參數(shù)。
2)出口參數(shù)。
(4)算術(shù)運(yùn)算子程序1)入口參數(shù)。
2)出口參數(shù)。
(4)算術(shù)運(yùn)算子程序1W20.TIF1W20.TIF3.8.7綜合編程舉例1)輸入信號(hào)。
2)輸出信號(hào)。
(1)將累加器內(nèi)容送工作寄存器R0。
(2)將累加器內(nèi)容送片內(nèi)RAM的7BH單元。
(3)將累加器內(nèi)容送片外RAM的7BH單元。
(4)將累加器內(nèi)容送片外RAM的007BH單元。
(5)將片外ROM中007BH單元內(nèi)容送累加器。
(1)MOVA,#24H與MOVA,24H
(2)MOVA,R0與MOVA,@R0
(3)MOVA,@R0與MOVXA,@R0
(1)MOVR0,#30H
(2)MOVA,@R0
(3)MOVR1,A3.8.7綜合編程舉例1)輸入信號(hào)。
2)輸出信號(hào)。
3.8.7綜合編程舉例(4)MOVB,@Rl
(5)MOV@R0,P1
(6)MOVP3,P1
(7)MOV10H,#20H
(8)MOV30H,10H
(1)MOVR6,A
(2)MOV@R0,A
(3)MOVA,#90H
(4)MOVA,90H
(5)MOV80H,#81H
(6)MOVX@R0,A
(7)PUSHA
(8)SWAPA3.8.7綜合編程舉例(4)MOVB,@Rl
(5)3.8.7綜合編程舉例(9)XCHA,R0
(1)MOVA,@R1
(2)MOVX@DPTR,A
(3)MOVCA,@A+DPTR
(4)XCHDA,@R1
(1)ADDA,@R1
(2)ADDCA,78H
(3)SUBBA,#77H
(4)INCR1
(5)DEC78H
(6)MULAB
(7)DIVAB
(8)ANL78H,#78H3.8.7綜合編程舉例(9)XCHA,R0
(1)M3.8.7綜合編程舉例(9)ORLA,#0FH
(10)XRL80H,A3.8.7綜合編程舉例(9)ORLA,#0FH
(10圖3-31例3-49圖圖3-31例3-49圖圖3-32例3-50圖圖3-32例3-50圖圖3-33例題3-51程序流程圖圖3-33例題3-51程序流程圖(10)XRL80H,A圖3-34習(xí)題3-27圖(10)XRL80H,A圖3-34習(xí)題3-27圖第3章51系列單片機(jī)的指令系統(tǒng)和程序設(shè)計(jì)方法(1)理解指令的尋址方式及相應(yīng)的尋址空間。
(2)理解51系列單片機(jī)的111條基本指令的含義,熟練掌握其應(yīng)用方法。
(3)了解機(jī)器語言、匯編語言和高級(jí)語言的特點(diǎn)、匯編語言程序設(shè)計(jì)步驟。
(4)掌握匯編語言的基本格式,熟練掌握匯編語言的程序設(shè)計(jì)思想和設(shè)計(jì)方法。
(5)理解子程序的特點(diǎn),掌握子程序的設(shè)計(jì)方法和設(shè)計(jì)中應(yīng)該注意的問題。
3.1指令系統(tǒng)概述
3.2尋址方式
3.3數(shù)據(jù)傳送類指令
5.16位數(shù)據(jù)的傳遞指令(1條)
3.4算術(shù)運(yùn)算類指令第3章51系列單片機(jī)的指令系統(tǒng)和程序設(shè)計(jì)方法(1)理解指第3章51系列單片機(jī)的指令系統(tǒng)和程序設(shè)計(jì)方法3.5邏輯運(yùn)算類指令
3.6位操作類指令
3.7控制轉(zhuǎn)移類指令
3.8匯編語言程序設(shè)計(jì)第3章51系列單片機(jī)的指令系統(tǒng)和程序設(shè)計(jì)方法3.5邏輯運(yùn)3.1指令系統(tǒng)概述3.1.1指令分類
3.1.2指令格式
3.1.3指令中常用縮寫符號(hào)的意義3.1指令系統(tǒng)概述3.1.1指令分類
3.1.2指令格3.1.1指令分類1.按指令功能可分為五類
2.按指令執(zhí)行所需要的時(shí)間可分為三類
3.按指令所占的字節(jié)數(shù)可分為三類3.1.1指令分類1.按指令功能可分為五類
2.按指令執(zhí)行1.按指令功能可分為五類1)數(shù)據(jù)傳送類指令(29條):內(nèi)部8位數(shù)據(jù)傳送指令15條,內(nèi)部16位數(shù)據(jù)傳送指令1條,外部數(shù)據(jù)傳送指令4條,交換、查表和堆棧操作指令9條。
2)算術(shù)傳送類指令(24條):加法指令14條(包括BCD碼調(diào)整指令1條),減法指令8條,乘/除法指令各1條。
3)邏輯運(yùn)算類指令(24條):邏輯運(yùn)算指令20條,循環(huán)移位指令4條。
4)位操作指令(12條):位傳送指令2條,位置位、位清“0”和位取反指令6條,位運(yùn)算指令4條。
5)控制轉(zhuǎn)移類指令(22條):無條件轉(zhuǎn)移指令4條,條件轉(zhuǎn)移指令8條,調(diào)用和返回指令5條,位測(cè)試轉(zhuǎn)移指令3條,判別CY標(biāo)志轉(zhuǎn)移指令2條。1.按指令功能可分為五類1)數(shù)據(jù)傳送類指令(29條):內(nèi)部82.按指令執(zhí)行所需要的時(shí)間可分為三類1)單周期指令(64條)。
2)雙周期指令(45條)。
3)四周期指令(2條)。2.按指令執(zhí)行所需要的時(shí)間可分為三類1)單周期指令(64條)3.按指令所占的字節(jié)數(shù)可分為三類1)單字節(jié)指令(49條)。
2)雙字節(jié)指令(46條)。
3)三字節(jié)指令(16條)。3.按指令所占的字節(jié)數(shù)可分為三類1)單字節(jié)指令(49條)。
3.1.2指令格式1.指令格式介紹
2.指令中數(shù)據(jù)的表示3.1.2指令格式1.指令格式介紹
2.指令中數(shù)據(jù)的表示1.指令格式介紹1)匯編語言語句由標(biāo)號(hào)、操作碼、操作數(shù)和注釋四部分組成。
2)標(biāo)號(hào)位于語句的開始,由1~8個(gè)ASCII字符組成,第一個(gè)字符必須是字母。
3)操作碼是用英文縮寫的指令功能助記符。
4)操作數(shù)在操作碼之后,兩者用空格分開。
5)注釋在語句的最后,以分號(hào)“;”開始,是說明性的文字,與語句的具體功能無關(guān),但是能增加程序的可閱讀性,便于程序的調(diào)試與交流。1.指令格式介紹1)匯編語言語句由標(biāo)號(hào)、操作碼、操作數(shù)和注釋2.指令中數(shù)據(jù)的表示1)十進(jìn)制數(shù)以D結(jié)尾,也可以省略,如55D或55。
2)十六進(jìn)制數(shù)以H結(jié)尾,如55H。
3)二進(jìn)制數(shù)以B結(jié)尾,如00110011B。
4)八進(jìn)制數(shù)以O(shè)或Q結(jié)尾,如55O或55Q。
5)字符串用“”括起來,如′M′表示字符M的ASCII碼。2.指令中數(shù)據(jù)的表示1)十進(jìn)制數(shù)以D結(jié)尾,也可以省略,如553.1.3指令中常用縮寫符號(hào)的意義1)#data:8位立即數(shù)。
2)#data16:16位立即數(shù)。
3)Rn:工作寄存器,R0~R7,n=0~7。
4)Ri:工作寄存器,i=0或1。
5)@:間接地址符號(hào)。
6)direct:8位直接地址,可以是特殊功能寄存器(SFR)的地址或片內(nèi)RAM單元地址。
7)addr11:11位目的地址。
8)addr16:16位目的地址。
9)rel:有符號(hào)的8位偏移地址,主要用于所有的條件轉(zhuǎn)移指令和SJMP指令。
10)bit:位地址。
11)/:位操作數(shù)的前綴,表示對(duì)該位操作數(shù)取反,如/bit。3.1.3指令中常用縮寫符號(hào)的意義1)#data:8位立即3.1.3指令中常用縮寫符號(hào)的意義12):當(dāng)前指令存放的地址。
13)(X):表示由X所指定的某寄存器或某單元中的內(nèi)容。
14)((X)):表示由X間接尋址單元中的內(nèi)容。
15)B:通用寄存器,常用于乘法MUL和除法DIV的指令。
16)C:進(jìn)位標(biāo)志位或者布爾處理器中的累加器。
17)←:表示指令的操作結(jié)果是將箭頭右邊的內(nèi)容傳送到左邊。3.1.3指令中常用縮寫符號(hào)的意義12):當(dāng)前指令存放的地3.2尋址方式3.2.1立即尋址
3.2.2直接尋址
3.2.3寄存器尋址
3.2.4寄存器間接尋址
3.2.5變址尋址
3.2.6相對(duì)尋址
3.2.7位尋址3.2尋址方式3.2.1立即尋址
3.2.2直接尋址
3.2.1立即尋址立即尋址是指指令中直接給出操作數(shù)的尋址方式。立即數(shù)用前面加有#號(hào)的8位或16位數(shù)來表示。立即數(shù)是指令代碼的一部分,只能作源操作數(shù)。這種尋址方式主要用于對(duì)特殊功能寄存器和指定的存儲(chǔ)單元賦初值。3.2.1立即尋址立即尋址是指指令中直接給出操作數(shù)的尋址方3.2.2直接尋址1)特殊功能寄存器(SFR):直接尋址是唯一的訪問形式。
2)片內(nèi)RAM低128B單元(地址范圍00H~7FH)。
3)221個(gè)位地址空間。3.2.2直接尋址1)特殊功能寄存器(SFR):直接尋址3.2.3寄存器尋址寄存器尋址是指操作數(shù)存放于寄存器中(Rn、A、B、DPTR、CY)的尋址方式。例如:MOV
A,R7;(A)←(R7)其功能是把寄存器R7內(nèi)的操作數(shù)傳送到累加器A中。由于操作數(shù)在R7中,因此在指令中指定了R7,就能從中取得操作數(shù)。3.2.3寄存器尋址寄存器尋址是指操作數(shù)存放于寄存器中(R3.2.4寄存器間接尋址圖3-1寄存器間接尋址示意圖3.2.4寄存器間接尋址圖3-1寄存器間接尋址示意圖3.2.5變址尋址圖3-2變址尋址示意圖3.2.5變址尋址圖3-2變址尋址示意圖3.2.6相對(duì)尋址1)當(dāng)前PC值是指相對(duì)轉(zhuǎn)移指令所在地址(一般稱為源地址)加上轉(zhuǎn)移指令字節(jié)數(shù),即當(dāng)前PC值=源地址+轉(zhuǎn)移指令字節(jié)數(shù)。
2)偏移量rel是有符號(hào)的單字節(jié)數(shù),以補(bǔ)碼表示,其相對(duì)值的范圍是-128~+127,負(fù)數(shù)表示從當(dāng)前地址向地址減小的方向轉(zhuǎn)移,正數(shù)表示從當(dāng)前地址向地址增大的方向轉(zhuǎn)移。3.2.6相對(duì)尋址1)當(dāng)前PC值是指相對(duì)轉(zhuǎn)移指令所在地址(圖3-3相對(duì)尋址示意圖
a)指令JZ08H尋址示意圖b)指令JZ0F4H尋址示意圖圖3-3相對(duì)尋址示意圖
a)指令JZ08H尋址示意圖b3.2.7位尋址1)直接使用位地址。
2)位名稱表示方法。
3)單元地址加位數(shù)的表示方法。
4)專用寄存器符號(hào)加位數(shù)的表示方法。3.2.7位尋址1)直接使用位地址。
2)位名稱表示方法。表3-17種尋址方式及尋址空間序號(hào)尋址方式尋址空間范圍1寄存器尋址R0~R7,A,B,CY,DPTR寄存器2立即尋址程序存儲(chǔ)器3寄存器間址片內(nèi)RAM的00H~0FFH,片外RAM4直接尋址片內(nèi)RAM的00H~7FH,SFR5變址尋址程序存儲(chǔ)器6相對(duì)尋址程序存儲(chǔ)器7位尋址片內(nèi)RAM的20H~2FH的128位,SFR中的93位表3-17種尋址方式及尋址空間序號(hào)尋址方式尋址空間范圍13.3數(shù)據(jù)傳送類指令3.3.1片內(nèi)RAM數(shù)據(jù)傳送類指令3.3數(shù)據(jù)傳送類指令3.3.1片內(nèi)RAM數(shù)據(jù)傳送類指令3.3.1片內(nèi)RAM數(shù)據(jù)傳送類指令1.以累加器為目的操作數(shù)的指令(4條)
2.以寄存器Rn為目的操作數(shù)的指令(3條)
3.以直接地址為目的操作數(shù)的指令(5條)
4.以間接地址為目的操作數(shù)的指令(3條)3.3.1片內(nèi)RAM數(shù)據(jù)傳送類指令1.以累加器為目的操作數(shù)3.3.1片內(nèi)RAM數(shù)據(jù)傳送類指令圖3-4片內(nèi)RAM間數(shù)據(jù)傳遞關(guān)系3.3.1片內(nèi)RAM數(shù)據(jù)傳送類指令圖3-4片內(nèi)RAM間數(shù)1.以累加器為目的操作數(shù)的指令(4條)MOV
A,Rn;(A)←(Rn),(n=0~7)MOV
A,direct;(A)←(direct)MOV
A,@Ri;(A)←((Ri))(i=0、1)MOV
A,#data;(A)←data這組指令的目的操作數(shù)都是累加器A,源操作數(shù)的尋址方式采用寄存器尋址、直接尋址、寄存器間接尋址和立即尋址。1.以累加器為目的操作數(shù)的指令(4條)MOVA,Rn2.以寄存器Rn為目的操作數(shù)的指令(3條)MOV
Rn,A;(Rn)←(A),(n=0~7)MOV
Rn,direct;(Rn)←(direct),(n=0~7)MOV
Rn,#data;(Rn)←data,(n=0~7)這組指令都是以工作寄存器為目的操作數(shù),源操作數(shù)的尋址方式采用寄存器尋址、直接尋址和立即尋址。2.以寄存器Rn為目的操作數(shù)的指令(3條)MOVRn,A;3.以直接地址為目的操作數(shù)的指令(5條)MOV
direct,A;(direct)←(A)MOV
direct,Rn;(direct)←(Rn),(n=0~7)MOV
directl,direct2;(direct1)←(direct2)MOV
direct,@Ri;(direct)←((Ri)),(i=0、1)MOV
direct,#data;(direct)←data這組指令的目的操作數(shù)都是直接尋址單元,源操作數(shù)采用寄存器尋址、直接尋址、寄存器間接尋址和立即尋址。3.以直接地址為目的操作數(shù)的指令(5條)MOVdirect4.以間接地址為目的操作數(shù)的指令(3條)MOV
@Ri,A;((Ri))←(A)MOV
@Ri,direct;((Ri))←(direct)MOV
@Ri,#data;((Ri))←data這組指令的目的操作數(shù)都是間接尋址單元,源操作數(shù)可采用寄存器尋址、直接尋址和立即尋址方式。4.以間接地址為目的操作數(shù)的指令(3條)MOV@Ri,A5.16位數(shù)據(jù)的傳遞指令(1條)(1)MOVA,R0和MOVA,@R0
(2)MOVA,#40H和MOVA,40H
3.3.2片外RAM數(shù)據(jù)傳送類指令
3.3.3程序存儲(chǔ)器向累加器A傳送數(shù)據(jù)類指令
3.3.4數(shù)據(jù)交換類指令
3.3.5堆棧操作類指令5.16位數(shù)據(jù)的傳遞指令(1條)(1)MOVA,R0和(2)MOVA,#40H和MOVA,40H解:它們的執(zhí)行結(jié)果為
解:運(yùn)行結(jié)果為
解:上述指令均是錯(cuò)誤的。
解法一:MOV55H,15H
解法二:MOVR6,15H
解法三:MOVR1,#15H
解法四:MOVA,15H
解:30H和40H單元中都裝有數(shù)據(jù),要想把其中的內(nèi)容相交換必須尋求第三個(gè)存儲(chǔ)單元對(duì)其中的一個(gè)數(shù)進(jìn)行緩沖,這個(gè)存儲(chǔ)單元若選為累加器A,則相應(yīng)程序如下:(2)MOVA,#40H和MOVA,40H解:它3.3.2片外RAM數(shù)據(jù)傳送類指令1)要訪問片外RAM,必須知道片外RAM單元的地址,在后兩條指令中,地址是被直接放在DPTR中,可尋址片外RAM的64KB空間。
2)使用訪問片外RAM數(shù)據(jù)傳送指令時(shí),應(yīng)當(dāng)首先將要讀或?qū)懙牡刂匪腿隓PTR或Ri中,然后再用讀或者寫命令。
3)也可以由P2與R0或P2與R1組成16位地址指針,尋址片外RAM的64KB空間。3.3.2片外RAM數(shù)據(jù)傳送類指令1)要訪問片外RAM,必3.3.3程序存儲(chǔ)器向累加器A傳送數(shù)據(jù)類指令1)MOVCA,@A+DPTR:這條指令的執(zhí)行結(jié)果只與指針DPTR及累加器A的內(nèi)容有關(guān),與該指令存放的地址無關(guān)。
2)MOVCA,@A+PC:這條指令的優(yōu)點(diǎn)是不改變SFR和PC的狀態(tài),只要根據(jù)A的內(nèi)容就可以取出表格中的常數(shù)。3.3.3程序存儲(chǔ)器向累加器A傳送數(shù)據(jù)類指令1)MOVC3.3.3程序存儲(chǔ)器向累加器A傳送數(shù)據(jù)類指令圖3-5查表指令3.3.3程序存儲(chǔ)器向累加器A傳送數(shù)據(jù)類指令圖3-5查表圖3-60~9二次方值表圖3-60~9二次方值表3.3.4數(shù)據(jù)交換類指令1.字節(jié)交換指令(Exchange,XCH
2.半字節(jié)交換指令(1條)
3.累加器A高低半字節(jié)交換指令(1條)3.3.4數(shù)據(jù)交換類指令1.字節(jié)交換指令(Exchange1.字節(jié)交換指令(Exchange,XCHXCH
A,Rn;(A)←→(Rn)XCH
A,@Ri;(A)←→((Ri))XCH
A,direct;(A)←→(direct)指令功能:將累加器A的內(nèi)容與源操作數(shù)(Rn、direct或@Ri)所指定單元的內(nèi)容相互交換。1.字節(jié)交換指令(Exchange,XCHXCHA,Rn2.半字節(jié)交換指令(1條)XCHDA,@Ri;(A)3~0←→((Ri))3~0指令功能:將累加器A中的內(nèi)容的低4位與Ri所指的片內(nèi)RAM單元中的低4位互換,但它們的高4位均不變。例如,設(shè)(A)=0ABH,(R0)=30H,(30H)=12H,執(zhí)行指令“XCHDA,@R0”后,(A)=0A2H,(30H)=1BH。2.半字節(jié)交換指令(1條)XCHDA,@Ri;(A)3.累加器A高低半字節(jié)交換指令(1條)解:本題是一個(gè)字節(jié)交換問題,故可以采用3條字節(jié)交換指令中的任何一條。若采用第三條字節(jié)交換指令,則相應(yīng)程序?yàn)?/p>
解:0~9的ASCII碼為30H~39H。進(jìn)行比較后發(fā)現(xiàn),兩者之間僅相差30H,故可以利用半字節(jié)指令把0~9的數(shù)裝配成相應(yīng)的ASCII碼。程序如下:3.累加器A高低半字節(jié)交換指令(1條)解:本題是一個(gè)字節(jié)交換3.3.5堆棧操作類指令1)PUSH稱為壓棧指令,將指定的直接尋址單元的內(nèi)容壓入堆棧。
2)POP稱為出棧指令,它是將當(dāng)前堆棧指針SP所指示的單元內(nèi)容彈出到指定的片內(nèi)RAM單元中,然后再將SP減1。3.3.5堆棧操作類指令1)PUSH稱為壓棧指令,將指定的圖3-7堆棧指令執(zhí)行過程
a)指令“PUSH40H”操作示意圖b)指令“POP30H”操作示意圖圖3-7堆棧指令執(zhí)行過程
a)指令“PUSH40H”操3.4算術(shù)運(yùn)算類指令3.4.1加法指令
3.4.2減法指令
3.4.3乘法指令
3.4.4除法指令3.4算術(shù)運(yùn)算類指令3.4.1加法指令
3.4.2減法3.4.1加法指令1.不帶進(jìn)位位的加法指令(Addition,ADD
100110100
2.帶進(jìn)位加法指令(Addition
3.增量指令(Increase,INC
4.十進(jìn)制調(diào)整指令(Decimal3.4.1加法指令1.不帶進(jìn)位位的加法指令(Additio1.不帶進(jìn)位位的加法指令(Addition,ADD解:100001011.不帶進(jìn)位位的加法指令(Addition,ADD解:2.帶進(jìn)位加法指令(Addition解:參考程序如下:2.帶進(jìn)位加法指令(Addi
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 連云港職業(yè)技術(shù)學(xué)院《體育-臺(tái)球》2023-2024學(xué)年第一學(xué)期期末試卷
- 江西現(xiàn)代職業(yè)技術(shù)學(xué)院《音樂選配與編輯》2023-2024學(xué)年第一學(xué)期期末試卷
- 江蘇大學(xué)《水資源系統(tǒng)分析》2023-2024學(xué)年第一學(xué)期期末試卷
- 華東理工大學(xué)《國(guó)學(xué)經(jīng)典選讀》2023-2024學(xué)年第一學(xué)期期末試卷
- 隔膜壓縮機(jī)開機(jī)停機(jī)操作規(guī)程
- 湖北工業(yè)職業(yè)技術(shù)學(xué)院《醫(yī)藥學(xué)基礎(chǔ)實(shí)驗(yàn)》2023-2024學(xué)年第一學(xué)期期末試卷
- 遵義醫(yī)科大學(xué)《材料與結(jié)構(gòu)選型》2023-2024學(xué)年第一學(xué)期期末試卷
- 珠海城市職業(yè)技術(shù)學(xué)院《Python程序開發(fā)》2023-2024學(xué)年第一學(xué)期期末試卷
- 重慶旅游職業(yè)學(xué)院《地下水資源勘查與評(píng)價(jià)》2023-2024學(xué)年第一學(xué)期期末試卷
- 浙江特殊教育職業(yè)學(xué)院《審計(jì)理論與方法》2023-2024學(xué)年第一學(xué)期期末試卷
- 泌尿科主任述職報(bào)告
- 新零售門店運(yùn)營(yíng)管理流程手冊(cè)
- 心理學(xué)專業(yè)知識(shí)考試參考題庫(kù)500題(含答案)(一)
- 2024年浙江高考技術(shù)試題(含答案)
- 資管行業(yè)投研一體化建設(shè)
- 提高保險(xiǎn)公司客戶投訴處理能力的整改措施
- 物業(yè)費(fèi)收取協(xié)議書模板
- 電工(中級(jí)工)理論知識(shí)練習(xí)題(附參考答案)
- 工業(yè)設(shè)計(jì)概論試題
- 起重機(jī)的維護(hù)保養(yǎng)要求與月度、年度檢查記錄表
- 消防設(shè)施維護(hù)保養(yǎng)記錄表
評(píng)論
0/150
提交評(píng)論