《單片機(jī)原理與應(yīng)用(第3版)》第3章 指令系統(tǒng)_第1頁(yè)
《單片機(jī)原理與應(yīng)用(第3版)》第3章 指令系統(tǒng)_第2頁(yè)
《單片機(jī)原理與應(yīng)用(第3版)》第3章 指令系統(tǒng)_第3頁(yè)
《單片機(jī)原理與應(yīng)用(第3版)》第3章 指令系統(tǒng)_第4頁(yè)
《單片機(jī)原理與應(yīng)用(第3版)》第3章 指令系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩62頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

單片機(jī)原理與應(yīng)用2024/1/15第3章

MCS-51指令系統(tǒng)

3.1MCS-51指令系統(tǒng)

3.1.1數(shù)據(jù)傳送指令

3.1.2算術(shù)運(yùn)算指令

3.1.3邏輯運(yùn)算指令

3.1.4位操作指令

3.1.5控制及轉(zhuǎn)移指令

3.2匯編語(yǔ)言程序設(shè)計(jì)基礎(chǔ)

3.2.1匯編語(yǔ)言程序結(jié)構(gòu)

3.2.2多任務(wù)程序結(jié)構(gòu)及實(shí)現(xiàn)

3.2.3匯編語(yǔ)言程序編輯與執(zhí)行

3.2.4對(duì)匯編語(yǔ)言程序的基本要求2024/1/15單片機(jī)原理與應(yīng)用3.0預(yù)備知識(shí)—WAVE仿真開(kāi)發(fā)軟件安裝與使用

在學(xué)習(xí)指令系統(tǒng)前,先了解WAVE仿真開(kāi)發(fā)軟件的安裝和使用方法。以便及時(shí)通過(guò)該仿真軟件理解MCS-51指令系統(tǒng)的功能和作用。2024/1/15單片機(jī)原理與應(yīng)用

WAVE仿真開(kāi)發(fā)軟件把源程序編輯、編譯、下載、調(diào)試等操作全部集中在一個(gè)環(huán)境下進(jìn)行,支持MCS-51、PIC兩大系列、不同種類單片機(jī)CPU。具有軟件模擬執(zhí)行功能,除輸入、輸出操作外,均可在軟件模擬環(huán)境下完成絕大部分應(yīng)用程序的調(diào)試。

WAVE編譯器支持過(guò)程匯編,這樣在程序編寫(xiě)、總裝、調(diào)試過(guò)程中不會(huì)遇到標(biāo)號(hào)重定義問(wèn)題,方便了大型程序編寫(xiě)、調(diào)試。一、功能

2024/1/15單片機(jī)原理與應(yīng)用

從WAVE網(wǎng)站下載WAVE6000仿真開(kāi)發(fā)軟件(ZIP壓縮文件格式),經(jīng)ZIP解壓后,運(yùn)行其中的SETUP.EXE文件,該安裝程序?qū)⒁龑?dǎo)用戶完成WAVE6000仿真開(kāi)發(fā)軟件的安裝過(guò)程。二、安裝2024/1/15單片機(jī)原理與應(yīng)用三、啟動(dòng)及界面認(rèn)識(shí)

完成安裝后,首次啟動(dòng)看到的界面單片機(jī)原理與應(yīng)用2024/1/15四、初始化設(shè)置1.執(zhí)行“仿真器”菜單,設(shè)置仿真器、仿真頭、CPU及晶振頻率等選項(xiàng)內(nèi)容。必要時(shí)對(duì)“仿真頭”做進(jìn)一步設(shè)置。2.

設(shè)置“語(yǔ)言”(對(duì)于匯編語(yǔ)言源程序來(lái)說(shuō),推薦使用WAVE編譯器及WAVE預(yù)定義符號(hào))。3.

設(shè)置編譯后產(chǎn)生的“目標(biāo)文件”的種類(支持二進(jìn)制BIN文件格式和十六進(jìn)制HEX文件格式)。缺省時(shí)僅產(chǎn)生十六進(jìn)制HEX格式文件,可根據(jù)需要選擇。2024/1/15單片機(jī)原理與應(yīng)用4.進(jìn)入“通信設(shè)置”標(biāo)簽,設(shè)置聯(lián)機(jī)通訊口、波特率(使用WAVE軟件模擬方式時(shí)無(wú)須設(shè)置)。5.進(jìn)入“文本編輯器”標(biāo)簽,設(shè)置“字體”(建議使用“Fixedsys”字體),而其他選項(xiàng)可使用缺省設(shè)置。6.

