版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第第3章章 指令系統(tǒng)指令系統(tǒng)第第3章章 指令系統(tǒng)指令系統(tǒng)3.1 80C51單片機(jī)匯編語言與指令格式單片機(jī)匯編語言與指令格式3.2 尋址方式尋址方式3.3 80C51單片機(jī)指令系統(tǒng)單片機(jī)指令系統(tǒng)第第3章章 指令系統(tǒng)指令系統(tǒng)3.1 MCS513.1 MCS51單片機(jī)匯編語言與指令格式單片機(jī)匯編語言與指令格式 3.1.1 單片機(jī)的匯編語言 由構(gòu)成計算機(jī)的電子器件特性所決定, 計算機(jī)只能識別二進(jìn)制代碼。這種以二進(jìn)制代碼來描述指令功能的語言, 稱之為機(jī)器語言機(jī)器語言, 用機(jī)器語言組成的程序, 稱為目標(biāo)程序目標(biāo)程序。計算機(jī)就是按照機(jī)器語言的指令來完成各種功能操作的, 它具有程序簡捷、占用存儲空間小、執(zhí)行速
2、度快、控制功能強(qiáng)等特點(diǎn)。匯編語言匯編語言:機(jī)器語言的助記符。在51單片機(jī)指令系統(tǒng)中機(jī)器語言表示為:75H,90H、0D5H;匯編語言表示為:MOV P1,#0D5H。在運(yùn)行前需要將匯編語言源程序匯編語言源程序翻譯成機(jī)器語言單片機(jī)才能運(yùn)行。將匯編語言源程序翻譯成機(jī)器語言的程序稱為匯編程序(編譯程序)。第第3章章 指令系統(tǒng)指令系統(tǒng) 3.1.2 指令格式 51系列單片機(jī)匯編語言指令的標(biāo)準(zhǔn)格式如下: 標(biāo)號標(biāo)號: :操作碼目的操作數(shù)操作碼目的操作數(shù), ,源操作數(shù)源操作數(shù); ; 注注釋釋 例如: LABEL: ADD A,10H ; (A)(A)+10H (1) 方括號 表示該項是可選項, 可有可無。 (
3、2) 標(biāo)號是用戶設(shè)定的符號, 它實際代表該指令所在的地址。標(biāo)號必須以字母開頭, 其后跟18個字母或數(shù)字, 并以“:”結(jié)尾。使用標(biāo)號主要便于編程和查詢。 (3) 操作碼是用英文縮寫的指令功能助記符。它確定了本條指令完成什么樣的操作功能。如:ADD表示加法操作。任何一條指令都必須有該助記符項, 不得省略。第第3章章 指令系統(tǒng)指令系統(tǒng) (4) 目的操作數(shù)提供操作的對象, 并指出一個目標(biāo)地址, 表示操作結(jié)果存放單元的地址, 它與操作碼之間必須以一個或幾個空格分隔。 如上例中A表示操作對象是累加器A的內(nèi)容, 并指出操作結(jié)果又回送A存放。 (5) 源操作數(shù)指出的是一個源地址(或立即數(shù)), 表示操作的對象或
4、操作數(shù)來自何處。它與目的操作數(shù)之間要用“,”號隔開。 (6) 注釋部分是在編寫程序時,為了增加程序的可讀性, 由用戶擬寫對該條指令或該段程序功能的說明。它以分號“;”開頭, 可以用中文、英文或某些符號來表示, 顯然它不存入單片機(jī), 只出現(xiàn)在源程序中。第第3章章 指令系統(tǒng)指令系統(tǒng) 3.1.3 指令中常用符號 在分類介紹各類指令之前, 先對描述指令的一些符號意義進(jìn)行一些簡單約定: (1) Ri和Rn: R表示當(dāng)前工作寄存器組中的工作寄存器, i表示0或1, 即R0和R1。 n表示07,即R0R7, 當(dāng)前工作寄存器的選定是由PSW的RS1和RS0位決定的。 (2) data: 表示立即數(shù), data
5、為8位常數(shù)。data是指包含在指令中的8位立即數(shù)。 第第3章章 指令系統(tǒng)指令系統(tǒng) (3) data16: 包含在指令中的16位立即數(shù)。 (4) rel:相對地址,以補(bǔ)碼形式表示的地址偏移量, 范圍為-128+127, 主要用于無條件相對短轉(zhuǎn)移指令SJMP和所有的條件轉(zhuǎn)移指令中。 (5) addr16: 16位的目的地址。目的地址可在全部程序存儲器的64 KB空間范圍內(nèi), 主要用于無條件長轉(zhuǎn)移指令LJMP和子程序長調(diào)用指令LCALL中。 (6) addr11: 11位目的地址。目的地址應(yīng)與下條指令處于相同的2KB程序存儲器地址空間范圍內(nèi), 主要用于絕對轉(zhuǎn)移指令A(yù)JMP和子程序絕對調(diào)用指令A(yù)CAL
6、L指令中。 第第3章章 指令系統(tǒng)指令系統(tǒng) (7) direct: 表示直接尋址的地址, 即8位內(nèi)部數(shù)據(jù)存儲器RAM的單元地址(0127/255), 或特殊功能寄存器SFR的地址。 對于SFR可直接用其名稱來代替其直接地址。 (8) bit: 內(nèi)部數(shù)據(jù)存儲器RAM和特殊功能寄存器SFR中的可直接尋址位地址。 (9) : 間接尋址寄存器或基地址寄存器的前綴, 如Ri, DPTR, 表示寄存器間接尋址。 第第3章章 指令系統(tǒng)指令系統(tǒng) (10) (X): 表示X中的內(nèi)容。 (11) (X): 表示由X尋址的單元中的內(nèi)容, 即(X)作地址, 該地址的內(nèi)容用(X)表示。 (12) / / 和符號: / /
7、表示對該位操作數(shù)取反, 但不影響該位的原值。 表示指令操作流程, 將箭頭一方的內(nèi)容, 送入箭頭另一方的單元中去。 第第3章章 指令系統(tǒng)指令系統(tǒng) 尋址方式通俗一點(diǎn)說就是尋找“東西”的方式。 “東西”就是要找的操作數(shù)。如何找“東西”就是尋址方式。首先還是讓我們回到日常生活中看一看。 某先生對張三說:“你到404去借本資料!”這里的“404”是直接地址,直接到404就可以拿到需要的東西。3.2 3.2 尋址方式尋址方式第第3章章 指令系統(tǒng)指令系統(tǒng) 3.2.1寄存器尋址 選定某寄存器,自該寄存器中讀取或存放操作數(shù), 以完成指令規(guī)定的操作, 稱為寄存器尋址。 例如: MOV A, R0 ; (A)(R0
8、) 該指令的功能是把工作寄存器R0中的內(nèi)容傳送到累加器A中, 如: R0內(nèi)容為FFH, 則執(zhí)該指令后A的內(nèi)容也為FFH。 在該條指令中, 源操作數(shù)和目的操作數(shù)是由尋址R0和A寄存器得到的, 故屬于寄存器尋址。該指令為單字節(jié)指令, 機(jī)器代碼為E8H。 寄存器尋址對所選的工作寄存器組中R0R7、累加器A、數(shù)據(jù)指針DPTR等進(jìn)行操作。第第3章章 指令系統(tǒng)指令系統(tǒng) 3.2.2 立即尋址 操作數(shù)直接出現(xiàn)在指令中, 它緊跟在操作碼的后面, 作為指令的一部分與操作碼一起存放在程序存儲器內(nèi),可以立即得到并執(zhí)行, 不需要另去寄存器或存儲器等處尋找和取數(shù), 故稱為立即尋址。 該操作數(shù)稱為立即數(shù), 并在其前冠以“”
9、號作前綴, 以表示并非地址。立即數(shù)可以是8位或16位, 用十六進(jìn)制數(shù)表示。 MOV A ,#3AHACC(3AH)PCPC+10111010000111010第第3章章 指令系統(tǒng)指令系統(tǒng) 例如: MOV A, 3AH ; (A)3AH 該指令的功能是將立即數(shù)3AH傳送到累加器A中, 對應(yīng)的機(jī)器碼為74H。 它隱含了寄存器尋址累加器A方式, 長度一個字節(jié), 占用一個存儲單元; 立即數(shù)3AH緊跟在操作碼之后, 成為指令代碼的一部分, 長度也是一個字節(jié), 占用緊跟在后面的另一個存儲單元。故該指令為雙字節(jié)指令, 其機(jī)器碼為74H 3AH。 第第3章章 指令系統(tǒng)指令系統(tǒng) 3.2.3寄存器間接尋址 由指令
10、指出某一個寄存器的內(nèi)容作為操作數(shù)地址的尋址方法, 稱為寄存器間接尋址方法,簡稱寄存器間址。 這里要強(qiáng)調(diào)的是: 寄存器的內(nèi)容不是操作數(shù)本身, 而是操作數(shù)地址。 寄存器間接尋址使用所選定寄存器組中的R0和R1作為地址指針(對堆棧操作時,使用堆棧指針SP),來尋址片內(nèi)數(shù)據(jù)存儲器RAM(00FFH)的256個單元, 但它不能訪問特殊功能寄存器SFR。寄存器間接尋址也適用于訪問外部數(shù)據(jù)存儲器,此時,用R0、R1或DPTR作為地址指針。寄存器間接尋址用符號“”指明。 如指令 MOV A,R1 ;可表示為: (A)(R1)第第3章章 指令系統(tǒng)指令系統(tǒng)圖圖31 寄存器間接尋址示意圖寄存器間接尋址示意圖 第第3
11、章章 指令系統(tǒng)指令系統(tǒng) 3.2.4 直接尋址 指令中直接給出操作數(shù)所在的存儲器地址, 以供尋址取數(shù)或存數(shù)的尋址方式稱為直接尋址。 例如: MOV A, 40H ; (A)(40H) 該指令的功能是把內(nèi)部數(shù)據(jù)存儲器RAM 40H單元內(nèi)的內(nèi)容送到累加器A。 指令直接給出了源操作數(shù)的地址40H。 該指令的機(jī)器碼為E5H 40H。 第第3章章 指令系統(tǒng)指令系統(tǒng) 3.2.5 變址尋址 基址寄存器加變址寄存器間接尋址, 簡稱變址尋址。 它以數(shù)據(jù)指針DPTR或程序計數(shù)器PC作為基址寄存器, 累加器A作為變址寄存器, 兩者的內(nèi)容相加形成16位程序存儲器地址, 該地址就是操作數(shù)所在地址。 例如: MOVC A,
12、 A+DPTR; (A)(A)+(DPTR) 該指令尋址及操作功能如圖32所示, 該指令為單字節(jié)指令, 機(jī)器代碼為93H。 這種尋址方式常用于訪問程序存儲器中的常數(shù)表。稱查表。第第3章章 指令系統(tǒng)指令系統(tǒng)圖圖32 32 變址尋址示意圖變址尋址示意圖 第第3章章 指令系統(tǒng)指令系統(tǒng) 3.2.6 相對尋址 相對尋址是以當(dāng)前程序計數(shù)器PC值加上指令規(guī)定的偏移量rel , 而構(gòu)成實際操作數(shù)地址的尋址方法。它用于訪問程序存儲器, 常出現(xiàn)在相對轉(zhuǎn)移指令中。 在使用相對尋址時要注意以下兩點(diǎn): 第一, 當(dāng)前當(dāng)前PCPC值值是指相對轉(zhuǎn)移指令所在地址加上該轉(zhuǎn)移指令的字節(jié)數(shù)。 即: 當(dāng)前PC值 = 轉(zhuǎn)移指令所在地址
13、+ 轉(zhuǎn)移指令的字節(jié)數(shù)。 例如: JZ rel 是一條累加器A為零就轉(zhuǎn)移的雙字節(jié)指令。 若該指令地址為2050H, 則執(zhí)行該指令時的當(dāng)前PC值即為2052H。 第第3章章 指令系統(tǒng)指令系統(tǒng) 第二, 偏移量rel是有符號的單字節(jié)數(shù),以補(bǔ)碼表示,其相對值的范圍是-128+127(即00HFFH), 負(fù)數(shù)表示從當(dāng)前地址向上轉(zhuǎn)移, 正數(shù)表示從當(dāng)前地址向下轉(zhuǎn)移。 所以, 相對轉(zhuǎn)移指令滿足條件后, 轉(zhuǎn)移的地址(一般稱為目的地址)應(yīng)為: 目的地址 = 當(dāng)前PC值 + rel =轉(zhuǎn)移指令所在地址 + 轉(zhuǎn)移指令字節(jié)數(shù) + rel;例如: 指令JZ 08H 和 JZ 0F4H 表示累加器A為零條件滿足后, 從源地址
14、(2050H)分別向下、 向上轉(zhuǎn)移10個單元。 其相對尋址示意如圖33(a)、 (b)所示。 這兩條指令均為雙字節(jié)指令, 機(jī)器代碼分別為: 60H 08H和60H F4H。 第第3章章 指令系統(tǒng)指令系統(tǒng) 圖圖33 相對尋址示意圖相對尋址示意圖(a)指令指令JZ 08H尋址示意圖;尋址示意圖; (b)指令指令JZ F4H尋址示意圖尋址示意圖 第第3章章 指令系統(tǒng)指令系統(tǒng) 3.2.7 位尋址 51系列單片機(jī)具有位尋址的功能, 即指令中直接給出位地址, 可以對內(nèi)部數(shù)據(jù)存儲器RAM中的128位和特殊寄存器SFR中的83位進(jìn)行尋址, 并且位操作指令可對地址空間的每一位進(jìn)行傳送及邏輯操作。 例如: SET
15、B PSW.3 ; (PSW.3)1 該指令的功能是給程序狀態(tài)字PSW中的RS0置1。 該指令為雙字節(jié)指令, 機(jī)器代碼為D2H D3H, 指令的第二字節(jié)直接給出位地址D3H(PSW.3的位地址)。第第3章章 指令系統(tǒng)指令系統(tǒng)綜上所述, 在51系列單片機(jī)的存儲空間中, 指令究竟對哪個存儲器空間進(jìn)行操作是由指令操作碼和尋址方式確定的。 7種尋址方式如表31所示。 表31 7 種尋址方式及使用空間 第第3章章 指令系統(tǒng)指令系統(tǒng)3.3 MCS513.3 MCS51單片機(jī)指令系統(tǒng)單片機(jī)指令系統(tǒng) 51單片機(jī)指令系統(tǒng)分為5大類:數(shù)據(jù)傳送類指令 29條算術(shù)運(yùn)算類指令 24條邏輯運(yùn)算及移位類指令 24條控制轉(zhuǎn)移
16、類指令 17 條位操作(布爾操作)指令 17 條 共計111條指令?,F(xiàn)按其分類分別介紹各條指令的格式、功能、對狀態(tài)標(biāo)志的影響對狀態(tài)標(biāo)志的影響以及應(yīng)用。 第第3章章 指令系統(tǒng)指令系統(tǒng) 3.3.1 數(shù)據(jù)傳送類指令 數(shù)據(jù)傳送類指令共29條, 它是指令系統(tǒng)中最活躍、 使用最多的一類指令。 一般的操作是把源操作數(shù)傳送到目的操作數(shù), 即指令執(zhí)行后目的操作數(shù)改為源操作數(shù), 而源操作數(shù)保持不變。若要求在進(jìn)行數(shù)據(jù)傳送時, 不丟失目的操作數(shù), 則可以用交換型傳送指令。 數(shù)據(jù)傳送類指令不影響不影響進(jìn)位標(biāo)志CY、半進(jìn)位標(biāo)志AC和溢出標(biāo)志OV, 但當(dāng)傳送或交換數(shù)據(jù)后影響累加器A的值時, 奇偶標(biāo)志P的值則按A的值重新設(shè)定
17、,Z標(biāo)志也會影響。 第第3章章 指令系統(tǒng)指令系統(tǒng)按數(shù)據(jù)傳送類指令的操作方式, 又可分為3種類型: 數(shù)據(jù)傳送 MOV、 MOVX、 MOVC數(shù)據(jù)交換 XCH、 XCHD、 SWAP堆棧操作 PUSH、POP 使用8種助記符 表32給出了各種數(shù)據(jù)傳送指令的操作碼助記符和對應(yīng)的操作數(shù)。 第第3章章 指令系統(tǒng)指令系統(tǒng)表32 數(shù)據(jù)傳送類指令助記符與操作 第第3章章 指令系統(tǒng)指令系統(tǒng)1. 內(nèi)部數(shù)據(jù)存儲器間數(shù)據(jù)傳送指令 內(nèi)部數(shù)據(jù)存儲器RAM區(qū)是數(shù)據(jù)傳送最活躍的區(qū)域, 可用的指令數(shù)也最多, 共有16條指令, 指令操作碼助記符為MOV。 內(nèi)部RAM之間源操作數(shù)傳遞關(guān)系如圖34所示。為了便于理解指令功能, 我們按
18、源操作數(shù)的尋址方式源操作數(shù)的尋址方式逐一介紹各條指令。 (1) 立即尋址。 在該尋址方式下, 內(nèi)部RAM區(qū)數(shù)據(jù)傳送指令有如下5條指令。 第第3章章 指令系統(tǒng)指令系統(tǒng)圖34 內(nèi)部RAM間數(shù)據(jù)傳遞關(guān)系 第第3章章 指令系統(tǒng)指令系統(tǒng)操作碼助記符操作碼助記符 目的操作數(shù)目的操作數(shù) 源操作數(shù)源操作數(shù) 功能注釋功能注釋 機(jī)器代碼機(jī)器代碼 MOV A, MOV A, datadata ; (A) data , 74 data MOV direct,MOV direct,datadata ;(direct)data ,75direct data MOV Ri, MOV Ri,datadata ; (Ri) d
19、ata , 7677 data MOV Rn, MOV Rn, datadata ; (Rn) data , 787F data MOV DPTR,MOV DPTR,data16data16 ;(DPTR) data16 ,90 data158 data70第第3章章 指令系統(tǒng)指令系統(tǒng) 這組指令表明, 8位立即數(shù)可以直接傳送到內(nèi)部數(shù)據(jù)區(qū)RAM的各個位置, 并且可把16位立即數(shù)直接裝入數(shù)據(jù)指針DPTR。 把立即數(shù)送入累加器A的傳送指令在3.2.2節(jié)中已作了介紹, 其它指令的功能及應(yīng)用舉例如下: MOV direct, MOV direct,data data ; (direct); (direc
20、t)data , 75 direct datadata , 75 direct data 該指令的功能是把立即數(shù)傳送到內(nèi)部數(shù)據(jù)存儲器RAM的00H7FH, 以及特殊功能寄存器SFR的各單元中去, 它為三字節(jié)指令。例如把立即數(shù)40H傳送到RAM的30H單元和P1口(口地址為90H), 可采用如下指令: MOV 30H,40H ; (30H) 40H, 75 30 40 MOV P1,40H ; (90H) 40H, 75 90 40第第3章章 指令系統(tǒng)指令系統(tǒng) MOV Ri, MOV Ri, data data ; (Ri) ; (Ri) data, 76data, 7677 data77 da
21、ta 該指令的功能是把立即數(shù)傳送到由R0和R1寄存器的內(nèi)容指出(為地址)的片內(nèi)數(shù)據(jù)存儲器RAM的單元中去(51子系列為00H7FH, 52子系列為00HFFH)。 MOV R0, 30H ; (R0) 30H , 76 30 MOV R1, 40H ; (R0) 40H , 77 40 假設(shè)(R0)=40H,(R1)=90H,則: 結(jié)果(40H)=30H,(90H)=40H這是什么地址?這是什么地址?第第3章章 指令系統(tǒng)指令系統(tǒng) MOV Rn, MOV Rn,datadata ;(Rn) ;(Rn)data ,78data ,787F data7F data 該指令的功能是把立即數(shù)傳送到內(nèi)部寄
22、存器R0R7中去,該指令為雙字節(jié)指令, 機(jī)器代碼為:0 1 1 1 1 r r rdata例如MOV R7,#40H結(jié)果(R7)=40H 機(jī)器碼7F ,40 第第3章章 指令系統(tǒng)指令系統(tǒng) MOV DPTR, MOV DPTR,data16data16;(DPTR)(DPTR)data16,data16,9090datadata15158 8 data data 7 70 0 該指令的功能是把16位立即數(shù)裝入數(shù)據(jù)指針DPTR中去。 它是51系列單片機(jī)指令系統(tǒng)中唯一的一條16位數(shù)據(jù)傳送指令。該指令為三字節(jié)指令, 第一字節(jié)為90H, 第二字節(jié)為高8位立即數(shù), 第三字節(jié)為低8位立即數(shù)。 例如: MOV
23、 DPTR, 1234H指令執(zhí)行后, DPTR寄存器的高8位寄存器DPH的內(nèi)容為12H, 低8位寄存器DPL內(nèi)容為34H。該指令的機(jī)器代碼為90H 12H 34H。 第第3章章 指令系統(tǒng)指令系統(tǒng) (2) (2) 寄存器尋址。寄存器尋址。 在該尋址方式下, 內(nèi)部RAM區(qū)數(shù)據(jù)傳送指令有以下5條: MOV direct,A;(direct)(A) , F5 directMOV Ri,A ; (Ri) (A) , F6F7MOV Rn,A ; (Rn) (A) , F8FFMOV A,Rn ; (A) (Rn) , E8EFMOV direct,Rn;(direct)(Rn),888F direct第
24、第3章章 指令系統(tǒng)指令系統(tǒng) 這組指令的功能是把累加器A的內(nèi)容傳送到內(nèi)部數(shù)據(jù)區(qū)RAM的各個單元,或者把指定工作寄存器R0R7中的內(nèi)容傳送到累加器A或direct所指定的片內(nèi)RAM的00H7FH單元或特殊功能寄存器SFR中去。但不能用這類指令在工作寄存器之間直接傳送。 例如:不存在MOV R1,R2這樣的指令。 第第3章章 指令系統(tǒng)指令系統(tǒng)(3) (3) 直接尋址。直接尋址。 在該尋址方式下, 內(nèi)部RAM區(qū)數(shù)據(jù)傳送指令有如下4條指令: MOV A,direct; (A) (direct) , E5 direct MOV Rn,direct;(Rn)(direct), A8AF direct MOV
25、 Ri,direct;(Ri)(direct),A6A7 direct MOV direct2,direct1 ;(direct2)(direct1),85 direct1 direct2第第3章章 指令系統(tǒng)指令系統(tǒng)這組指令將直接地址所規(guī)定的內(nèi)部RAM單元(片內(nèi)RAM的00H7FH, SFR的80HFFH單元)內(nèi)容傳送到累加器A ,寄存器Rn, 并能實現(xiàn)內(nèi)部數(shù)據(jù)寄存器RAM之間、特殊功能寄存器SFR之間或SFR與內(nèi)部RAM之間的直接數(shù)據(jù)傳遞。直接傳遞不需要通過累加器A或者工作寄存器來間接傳送,從而提高了數(shù)據(jù)傳送的效率。例如: MOV P2,P1 ; (P2) (P1) , 85 90 A0 該
26、指令的功能是不通過其它寄存器,直接把P1口(口地址90H)的內(nèi)容傳送到P2口(口地址A0H)輸出,提高了效率。該指令為三字節(jié)指令, 機(jī)器代碼為85H 90H A0H。 第第3章章 指令系統(tǒng)指令系統(tǒng)(4) (4) 寄存器間接尋址。寄存器間接尋址。在該尋址方式下,內(nèi)部RAM區(qū)數(shù)據(jù)傳送指令有以下兩條: MOV A,Ri ; (A) (Ri) , E6E7 MOV direct,Ri ;(direct)(Ri),8687 direct 這組指令把以Ri的內(nèi)容作為地址進(jìn)行尋址所得到單元的內(nèi)容,傳送到累加器A或direct指定的片內(nèi)RAM區(qū)單元。第第3章章 指令系統(tǒng)指令系統(tǒng)例如:設(shè)內(nèi)部RAM(30H)=4
27、0H,(40H)=10H,(10H)=00H,端口(P1)=0CAH,分析以下程序執(zhí)行后各單元及寄存器、P2口的內(nèi)容。 MOV R0, 30H ; (R0) 30H , (R0)=30H MOV A, R0 ; (A) (R0) ,(A)=40H MOV R1, A ; (R1) (A) , (R1)=40H MOV B, R1 ; (B) (R1) , (B)=10H MOV R1, P1 ; (R1) (P1) , (40H)=0CAH MOV P2, P1 ; (P2) (P1) , (P2)=0CAH MOV 10H, 20H ; (10H) 20H , (10H)=20H第第3章章
28、指令系統(tǒng)指令系統(tǒng)2. 外部數(shù)據(jù)存儲器數(shù)據(jù)傳送指令 51單片機(jī)CPU對片外擴(kuò)展的數(shù)據(jù)存儲器RAM或I/O口進(jìn)行數(shù)據(jù)傳送時, 必須采用寄存器間接尋址的方法, 通過累加器A來完成。一般數(shù)據(jù)的傳送是通過P0口和P2口完成的, 即片外RAM地址總線低8位由P0口送出, 高8位由P2口送出, 數(shù)據(jù)總線(8位)也由P0口傳送(雙向), 但與低8位地址總線是分時傳送的。 這類數(shù)據(jù)傳送指令共有以下4條單字節(jié)指令, 指令操作碼助記符標(biāo)志為MOVX。MOVX A, DPTR ; (A) (DPTR) , E0MOVX A, Ri ; (A) (Ri) , E2E3MOVX DPTR, A ; (DPTR) (A)
29、, F0MOVX Ri, A ; (Ri) (A) , F2F3 第第3章章 指令系統(tǒng)指令系統(tǒng) 例如: 設(shè)外部RAM (0203H)=FFH, 分析以下指令執(zhí)行后的結(jié)果。 MOV DPTR, 0203H ; (DPTR) 0203H , 90 02 03 MOVX A, DPTR ; (A) (DPTR) , E0 MOV 30H, A ; (30H) (A) , F5 30 MOV A, 0FH ; (A) 0FH , 74 0F MOVX DPTR, A ; (DPTR) (A) , F0 執(zhí)行結(jié)果為: (DPTR)=0203H, (30H)=FFH, (0203H)=(A)=0FH。 第
30、第3章章 指令系統(tǒng)指令系統(tǒng)3. 3. 程序存儲器向累加器程序存儲器向累加器A A傳送數(shù)據(jù)指令傳送數(shù)據(jù)指令 程序存儲器向累加器A傳送數(shù)據(jù)指令, 又稱查表指令。 它采用變址尋址方式, 把程序存儲器(ROM或EPROM)中存放的表格數(shù)據(jù)讀出, 傳送到累加器A。它共有如下兩條單字節(jié)指令, 指令操作碼助記符為MOVC。 MOVC A, A+DPTR ; (A)(A)+(DPTR) , 93,遠(yuǎn)程查表。遠(yuǎn)程查表。 MOVC A, A+PC ; (PC)(PC)+1, (A)(A)+(PC),83,近程查表。近程查表。第第3章章 指令系統(tǒng)指令系統(tǒng)例1: 在外部ROM/EPROM中, 從2000H單元開始依次
31、存放09的平方值: 0、 1、 4、 9、 、 81, 要求依據(jù)累加器A中的值(09)來查找所對應(yīng)的平方值, 分析下述程序的結(jié)果。 MOV DPTR, 2000H ; (DPTR) 2000H MOV A, 09H ; (A) 09H MOVC A, A+DPTR ; (A) (A)+(DPTR) 執(zhí)行結(jié)果: (DPTR)=2000H (A)=51H(81的十六進(jìn)制數(shù))。 第第3章章 指令系統(tǒng)指令系統(tǒng) 例2:以例1外部ROM/EPROM 2000H單元開始存放09的平方值, 以PC作為基址寄存器進(jìn)行查表。 解: 設(shè)MOVC指令所在地址(PC)=1FF0H, 則 偏移量 = 2000H(1FF0
32、H+1) = 0FH 相應(yīng)的程序如下: MOV A, 09H ; (A) 09H , 74 09 ADD A, 0FH ; 地址調(diào)整, 24 0F MOVC A, A+PC ; (A) (A)+(PC)+1) , 83 執(zhí)行結(jié)果為: (PC)=1FF1H, (A)=51H。 第第3章章 指令系統(tǒng)指令系統(tǒng)4. 4. 數(shù)據(jù)交換指令數(shù)據(jù)交換指令 數(shù)據(jù)傳送類指令一般都用來將操作數(shù)從源地址傳送到目的地址, 指令執(zhí)行后, 源地址的操作數(shù)不變, 目的地址的操作數(shù)則修改為源地址的操作數(shù)。而數(shù)據(jù)交換指令其數(shù)據(jù)作雙向傳送, 涉及傳送的雙方互為源地址、目的地址, 指令執(zhí)行后各方的操作數(shù)都修改為另一方的操作數(shù)。因此,
33、 兩操作數(shù)均未沖掉、丟失。 數(shù)據(jù)交換類指令共有如下5條指令: 第第3章章 指令系統(tǒng)指令系統(tǒng)字節(jié)交換字節(jié)交換 XCH A, direct ; (A) (direct) , C5 direct XCH A, Ri ; (A) (Ri) , C6C7 XCH A, Rn ; (A) (Rn) , C8CF低低4位交換:位交換: XCHD A, Ri ; (A30) (Ri)30 , D6D7累加器高累加器高4位與低位與低4位交換:位交換: SWAP A ; (A74) (A30) , C4第第3章章 指令系統(tǒng)指令系統(tǒng) 例3: 設(shè)(R0)=30H, (30H)=4AH, (A)=28H, 則: 執(zhí)行
34、XCH A, R0 ; 結(jié)果為 : (A)=4AH, (30H)=28H 執(zhí)行 XCHD A, R0 ; 結(jié)果為 : (A)=2AH, (30H)=48H 執(zhí)行 SWAP A ; 結(jié)果為 : (A)=82H第第3章章 指令系統(tǒng)指令系統(tǒng)5. 堆棧操作類指令 堆棧操作有進(jìn)棧和出棧操作, 即壓入和彈出數(shù)據(jù), 常用于保存或恢復(fù)現(xiàn)場。 該類指令共有如下兩條指令: (SP)(SP)+1 (SP)(direct) (direct)(SP) (SP)(SP)-1 C0 direct PUSH directPOP direct D0 direct 第第3章章 指令系統(tǒng)指令系統(tǒng)例4: 若在外部ROM/EPROM中
35、2000H單元開始依次存放09的平方值, 數(shù)據(jù)指針(DPTR)=3A00H, 用查表指令取出2003H單元的數(shù)據(jù)后, 要求保持DPTR中的內(nèi)容不變。完成以上功能的程序如下: MOV A, 03H ; (A) 03H , 74 03PUSH DPH ; 保護(hù)DPTR高8位入棧 , C0 83PUSH DPL ; 保護(hù)DPTR低8位入棧, C0 82MOV DPTR , 2000H ; (DPTR) 2000H, 90 20 00MOVC A, A+DPTR ; (A) (2000H+03H) , 93POP DPL ; 彈出DPTR低8位 , D0 82POP DPH ; 彈出DPTR高8位,
36、(先進(jìn)后出) , 83第第3章章 指令系統(tǒng)指令系統(tǒng)作業(yè):1、對片內(nèi)地址為00H7FH、80H-0FFH RAM,SFR和片外RAM各可用什么尋址方式訪問?各舉一條指令為例。2、page62 6第第3章章 指令系統(tǒng)指令系統(tǒng)3.3.2 3.3.2 算術(shù)運(yùn)算類指令算術(shù)運(yùn)算類指令 算術(shù)運(yùn)算類指令共有24條,可分為加法,帶進(jìn)位加法,帶借位減法,加1、減1,乘、除及十進(jìn)制調(diào)整指令共6組。 它主要完成加、減、乘、除四則運(yùn)算,以及增量、減量和二十進(jìn)制調(diào)整操作,對8位無符號無符號數(shù)數(shù)可進(jìn)行直接運(yùn)算;借助溢出標(biāo)志OV,可對帶符帶符號數(shù)號數(shù)進(jìn)行補(bǔ)碼運(yùn)算;借助進(jìn)位標(biāo)志CY,可進(jìn)行多字節(jié)加減運(yùn)算,也可以對壓縮BCD碼(
37、即單字節(jié)中存放兩位BCD碼)進(jìn)行運(yùn)算。第第3章章 指令系統(tǒng)指令系統(tǒng) 1. 1. 加法指令加法指令 加法指令共有如下4條指令,操作數(shù)助記符為ADD。 ADD A,data; (A)(A)+data , 24 data ADD A,direct ; (A)(A)+(direct) , 25 direct ADD A,Ri ; (A)(A)+(Ri) , 2627 ADD A,Rn ; (A)(A)+(Rn) , 282F第第3章章 指令系統(tǒng)指令系統(tǒng) 這4條指令使得累加器A可以和內(nèi)部RAM的任何一個單元的內(nèi)容進(jìn)行相加, 也可以和一個8位立即數(shù)相加, 相加結(jié)果存放在A中。無論是哪一條加法指令, 參加運(yùn)
38、算的都是兩個8位二進(jìn)制數(shù)。 對用戶來說,這些8位數(shù)可當(dāng)作無符號數(shù)無符號數(shù)(0255);也可以當(dāng)作帶符號數(shù)帶符號數(shù)(-128+127), 即補(bǔ)碼數(shù)。 例如: 對于二進(jìn)制數(shù)11010011, 用戶可認(rèn)為它是無符號數(shù), 即為十進(jìn)制數(shù)211, 也可以認(rèn)為它是帶符號數(shù), 即為十進(jìn)制負(fù)數(shù)-45。但計算機(jī)在作加法運(yùn)算時, 總按以下規(guī)定進(jìn)行: 第第3章章 指令系統(tǒng)指令系統(tǒng) (1) 在求和時,總是把操作數(shù)直接相加,而無須任何變換。例如,若(A)=11010011B,(R1)=11101000B, 執(zhí)行指令 ADD A,R1時, 其算式表達(dá)為: 11010011 (211D) (-45D) + 11101000
39、(232D) (-24D) 1 10111011 (187) (-69D) 相加后(A)=10111011B。若認(rèn)為是無符號相加, 則A的值代表十進(jìn)制數(shù)187;若認(rèn)為是帶符號補(bǔ)碼數(shù)相加,則A的值為十進(jìn)制負(fù)數(shù)-69。第第3章章 指令系統(tǒng)指令系統(tǒng) (2)在確定相加后進(jìn)位標(biāo)志CY的值時,總是把兩個操作數(shù)作為無符號數(shù)直接相加而得出進(jìn)位CY值。如上例中, 相加后CY=1。若為無符號數(shù)相加CY代表十進(jìn)制數(shù)256,但若是兩個帶符號數(shù)相加, CY沒有意義。 (3) 在確定相加后溢出標(biāo)志OV的值時,計算機(jī)總是把操作數(shù)當(dāng)作帶符號數(shù)來對待。在作加法運(yùn)算時,一個正數(shù)和一個負(fù)數(shù)相加是不可能產(chǎn)生溢出的,只有兩個同符號數(shù)相
40、加才有可能產(chǎn)生溢出,表示運(yùn)算結(jié)果出錯。 第第3章章 指令系統(tǒng)指令系統(tǒng) (4) 加法指令還會影響半進(jìn)位標(biāo)志半進(jìn)位標(biāo)志ACAC和奇偶標(biāo)志P。在上述例子中, 由于D3相加對D4沒有進(jìn)位,所以AC=0, 而由于運(yùn)算結(jié)果A中1的數(shù)目為偶數(shù), 故P=0。 例如: 設(shè)(A)=49H, (R0)=6BH, 執(zhí)行指令: ADD A, R0 ; (A) (A)+(R0) , 28 結(jié)果為:(A)=B4H, OV=1, CY=0, AC=1, P=0第第3章章 指令系統(tǒng)指令系統(tǒng)2. 帶進(jìn)位加法指令帶進(jìn)位加法指令 帶進(jìn)位加法指令有如下4條指令, 其助記符為ADDC。 ADDC A, data ; (A)(A)+(CY
41、)+data , 34 dataADDC A, direct; (A)(A)+(CY)+(direct), 35 directADDC A, Ri ; (A)(A)+(CY)+(Ri) , 3637ADDC A, Rn ; (A)(A)+(CY)+(Rn) , 383F第第3章章 指令系統(tǒng)指令系統(tǒng)例如:設(shè)(A)=0C3H, 數(shù)據(jù)指針低位(DPL)=ABH, CY=1執(zhí)行指令:ADDC A,DPL;(A)(A)+(CY)+(DPL)結(jié)果為:(A)=6EH, CY=1, OV=1, AC=0, P=1。 1100 0011B + 1010 1011B 1 0110 1110B第第3章章 指令系統(tǒng)指
42、令系統(tǒng)例1:雙字節(jié)無符號數(shù)加法(R0 R1)+(R2 R3)(R4 R5) R0、R2、R4存放16位數(shù)的高字節(jié), R1、R3、R5存放低字節(jié)。由于沒有16位數(shù)加法指令,所以只能先加低8位,后加高8位,而在加高8位時要連低8位相加時產(chǎn)生的進(jìn)位一起相加。假設(shè)其和不超過16位, 其編程如下: MOV A, R1 ; 取被加數(shù)低字節(jié)取被加數(shù)低字節(jié)ADD A, R3 ; 低字節(jié)相加低字節(jié)相加MOV R5, A ; 保存和低字節(jié)保存和低字節(jié)MOV A, R0 ; 取高字節(jié)被加數(shù)取高字節(jié)被加數(shù)ADDC A, R2 ; 兩高字節(jié)之和加低位進(jìn)位兩高字節(jié)之和加低位進(jìn)位MOV R4, A ; 保存和高字節(jié)保存和高
43、字節(jié)第第3章章 指令系統(tǒng)指令系統(tǒng)3. 帶借位減法帶借位減法 帶借位減法指令有如下4條指令, 其助記符為SUBB。 SUBB A,data ; (A)(A)(CY)dataSUBB A,direct ; (A) (A)(CY)(direct)SUBB A,Ri ; (A) (A)(CY)(Ri)SUBB A,Rn ; (A) (A)(CY)(Rn)第第3章章 指令系統(tǒng)指令系統(tǒng) 由于減法指令只有帶借位減法指令, 因此, 若要進(jìn)行不帶借位位的減法操作, 需先清借位位, 即置CY=0。清CY有專門的指令,它屬于位操作類指令,指令為: CLR C ; (CY) 0 , C3例如: 設(shè)(A)=52H, (
44、R0)=B4H 執(zhí)行指令: CLR C ; (CY)0 SUBB A, R0 ; (A) (A)(CY)(R0) 結(jié)果為: (A)=9EH, CY=1, AC=1, OV=1, P=1。 沒有這條指令會怎么樣?第第3章章 指令系統(tǒng)指令系統(tǒng)例2: 雙字節(jié)無符號數(shù)相減(R0 R1)(R2 R3) (R4 R5)。R0、R2、R4存放16位數(shù)的高字節(jié), R1、R3、R5存放低字節(jié),先減低8位,后減高8位和低位減借位。由于低位開始減時沒有借位, 所以要先清零。其編程如下: MOV A, R1 ; 取被減數(shù)低字節(jié) CLR C ; 清借位位 SUBB A, R3 ; 低字節(jié)相減 MOV R5, A ; 保
45、存差低字節(jié) MOV A, R0 ; 取被減數(shù)高字節(jié) SUBB A, R2 ; 兩高字節(jié)差減低位借位 MOV R4, A ; 保存差高字節(jié)第第3章章 指令系統(tǒng)指令系統(tǒng)4. 加1, 減1指令加1指令共有如下5條指令, 助記符為INC。 INC A ; (A) (A)+1INC direct ; (direct) (direct)+1INC Ri ; (Ri) (Ri)+1INC Rn ; (Rn) (Rn)+1INC DPTR ; (DPTR) (DPTR)+1 加加1 1指令指令不影響各標(biāo)志位指令指令不影響各標(biāo)志位! !第第3章章 指令系統(tǒng)指令系統(tǒng)減1指令有如下4條指令, 助記符為DEC。 DE
46、C A ; (A) (A)1DEC direct ; (direct) (direct)1DEC Ri ; (Ri) (Ri)1DEC Rn ; (Rn) (Rn)1 減減1 1指令指令不影響各標(biāo)志位指令指令不影響各標(biāo)志位! !第第3章章 指令系統(tǒng)指令系統(tǒng) 例如: 設(shè)(R0)=7EH, (7EH)=FFH, (7FH)=38H, (DPTR)=10FEH, 分析逐條執(zhí)行下列指令后各單元的內(nèi)容。 INC R0 ; 使7EH單元內(nèi)容由FFH變?yōu)?0HINC R0 ; 使R0的內(nèi)容由7EH變?yōu)?FHINC R0 ; 使7FH單元內(nèi)容由38H變?yōu)?9HINC DPTR ; 使DPL為FFH, DPH不
47、變INC DPTR ; 使DPL為00H, DPH為11H(INC DPL)INC DPTR ; 使DPL為01H, DPH不變 第第3章章 指令系統(tǒng)指令系統(tǒng)5. 乘、 除法指令 乘、除法指令為單字節(jié)4周期指令, 在指令執(zhí)行周期中是最長的兩條指令。 (1) 乘法指令MUL AB (B)(A)(B)158, (A)(A)(B)70 (CY)0 A4第第3章章 指令系統(tǒng)指令系統(tǒng) 乘法指令的功能是把累加器A和寄存器B中的兩個8位無符號數(shù)相乘位無符號數(shù)相乘, 將乘積16位數(shù)中的低8位存放在A中, 高8位存放在B中。若乘積大于FFH(255), 則溢出標(biāo)志OV置1, 否則OV清0。乘法指令執(zhí)行后進(jìn)位標(biāo)志
48、CY總是清零, 即CY=0。 另外, 乘法指令本身只能進(jìn)行兩個8位數(shù)的乘法運(yùn)算, 要進(jìn)行多字節(jié)乘法還需編寫相應(yīng)的程序。 例如: 若(A)=4EH(78), (B)=5DH(93) 執(zhí)行指令: MUL AB 結(jié)果為: 積為(BA)=1C56H(7254) FFH(255), (A)=56H, (B)=1CH, OV=1, CY=0, P=0。 第第3章章 指令系統(tǒng)指令系統(tǒng)例3: 利用單字節(jié)乘法指令進(jìn)行雙字節(jié)數(shù)乘以單字節(jié)數(shù)運(yùn)算。若被乘數(shù)為16位無符號數(shù), 地址為M1和M1+1(低位先、高位后), 乘數(shù)為8位無符號數(shù), 地址為M2, 積存入R2、 R3和R4三個寄存器中。 R2 R3 R4 R3 R
49、4 (M1+1) (M1) (M2) B A第第3章章 指令系統(tǒng)指令系統(tǒng)參考程序如下: MOV R0, M1 ; 被乘數(shù)地址存于R0 MOV A, R0 ; 取16位數(shù)低8位 MOV B, M2 ; 取乘數(shù) MUL AB ; (M1)(M2) MOV R4, A ; 存積低8位 MOV R3, B ; 暫存(M1)(M2)高8位 INC R0 ; 指向16位數(shù)高8位 MOV A, R0 ; 取被乘數(shù)高8位 第第3章章 指令系統(tǒng)指令系統(tǒng) MOV B , M2 ; 取乘數(shù) MUL AB ; (M1+1)(M2) ADD A, R3 ; (A)+(R3)得(積)158 MOV R3, A ; (積)
50、158存R3 MOV A, B ; 積最高8位送A ADDC A, 00H ; 積最高8位+CY得(積)2316 MOV R2, A ; (積)2316存入R2若上述程序執(zhí)行前:(M1+1)=ABH,(M1)=CDH, (M2)=64H。 則執(zhí)行后: (R2)=43H, (R3)=1CH, (R4)=14H。 第第3章章 指令系統(tǒng)指令系統(tǒng) (2) 除法指令 DIV A B ; , 84 (A)(A)(B)之商,(B)(A)(B)之余數(shù) (CY)0, (OV)0 除法指令的功能是把累加器A中的8位無符號整數(shù)除以寄存器B中的8位無符號整數(shù), 所得商存于累加器A中, 余數(shù)存于寄存器B中, 進(jìn)位標(biāo)志C
51、Y和溢出標(biāo)志OV均被清零。若除數(shù)B中的內(nèi)容為0時, 除法運(yùn)算沒有意義, 結(jié)果為不定值, 此時溢出標(biāo)志OV被置為1 , 即OV=1, 而CY仍為0。 第第3章章 指令系統(tǒng)指令系統(tǒng) 例4: 利用除法指令把累加器A中的8位二進(jìn)制數(shù)轉(zhuǎn)換為3位BCD數(shù),并以壓縮形式存放在地址M1、M2單元中。 解: 累加器A中的8位二進(jìn)制數(shù),先對其除以100(64H),商數(shù)即為十進(jìn)制的百位數(shù);余數(shù)部分再除以10 (0AH), 所得商數(shù)和余數(shù)分別為十進(jìn)制十位數(shù)和個位數(shù), 即得到3位BCD數(shù)。百位數(shù)放在M1中, 十位、個位數(shù)壓縮BCD數(shù)放在M2中, 十位與個位數(shù)的壓縮BCD數(shù)的存放是通過SWAP和ADD指令實現(xiàn)的。 參考程
52、序如下: 第第3章章 指令系統(tǒng)指令系統(tǒng)MOV B, 64H ; 除數(shù)100 送BDIV AB ; 得百位數(shù) MOV M1, A ; 百位數(shù)存于M1中MOV A, 0AH ; 取除數(shù)10 XCH A, B ; 上述余數(shù)與除數(shù)交換DIV AB ; 得十位數(shù)和個位數(shù)SWAP A ; 十位數(shù)存于A的高4位ADD A, B ; 組成壓縮BCD數(shù)MOV M2, A ; 十、 個位壓縮BCD數(shù)存M2 若上述程序執(zhí)行前: (A)=A8H (168), 則執(zhí)行后: (M1)=(01)BCD, (M2)=(68)BCD。 第第3章章 指令系統(tǒng)指令系統(tǒng)6. 十進(jìn)制調(diào)整指令十進(jìn)制調(diào)整指令 十進(jìn)制調(diào)整指令是一條對二十進(jìn)
53、制的加法進(jìn)行調(diào)整的指令。 兩個壓縮BCD碼按二進(jìn)制相加, 必須經(jīng)過本條指令調(diào)整后才能得到正確的壓縮BCD碼和數(shù), 實現(xiàn)十進(jìn)制的加法運(yùn)算。 由于指令要利用AC、 CY等標(biāo)志才能起到正確的調(diào)整作用, 因此它必須跟在加法ADD、 ADDC指令后面方可使用。 , D4DA A若(A)309或(AC)=1, 則(A)70(A)70+06H 若(A)749或(CY)=1, 則(A)74(A)74+06H 第第3章章 指令系統(tǒng)指令系統(tǒng)例5: 對BCD碼加法65+58BDH, 進(jìn)行十進(jìn)制調(diào)整。 解:參考程序如下: MOV A, 65H ; (A) 65 ADD A, 58H ; (A) (A)+58 DA A
54、 ; 十進(jìn)制調(diào)整 執(zhí)行結(jié)果: (A)=(23)BCD , (CY)=1, 即: 65+58=123。 01100101 65 + 01011000 58 10111101 BD + 01100110 加66H調(diào)整 1 00100011 第第3章章 指令系統(tǒng)指令系統(tǒng)例6: 雙字節(jié)壓縮BCD碼加法。 解: 設(shè)R5(高)、 R4(低)為被加數(shù); R3(高)、 R2(低)為加數(shù), 相加和的結(jié)果存入: R6(萬)、R5(千、百)、R4(十、 個)。參考程序如下: MOV A, R4 ; 被加數(shù)十位、 個位送入A ADD A, R2 ; 十位、 個位相加 DA A ; 和的十位、 個位調(diào)整 MOV R4,
55、 A ; 和的十位、 個位存入R4 MOV A , R5 ; 被加數(shù)千位、 百位送入A ADDC A, R3 ; 千位、 百位的和加低位進(jìn)位第第3章章 指令系統(tǒng)指令系統(tǒng) DA A ; 和的千位、 百位調(diào)整 MOV R5, A ; 和的千位、 百位存入R5 MOV A, 00H ; A清零 ADDCA, 00H ; 求和的萬位值 MOV R6, A ; 和的萬位存入R6 若程序執(zhí)行前: (R5)=(98)BCD, (R4)=(76) BCD , (R3)=(54)BCD , (R2)=(32)BCD , 則執(zhí)行后: (R6)=(01) BCD , (R5)=(53)BCD ,(R4)=(08)
56、BCD 。 第第3章章 指令系統(tǒng)指令系統(tǒng)例7: 利用十進(jìn)制加法調(diào)整指令DA作十進(jìn)制減法調(diào)整。 解: 由于DA指令不能直接對減法進(jìn)行十進(jìn)制調(diào)整, 為了進(jìn)行十進(jìn)制減法運(yùn)算, 只能用加減數(shù)的補(bǔ)數(shù)來進(jìn)行。兩位十進(jìn)制數(shù)是對100取補(bǔ)的, 如60-30=30, 也可改為補(bǔ)數(shù)相加: 60+(100-30)= 1 30 丟掉進(jìn)位(模)100后, 就得到正確的結(jié)果。 第第3章章 指令系統(tǒng)指令系統(tǒng) 在實際運(yùn)算時, 由于CPU為8位, 不可能用9位二進(jìn)制數(shù)表示十進(jìn)制數(shù)100,但可用8位二進(jìn)制數(shù)10011010(9AH)代替, 因為這個二進(jìn)制數(shù)經(jīng)過十進(jìn)制調(diào)整后就是100000000。 這樣十進(jìn)制無符號數(shù)的減法運(yùn)算可按
57、以下步驟進(jìn)行: (1) 求減數(shù)的補(bǔ)數(shù)(9AH-減數(shù)); (2) 被減數(shù)與減數(shù)的補(bǔ)數(shù)相加; (3) 經(jīng)DA指令調(diào)整后就得到所求的十進(jìn)制減法運(yùn)算結(jié)果。 第第3章章 指令系統(tǒng)指令系統(tǒng) 這里用“補(bǔ)數(shù)”而不是“補(bǔ)碼”是為了和帶符號位的補(bǔ)碼加以區(qū)別。 由于現(xiàn)在操作數(shù)都是正數(shù), 沒有必要再加符號位, 故稱“補(bǔ)數(shù)”更為合適一些。 設(shè)M1、 M2、 M3 分別為被減數(shù)、減數(shù)和差的符號地址, 相應(yīng)的十進(jìn)制減法運(yùn)算程序如下: CLR C ; CY清0 MOV A, 9AH ; (A) 9AH SUBB A, M2 ; 求減數(shù)的補(bǔ)數(shù) ADD A, M1 ; 加補(bǔ)數(shù)完成減法 DA A ; 十進(jìn)制調(diào)整 MOV M3, A
58、 ; 差存入M3單元 若程序執(zhí)行前: (M1)=(91)BCD,(M2)=(36)BCD, 則程序執(zhí)行后: (M3)=(55)BCD。第第3章章 指令系統(tǒng)指令系統(tǒng)1. 4位壓縮的BCD碼在R0R1,R0高2位,R1低2位,請編寫出其自加1的程序。2. 4位壓縮的BCD碼在R0R1,R0高2位,R1低2位,請編寫出其自減1的程序。第第3章章 指令系統(tǒng)指令系統(tǒng)(1)XCH A,R0(2)SWAP A (3)ADDC A,30H(4)RLC A(5)SUBB A,#0AH(6)ANL A,#0FH(7)ORL A,R0(8)XRL A,#30H(9)INC A(10)CPL A思考題:已知(A)=1
59、AH,(R0)=30H,(30H)=17H,(PSW)=81H,問單獨(dú)執(zhí)行以下各指令后A,PSW的結(jié)果。第第3章章 指令系統(tǒng)指令系統(tǒng)(A)= 30H ,(PSW)= 80H(A)= 0A1H ,(PSW)= 81H(A)= 31H ,(PSW)= 41H(A)= 30H ,(PSW)= 80H(A)= 30H ,(PSW)= 80H(A)= 30H ,(PSW)= 80H(A)= 30H ,(PSW)= 80H(A)= 30H ,(PSW)= 80H(A)= 30H ,(PSW)= 80H(A)= 30H ,(PSW)= 80H第第3章章 指令系統(tǒng)指令系統(tǒng)(A)= 30H ,(PSW)= 80
60、H(A)= 30H ,(PSW)= 80H(A)= 30H ,(PSW)= 80H(A)= 30H ,(PSW)= 80H(A)= 30H ,(PSW)= 80H(A)= 30H ,(PSW)= 80H(A)= 30H ,(PSW)= 80H第第3章章 指令系統(tǒng)指令系統(tǒng)已知:(30H)=38H,(38H)=40H,(40H)=48H,(48H)=90H。MOV A,40HMOV R0,AMOV P1,#0F0HMOV R0,30HMOV DPTR,#3848HMOV 40H,38HMOV R0,30HMOV 0D0H,R0MOV 18H,R0MOV P2,P1第第3章章 指令系統(tǒng)指令系統(tǒng) 3.
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中國營林及木竹采伐機(jī)械制造行業(yè)應(yīng)用態(tài)勢與發(fā)展趨勢分析研究報告(2024-2030版)
- 中國聚芳硫醚砜產(chǎn)業(yè)需求態(tài)勢及前景動態(tài)預(yù)測研究報告(2024-2030版)
- 中國考種儀市場生產(chǎn)策略與供需前景分析研究報告(2024-2030版)
- 機(jī)器視覺方向課程設(shè)計
- 中國粘膠纖維行業(yè)發(fā)展動態(tài)及經(jīng)營模式分析研究報告(2024-2030版)
- 中國空氣壓縮機(jī)制造行業(yè)發(fā)展格局與未來前景預(yù)測研究報告(2024-2030版)
- 中國熱軋薄寬鋼帶行業(yè)發(fā)展概況與投資前景機(jī)會分析研究報告(2024-2030版)
- 中國淋膜紙行業(yè)需求狀況及銷售趨勢預(yù)測研究報告(2024-2030版)
- 建筑建模課課程設(shè)計
- 軟件課程設(shè)計電子郵件
- 維修服務(wù)協(xié)調(diào)措施
- 小池五線譜合唱譜
- 爐窯冬季施工方案
- 中建高大模板專家論證施工方案
- “互聯(lián)網(wǎng)物流”課件
- 聚合物電解質(zhì)簡介
- 中國上市公司治理準(zhǔn)則(修訂稿)
- 粉絲見面會策劃方案
- 主機(jī)改造方案圖解
- 紅外物理與技術(shù)(第2版)楊風(fēng)暴課后習(xí)題解答
- 小說閱讀的方法和技巧課件
評論
0/150
提交評論