使用WAVE編譯器及WAVE預(yù)定義符號(hào)時(shí),最好進(jìn)入“匯編預(yù)定義符號(hào)”窗口,重新設(shè)置MCS-51定時(shí)/計(jì)數(shù)器T2控制寄存器T2CON位尋址功能。1、選擇仿真器、仿真頭類型及CPU型號(hào)

同時(shí)指定包括仿真方式,當(dāng)選擇模擬仿真方式還需要設(shè)置晶振頻率。單片機(jī)原理與應(yīng)用2024/1/15●設(shè)置仿真不同仿真頭、不同CPU,該設(shè)置窗內(nèi)容、設(shè)置項(xiàng)不同2.選擇仿真語(yǔ)言建議:在使用匯編語(yǔ)言情況下,建議選擇“偉福匯編器”,并使用偉福預(yù)定義符號(hào)。3.選擇“目標(biāo)文件”地址及種類一般僅需要選擇HEX(即十六進(jìn)制)文件,在調(diào)式階段最后將未用置為00單片機(jī)原理與應(yīng)用2024/1/154.選擇仿真器與PC機(jī)之間通訊端口及速率5.設(shè)置文件框2024/1/15單片機(jī)原理與應(yīng)用2024/1/15單片機(jī)原理與應(yīng)用2024/1/15單片機(jī)原理與應(yīng)用2024/1/15單片機(jī)原理與應(yīng)用2024/1/15單片機(jī)原理與應(yīng)用五、應(yīng)用程序編輯、編譯及運(yùn)行

1.

創(chuàng)建、編輯源程序執(zhí)行“文件”菜單下的“新文件”命令(或直接單擊“新文件”工具),創(chuàng)建新文件。2.

保存執(zhí)行保存操作,將未命名的文件保存(對(duì)于匯編語(yǔ)言源程序來(lái)說(shuō),最好立即保存,告訴編輯器文件類型,如.ASM等。這樣在編輯源程序過(guò)程中,變量、數(shù)據(jù)、標(biāo)號(hào)等就以“文本編輯器”設(shè)定的顏色顯示,直觀、排除了程序編輯過(guò)程中的錯(cuò)誤。3.

打開(kāi)已有文件2024/1/15單片機(jī)原理與應(yīng)用

4.

源程序編輯方法及技巧查找、復(fù)制、剪貼功能的應(yīng)用;源程序輸入過(guò)程的提示(指令編寫(xiě)錯(cuò)誤,數(shù)據(jù)格式錯(cuò)誤顏色不同)。5.

編譯6.

設(shè)置斷點(diǎn)7.

運(yùn)行運(yùn)行方式:全速、單步、跟蹤。

2024/1/15單片機(jī)原理與應(yīng)用六、應(yīng)用舉例

(1)

從“CPU窗口”了解執(zhí)行的機(jī)器碼及長(zhǎng)度、偽指令ORG的含義和作用。(2)

編譯后,通過(guò)“CPU窗口”理解標(biāo)號(hào)、變量定義、等值定義等偽指令含義和作用。利用單步執(zhí)行了解指令執(zhí)行時(shí)間(單位為us,可預(yù)先將晶振頻率設(shè)為12MHz,以便得到整數(shù)時(shí)間)。注意WAVE軟件默認(rèn)的時(shí)鐘模式是“12時(shí)鐘/機(jī)器周期”,對(duì)于6時(shí)鐘/機(jī)器周期來(lái)說(shuō),執(zhí)行時(shí)間要除2。

2024/1/15單片機(jī)原理與應(yīng)用(3)

理解復(fù)位后PC、SP等特殊功能寄存器的初值及復(fù)位內(nèi)部RAM的影響。(4)

理解工作寄存器區(qū)切換及R7~R0所對(duì)應(yīng)的物理地址(觀察工作寄存器切換前對(duì)寄存器R7~R0讀寫(xiě)結(jié)果)。(5)

設(shè)置定時(shí)/計(jì)數(shù)器工作方式后,可了解定時(shí)器T0、T1在定時(shí)狀態(tài)的運(yùn)行情況及定時(shí)溢出中斷。(6)

通過(guò)一個(gè)實(shí)際例子介紹程序調(diào)試方法。特殊功能寄存器、內(nèi)部RAM單元內(nèi)容瀏覽及修改;執(zhí)行方式、定位等。2024/1/15單片機(jī)原理與應(yīng)用

MCS-51系列單片機(jī)采用復(fù)雜指令系統(tǒng),共有42種操作碼助記符,支持直接尋址、寄存器尋址、間接尋址、立即數(shù)尋址、變址尋址、相對(duì)尋址、位尋址等七種尋址方式。不同指令操作碼助記符與不同尋址方式之間的組合就構(gòu)成了MCS-51系列單片機(jī)的指令系統(tǒng),共計(jì)111條。3.1MCS-51指令系統(tǒng)2024/1/15單片機(jī)原理與應(yīng)用數(shù)據(jù)傳送指令算術(shù)運(yùn)算指令邏輯運(yùn)算指令控制轉(zhuǎn)移指令位操作指令每一類型指令中又包含若干條指令。按功能可將這些指令分成:2024/1/15單片機(jī)原理與應(yīng)用在MCS-51指令系統(tǒng)中,數(shù)據(jù)傳送指令包括了:(1)

內(nèi)部RAM、特殊功能寄存器之間的數(shù)據(jù)傳送,這類指令用“MOV”作為指令操作碼助記符。(2)

外部RAM與累加器A之間的數(shù)據(jù)傳送,這類指令用“MOVX”作為指令操作碼助記符。(3)

程序存儲(chǔ)器讀指令,即程序存儲(chǔ)器ROM與累加器A之間數(shù)據(jù)指令,這類指令用“MOVC”作為指令操作碼助記符。(4)

堆棧操作指令。(5)字節(jié)交換指令。3.1.1數(shù)據(jù)傳送指令2024/1/15單片機(jī)原理與應(yīng)用MCS-51數(shù)據(jù)傳送示意圖2024/1/15單片機(jī)原理與應(yīng)用

數(shù)據(jù)傳送指令一般不影響程序狀態(tài)字寄存器PSW中的標(biāo)志位,只有當(dāng)數(shù)據(jù)傳送到累加器A時(shí),PSW中的奇偶標(biāo)志位P會(huì)改變,原因是奇偶標(biāo)志位P總是體現(xiàn)累加器A中“1”的個(gè)數(shù)的奇偶性。當(dāng)累加器Acc為0時(shí),Z(零)標(biāo)志置1;反之Z標(biāo)志清0。因此當(dāng)目的操作數(shù)為累加器Acc時(shí),數(shù)據(jù)傳送指令會(huì)影響Z標(biāo)志。數(shù)據(jù)傳送指令執(zhí)行后特點(diǎn):2024/1/15單片機(jī)原理與應(yīng)用1.內(nèi)部RAM、特殊功能寄存器之間的數(shù)據(jù)傳送指令名稱指令格式機(jī)器碼功能指令周期以累加器A作為目的操作數(shù)MOVA,Rn11101rrrA←Rn1MOVA,direct11100101directA←(direct)1MOVA,@Ri1110011iA←(Ri)1MOVA,#data01110100dataA←data1以Rn寄存器作為目的操作數(shù)MOVRn,A11111rrrRn←A1MOVRn,direct10101rrrdirectRn←(direct)2MOVRn,#data01111rrrdataRn←data1以直接地址direct作為目的操作數(shù)MOVdirect,A11110101directdirect←A1MOVdirect,Rn10001rrrdirect(direct)←Rn2MOVdirect2,direct110000101direct1direct2(direct2)←(direct1)2MOVdirect,@Ri1000011idirect(direct)←(Ri)2MOVdirect,#data01110101directdata(direct)←data2

以Ri寄存器間接地址為目的操作數(shù)MOV@Ri,A1111011i(Ri)←A2MOV@Ri,direct1010011idirect(Ri)←(direct)2MOV@Ri,#data0111011idata(Ri)←data116立即數(shù)傳送MOVDPTR,#data1610010000D15~D8D7~D0DPH←D15~D8DPL←D7~D022024/1/15單片機(jī)原理與應(yīng)用MOVA,#5AH;Acc←立即數(shù)MOVB,A;B←Acc。特殊功能寄存器間數(shù)據(jù)傳輸MOVA,P1;Acc←P1口,讀P1口I/O引腳狀態(tài)MOV30H,A ;30H←Acc,寄存器與RAM之間MOV38H,30H ;內(nèi)部RAM單元之間數(shù)據(jù)傳送MOVR0,#38H ;內(nèi)部RAM與累加器Acc數(shù)據(jù)傳送MOVA,@R0單片機(jī)原理與應(yīng)用2024/1/152.外部RAM及I/O端口與累加器A之間的數(shù)據(jù)傳送

在MCS-51系統(tǒng)中,由于擴(kuò)展I/O端口與外部RAM統(tǒng)一編碼,即擴(kuò)展I/O端口地址占用外部RAM地址空間的某一單元,因此外部RAM及擴(kuò)展I/O端口的讀寫(xiě)操作指令、操作時(shí)序完全相同。只能通過(guò)累加器A存取外部RAM和擴(kuò)展I/O端口,這類指令操作碼助記符為“MOVX”,其中“X”的含義是“eXternal”(外部),指令格式、機(jī)器碼如表示3-2所示。指令名稱指令格式機(jī)器碼功能指令周期累加器A與外部RAM之間的數(shù)據(jù)傳送MOVXA,@DPTR11100000A←(DPTR)2MOVX@DPTR,A11110000(DPTR)←A2MOVXA,@Ri1110001iA←(Ri)2MOVX@Ri,A1111001i(Ri)←A2單片機(jī)原理與應(yīng)用2024/1/153.累加器A與程序存儲(chǔ)器ROM之間的數(shù)據(jù)傳送指令

為了取出存放在程序存儲(chǔ)器中的表格數(shù)據(jù),MCS-51提供了兩條查表指令,這兩條指令的操作碼助記符為“MOVC”,其中“C”的含義是“Code(代碼)”,表示操作對(duì)象是程序存儲(chǔ)器,指令格式、機(jī)器碼如表3-3所示。指令名稱指令格式機(jī)器碼功能指令周期查表指令MOVCA,@A+DPTR10010011A←(A+DPTR)2MOVCA,@A+PC10000011A←(A+PC)2單片機(jī)原理與應(yīng)用2024/1/154.堆棧操作指令

堆棧操作也是計(jì)算機(jī)系統(tǒng)基本操作之一。設(shè)置堆棧操作的目的是為了迅速保護(hù)斷點(diǎn)和現(xiàn)場(chǎng),以便在子程序或中斷服務(wù)子程序運(yùn)行結(jié)束后,能正確返回主程序。MCS-51堆棧操作指令格式、機(jī)器碼如表3-4所示。指令名稱指令格式機(jī)器碼功能指令周期數(shù)據(jù)入棧PUSHdirect11000000directSP←SP+1(SP)←(direct)2數(shù)據(jù)出棧POPdirect11010000direct(direct)←(SP)SP←SP-125.字節(jié)交換指令

字節(jié)交換指令也屬于數(shù)據(jù)傳送指令范疇,不過(guò)交換后,源操作數(shù)與目的操作數(shù)內(nèi)容相互對(duì)調(diào),MCS-51提供了四條字節(jié)交換指令和兩條半字節(jié)交換指令,這些指令格式、機(jī)器碼如表3-5所示。指令名稱指令格式機(jī)器碼功能指令周期字節(jié)交換指令XCHA,Rn11001rrrA和Rn內(nèi)容對(duì)調(diào)1XCHA,direct11000101directA和(direct)內(nèi)容對(duì)調(diào)1XCHA,@Ri1100011iA和(Ri)內(nèi)容對(duì)調(diào)1低4位對(duì)調(diào)XCHDA,@Ri1101011iA低4位和(Ri)低4位對(duì)調(diào)1累加器半字節(jié)交換SWAPA11000100A高4位與A低4位對(duì)調(diào)1表3-5MCS-51交換指令

單片機(jī)原理與應(yīng)用2024/1/153.1.2算術(shù)運(yùn)算指令

MCS-51提供了豐富的算術(shù)運(yùn)算指令,如加法運(yùn)算、減法運(yùn)算、增1指令、減1指令以及乘法、除法指令等。一般情況下,算術(shù)運(yùn)算指令執(zhí)行后會(huì)影響程序狀態(tài)字寄存器PWS中相應(yīng)的標(biāo)志位。1.加法指令

加法指令操作碼助記符、指令格式以及機(jī)器碼如表3-6所示。指令名稱指令格式機(jī)器碼功能指令周期不帶進(jìn)位加法指令

ADDA,Rn00101rrrA←A+Rn1ADDA,direct00100101directA←A+(direct)1ADDA,@Ri0010011iA←A+(Ri)1ADDA,#data00100100dataA←A+data1

帶進(jìn)位加法指令

ADDCA,Rn00111rrrA←A+Rn+Cy1ADDCA,direct00110101directA←A+(direct)+Cy1ADDCA,@Ri0011011iA←A+(Ri)+Cy1ADDCA,#data00110100dataA←A+data+Cy1

單片機(jī)原理與應(yīng)用2024/1/152.減法指令

減法指令操作碼助記符、指令格式以及機(jī)器碼如表3-7所示。表3-7MCS-51減法指令指令名稱指令格式機(jī)器碼功能指令周期帶借位減法指令

SUBBA,Rn10011rrrA←A-Rn-Cy1SUBBA,direct10010101directA←A-(direct)-Cy1SUBBA,@Ri1001011iA←A-(Ri)-Cy1SUBBA,#data10010100dataA←A-data-Cy1

2024/1/15單片機(jī)原理與應(yīng)用MCS-51只有帶借位的減法指令,被減數(shù)是累加器A,減數(shù)可以是內(nèi)部RAM、特殊功能寄存器或立即數(shù)之一,結(jié)果存放在累加器A中。與加法指令類似,操作結(jié)果同樣會(huì)影響標(biāo)志位:Cy為1,表示被減數(shù)小于減數(shù),產(chǎn)生借位;OV同樣用于判別兩個(gè)帶符號(hào)數(shù)相減后,差是否超出8位帶符號(hào)數(shù)所能表示的范圍(-128~+127)。當(dāng)兩個(gè)異號(hào)數(shù)相減時(shí),差的符號(hào)與被減數(shù)相反,則溢出標(biāo)志OV為1,結(jié)果不正確!例如,被減數(shù)為正數(shù),減數(shù)為負(fù)數(shù),相減后,結(jié)果應(yīng)該是正數(shù),但如果累加器A的b7為1,即負(fù)數(shù),則表明結(jié)果不正確。相減時(shí),如果b3位向b4位借位,則Ac為1;反之為0。奇偶標(biāo)志P總是體現(xiàn)累加器A中“1”的奇偶性,因此P也會(huì)變化。由于MCS-51指令系統(tǒng)只有帶借位的減法指令,因此,當(dāng)需要執(zhí)行不帶借位的減法指令時(shí),可先通過(guò)“CLRC”指令,將進(jìn)位標(biāo)志Cy清0。3.加1指令

加1指令也稱為“增量指令”,操作結(jié)果是操作數(shù)加1。加1指令操作碼助記符、指令格式以及機(jī)器碼如表3-8所示。

指令名稱指令格式機(jī)器碼功能指令周期增量指令

INCA00000100A←A+11INCRn00001rrrRn←Rn+11INCdirect00000101direct(direct)←(direct)+11INC@Ri0000011i(Ri)←(Ri)+11INCDPTR10100011DPTR←DPTR+12表3-8MCS-51加1指令

加1指令不影響標(biāo)志位,只有操作對(duì)象為累加器A時(shí),才影響奇偶標(biāo)志位P。當(dāng)操作數(shù)初值為0FFH,則加1后,將變?yōu)?0H。盡管加1指令與加數(shù)為1的加法指令同樣會(huì)使操作數(shù)增1,但彼此并不完全相同,例如:INCA ;通過(guò)增量指令使累加器A內(nèi)容加1。該指令除了影響奇偶標(biāo)志位P外,不影響其他標(biāo)志位。ADDA,#01H ;通過(guò)加法指令使累加器A內(nèi)容加1。該指令同樣會(huì)使累加器A內(nèi)容加1,但該指令將影響Cy、OV、Ac以及P標(biāo)志位,且指令機(jī)器碼占用兩個(gè)字節(jié)。當(dāng)操作數(shù)是某一I/O口,如“INCP1”時(shí),先將P1口鎖存器內(nèi)容讀出,加1后,再寫(xiě)入P1口鎖存器中,因此INCPi(i=0,1,2,3)屬于“讀-改-寫(xiě)”指令。4.減1指令

減1指令使操作數(shù)減1。減1指令操作碼助記符、指令格式以及機(jī)器碼如表3-9所示。表3-9MCS-51減1指令指令名稱指令格式機(jī)器碼功能指令周期減1指令

DECA00010100A←A-11DECRn00011rrrRn←Rn-11DECdirect00010101direct(direct)←(direct)-11DEC@Ri0001011i(Ri)←(Ri)-112024/1/15單片機(jī)原理與應(yīng)用

與加1指令情況類似,減1指令也不影響標(biāo)志位,只有當(dāng)操作數(shù)是累加器A時(shí),才影響奇偶標(biāo)志位P。當(dāng)操作數(shù)的初值為00H時(shí),減1后,結(jié)果將變?yōu)镕FH。其他情況與加1指令類似。單片機(jī)原理與應(yīng)用2024/1/155.乘法指令

MCS-51提供了8位無(wú)符號(hào)數(shù)乘法指令,該指令操作碼助記符、指令格式、機(jī)器碼如表3-10所示。表3-10MCS-51乘法指令指令名稱指令格式機(jī)器碼功能指令周期A×BMULAB10100100BA←A×B4

被乘數(shù)放在累加器A(8位無(wú)符號(hào)數(shù))中,乘數(shù)放在寄存器B(8位無(wú)符號(hào)數(shù))中,乘積(16位無(wú)符號(hào)數(shù))的高8位放在寄存器B中,低8位放在累加器A中。2024/1/15單片機(jī)原理與應(yīng)用MCS-51沒(méi)有提供8位×16位、16位×16位、16位×24位等多字節(jié)乘法指令,只能通過(guò)單字節(jié)乘法指令完成多字節(jié)乘法運(yùn)算。例如24位×16乘法可通過(guò)如下方法實(shí)現(xiàn):位24位被乘數(shù)占用3字節(jié),用CBA表示;16位乘數(shù)占用2字節(jié),用ED表示,乘積應(yīng)該為40位。顯然“A*D”為16位,“B*D”為24位,“C*D”為32位;“A*E”為24位,“B*D”為32位,“E*C”為40位。因此,可采用如圖3-2所示算法完成24位×16位運(yùn)算。2024/1/15單片機(jī)原理與應(yīng)用圖3-224位×16位算法圖單片機(jī)原理與應(yīng)用2024/1/156.除法指令

MCS-51提供了8位無(wú)符號(hào)數(shù)除法指令,該指令操作碼助記符、指令格式、機(jī)器碼如表3-11所示。表3-11MCS-51除法指令指令名稱指令格式機(jī)器碼功能指令周期A÷BDIVAB10000100A(商)←A÷BB(余數(shù))←A÷B42024/1/15單片機(jī)原理與應(yīng)用

被除數(shù)放在累加器A(8位無(wú)符號(hào)數(shù))中,除數(shù)放在寄存器B(8位無(wú)符號(hào)數(shù))中,商(8位無(wú)符號(hào)數(shù))放在累加器A中,余數(shù)(8位無(wú)符號(hào)數(shù))放在寄存器B中。顯然余數(shù)取值范圍為0~(除數(shù)-1)。該指令影響標(biāo)志位:如果除數(shù)(即寄存器B)不為0,執(zhí)行執(zhí)行后,溢出標(biāo)志OV、進(jìn)位標(biāo)志Cy總為0;如果除數(shù)為0,執(zhí)行后,結(jié)果將不確定,OV置1,Cy仍為0。AC保持不變;奇偶標(biāo)志P位隨累加器A中“1”的個(gè)數(shù)變化而變化。盡管MCS-51沒(méi)有提供16位÷8位、32位÷16位等多位除法運(yùn)算指令,只能借助類似多項(xiàng)式除法運(yùn)算規(guī)則完成多位除法運(yùn)算。單片機(jī)原理與應(yīng)用2024/1/157.十進(jìn)制加法調(diào)正指令

十進(jìn)制加法調(diào)正操作碼助記符、指令格式、機(jī)器碼如表3-12所示。表3-12MCS-51BCD加法調(diào)正指令指令名稱指令格式機(jī)器碼功能指令周期BCD加法調(diào)正DAA11010100根據(jù)進(jìn)位標(biāo)志Cy、輔助進(jìn)位標(biāo)志Ac以及累加器A內(nèi)容,將累加器A內(nèi)容轉(zhuǎn)化為BCD碼形式1單片機(jī)原理與應(yīng)用2024/1/153.1.3邏輯運(yùn)算指令

邏輯運(yùn)算在計(jì)算機(jī)指令系統(tǒng)中,占有極重要的位置。MCS-51提供了豐富的邏輯運(yùn)算指令,包括邏輯非(取反)、與、或、異或以及循環(huán)移位操作等。邏輯運(yùn)算指令格式、操作碼助記符、機(jī)器碼等如表3-13所示。

指令名稱指令格式機(jī)器碼功能指令周期累加器A清0CLRA11100100A←01邏輯非(取反)CPLA11110100A←1邏輯與

ANLA,Rn01011rrrA←A∧Rn1ANLA,direct01010101directA←A∧(direct)1ANLA,@Ri0101011iA←A∧(Ri)1ANLA,#data01010100dataA←A∧data1ANLdirect,A01010010direct(direct)←(direct)∧A1ANLdirect,#data01010011directdata(direct)←(direct)∧#data2表3-13MCS-51邏輯運(yùn)算指令(1)指令名稱指令格式機(jī)器碼功能指令周期邏輯或ORLA,Rn01001rrrA←A∨Rn1ORLA,direct01000101directA←A∨(direct)1ORLA,@Ri0100011iA←A∨(Ri)1ORLA,#data01000100dataA←A∨data1

ORLdirect,A01000010direct(direct)←(direct)∨A1ORLdirect,#data01000011directdata(direct)←(direct)∨#data2邏輯異或

XRLA,Rn01101rrrA←ARn1XRLA,direct01100101directA←A(direct)1XRLA,@Ri0110011iA←A(Ri)1XRLA,#data01100100dataA←Adata1

XRLdirect,A01100010direct(direct)←(direct)A1XRLdirect,#data01100011directdata(direct)←(direct)#data2表3-13MCS-51邏輯運(yùn)算指令(2)2024/1/15單片機(jī)原理與應(yīng)用指令名稱指令格式機(jī)器碼功能指令周期循環(huán)移位向左循環(huán)移位左循環(huán)移位RLA00100011←b7←b0←1帶Cy左循環(huán)RLCA

00110011

←Cy←b7←b0←1向右循環(huán)移位右循環(huán)移位RRA

00000011

→b7→b0→1帶Cy右循環(huán)RRCA

00010011

→Cy→b7→b0→1表3-13MCS-51邏輯運(yùn)算指令(3)3.1.4位操作指令

位操作指令在單片機(jī)指令系統(tǒng)占有重要地位,這是因?yàn)閱纹瑱C(jī)在控制系統(tǒng)中主要用于控制線路通、斷,繼電器的吸合與釋放等。因此,多數(shù)8位機(jī)依然保留了一位機(jī)功能,即提供了完整的位尋址功能和位操作指令。MCS-51單片機(jī)具有豐富的位操作指令,在位運(yùn)算指令中,進(jìn)位標(biāo)志Cy的作用類似于字節(jié)運(yùn)算指令中的累加器A,因此Cy在位操作指令中,被稱為“位累加器”。MCS-51內(nèi)部RAM字節(jié)地址20H~2FH單元是位存儲(chǔ)區(qū)(16字節(jié)×8位,共128個(gè)位),位存儲(chǔ)器地址編碼從00~7FH,即20H字節(jié)地址b0位的位地址為00H,b1位的位地址為01H,…2FH字節(jié)地址的b7位的位地址為7FH。此外,許多特殊功能寄存器,如P0~P3口鎖存器、程序狀態(tài)字PSW、定時(shí)/計(jì)數(shù)器控制寄存器TCON等均具有位尋址功能。因此,位存儲(chǔ)器包括了內(nèi)部RAM中20H~2FH單元的位存儲(chǔ)區(qū)以及特殊功能寄存器中支持位尋址的所有位。MCS-51位操作指令操作碼助記符、指令格式、機(jī)器碼等如表3-14所示。

指令名稱指令格式機(jī)器碼功能指令周期位傳送MOVC,bit10100010bitC←(bit)1MOVbit,C10010010bit(bit)←C2位變量修改位清0CLRC11000011C←01CLRbit11000010bit(bit)←01位置1SETBC11010011C←11SETBbit11010010bit(bit)←11位取反CPLC10110011C←1CPLbit10110010bit(bit)←1位邏輯運(yùn)算邏輯與ANLC,bit10000010bitC←C∧(bit)2ANLC,/bit10110000bitC←C∧2邏輯或ORLC,bit01110010bitC←C∨(bit)2ORLC,/bit10100000bitC←C∨2單片機(jī)原理與應(yīng)用2024/1/153.1.5控制及轉(zhuǎn)移指令

以上介紹的指令均屬于順序執(zhí)行指令,即執(zhí)行了當(dāng)前指令后,接著就執(zhí)行下一條指令。但在計(jì)算機(jī)中,只有順序執(zhí)行指令是不夠的,更一般的情況是:執(zhí)行了當(dāng)前指令后,往往需要根據(jù)執(zhí)行結(jié)果做出判別:繼續(xù)執(zhí)行隨后的指令,還是轉(zhuǎn)去執(zhí)行其他的指令系列,這就需要控制和轉(zhuǎn)移指令??刂妻D(zhuǎn)移指令包括跳轉(zhuǎn)指令、調(diào)用指令、返回指令以及停機(jī)指令等。2024/1/15單片機(jī)原理與應(yīng)用3.2匯編語(yǔ)言程序設(shè)計(jì)基礎(chǔ)

介紹了MCS-51指令系統(tǒng)后,這一節(jié)簡(jiǎn)要介紹匯編語(yǔ)言程序結(jié)構(gòu)、程序設(shè)計(jì)方法、技巧及注意事項(xiàng)等方面的基礎(chǔ)知識(shí)。3.2.1匯編語(yǔ)言程序結(jié)構(gòu)

1.MCS-51程序總體結(jié)構(gòu)

MCS-51匯編語(yǔ)言源程序一般由主程序、完成特定操作的子程序(可能不止一個(gè))及相應(yīng)功能的中斷服務(wù)程序等部分組成,結(jié)構(gòu)如下:;---------------程序頭(即定義變量和等值符號(hào))---------

SCL BITP1.2 ;定義SCL位變量

…… ORG0000H LJMPMain;------------------主程序------------------------ ORGyyyy ;其中yyyy就是主程序代碼存放區(qū)的首地 ;址,如0100H。Main:

MOVR2,#248 MOVR0,#08HLOOPIC:

MOV@R0,#00H INCR0 DJNZR2,LOOPIC ;內(nèi)部RAM清0

MOVSP,#7FH ;初始化有關(guān)寄存器,如設(shè)置堆棧指針SP、初始化外設(shè)控制寄 ;存器,如中斷控制寄存器、定時(shí)/計(jì)數(shù)器控制寄存器等。

…… ;主程序?qū)嶓w,具體指令由程序功能決定。

LCALLSUB1 ;調(diào)用子程序1,其中SUB1為子程序名。

……

;------------------子程序結(jié)構(gòu)------------------------ SUB1:

PUSHPSW PUSHACC ;通過(guò)PUSH指令保護(hù)子程序中用到的有關(guān)寄存器,如Acc、

;PSW等,即保護(hù)現(xiàn)場(chǎng)。

…… ;子程序?qū)嶓w,具體指令由程序功能決定。

POPACC POPPSW ;恢復(fù)現(xiàn)場(chǎng)。

RET ;子程序最后一條指令,使子程序運(yùn)行結(jié)束,返回主程序斷點(diǎn)。;------------------中斷服務(wù)程序結(jié)構(gòu)------------------------ PUSHPSW PUSHACC ;通過(guò)PUSH指令保護(hù)中斷服務(wù)程序中用到的有關(guān)寄存器。

SETBRS0 CLRRS1 ;切換工作區(qū)(這里假設(shè)使用1區(qū))

…… ;中斷服務(wù)程序?qū)嶓w

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論