版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第四章 指令系統(tǒng)及匯編語言程序設(shè)計任課教師:劉忠國山東大學(xué)課程中心網(wǎng)站:/G2S/Template/View.aspx?action=view&courseType=0&courseId=5819網(wǎng)站: / keil vision軟件下載及指導(dǎo)手冊(Helpvision Help) /STC15系列單片機器件手冊-1473頁 (2015/6/29更新)2第四章 指令系統(tǒng)及匯編語言程序設(shè)計 本章學(xué)習(xí)目標(biāo)了解助記符、指令格式掌握單片機尋址方式 掌握單片機指令系統(tǒng)掌握單片機匯編語言程序設(shè)計及開發(fā)環(huán)境3*第四章 指令系統(tǒng)及匯編語言程序設(shè)計語言4.1 編程語言簡介 4.2 指令和偽指令 4.3 匯編語言
2、程序調(diào)試4.4 利用STC-ISP工具將程序下載到單片機中驗證程序4.5各類指令詳解4.5.1 數(shù)據(jù)傳送類指令4.5.2 邏輯操作類指令4.5.3 算術(shù)運算類指令4.5.4 位操作指令4.5.5 控制類轉(zhuǎn)移指令4.6 匯編語言程序設(shè)計4*具體指令系統(tǒng)介紹4.5 各類指令詳解(111條)功能:主要給單片機的內(nèi)部和外部資源賦值、進(jìn)行堆棧的存取操作等。對程序狀態(tài)字PSW一般不產(chǎn)生影響。 (注: 當(dāng)A為目的操作數(shù)時, 影響PSW的奇偶標(biāo)志位P。)分類:分為三種:數(shù)據(jù)傳送(22條)數(shù)據(jù)交換(5條)棧操作(2條)5*8個助記符例: MOV A, #13H;例:XCHD A, R0; PUSH addr8
3、; SPSP+1, (SP)(addr8)POP addr8 ; (addr8) (SP) , SPSP- 14.5.1 數(shù)據(jù)傳送類指令(29條)指令列表見附錄E例: MOVX A, DPTR;或R0, R1例: MOVC A, A+DPTR;SWAP A; 4.5.1 數(shù)據(jù)傳送類指令(29條)-數(shù)據(jù)傳送(22條)數(shù)據(jù)傳送(22條)數(shù)據(jù)交換(5條)棧操作(2條)6*見附錄 E附表 E-14.5.1 數(shù)據(jù)傳送類指令(29條)-數(shù)據(jù)傳送(22條)數(shù)據(jù)傳送(22條)數(shù)據(jù)交換(5條)棧操作(2條)7*見附錄 E附表 E-14.5.1 數(shù)據(jù)傳送類指令(29條) -棧操作(2條) -數(shù)據(jù)交換(5條) 數(shù)據(jù)
4、傳送(22條)數(shù)據(jù)交換(5條)棧操作(2條)8*SWAP A 也可分類到“對累加 器A進(jìn)行的邏輯操作”數(shù)據(jù)傳送類指令共 8個助記符邏輯操作類見附錄 E附表 E-1 數(shù)據(jù)傳送指令(22條)1、MOV指令(16條) 2、MOVX指令(4條) 3、MOVC指令 (2條) 9*1、MOV指令MOV指令作用區(qū)間: 內(nèi)部數(shù)據(jù)存儲器和特殊功能寄存器使用方法利用Rn可直接訪問某工作寄存器;利用Ri可間接尋址內(nèi)部數(shù)據(jù)RAM的某一字節(jié)單元;直接尋址則可遍訪問內(nèi)部數(shù)據(jù)RAM(00H7FH)和特殊功能寄存器空間。1、MOV指令(16條) 雙操作數(shù)的數(shù)據(jù)傳送指令允許在工作寄存器、內(nèi)部數(shù)據(jù)RAM、累加器A和特殊功能寄存器
5、(SFR)任意兩個之間傳送一個字節(jié)的數(shù)據(jù),而且立即操作數(shù)能送入上述任何單元中。10*(2)Rn、內(nèi)部RAM、SFR與累加器A傳送數(shù)據(jù)送 (6條)(1) 立即數(shù)送累加器A和Rn、內(nèi)部RAM、SFR送 (4條)(3)Rn、SFR和內(nèi)部數(shù)據(jù)RAM之間的數(shù)據(jù)傳送送 (5條)(4)目標(biāo)地址傳送 (1條): MOV DPTR , #data16附錄 E指令列表按目的操作數(shù)分類(1) 立即數(shù)送累加器A和Rn、內(nèi)部RAM、SFRMOV A, #data8 ;A #data8MOV addr8,#data8 ;(addr8) #data8MOV Ri, #data8 ;(Ri) #data811*例:MOV R
6、0, #60H ;將立即數(shù)60H送到寄存器R0中 MOV R0, #56H;將56H送到R0間接尋址的單元(地址60H) MOV 20H, #56H ;將立即數(shù)56H送入20H單元中 MOV P1, #80H ;把80H直接送入P1口(口地址為90H)中MOV Rn, #data8 ;Rn #data8direct:addr8直接尋址(2)Rn、內(nèi)部RAM、SFR與累加器A傳送數(shù)據(jù)(6條)12* MOV A, addr8 ;A(addr8) MOV A, Ri ;A (Ri) MOV A, Rn ;A Rn MOV addr8, A ;(addr8) A MOV Ri, A ;(Ri) A M
7、OV Rn, A ;RnA欲從DPL取數(shù)到累加器A, 用直接尋址方式: MOV A, 82H; DPL地址為82H MOV A, DPL間接尋址Ri尋址范圍可為00HFFH(不含SFR): MOV R1, #82H MOV A, R1 ;尋址內(nèi)部RAM地址82H (3)Rn、SFR和內(nèi)部數(shù)據(jù)RAM之間的數(shù)據(jù)傳送(5條) MOV addr8, addr8 ;(addr8目)(addr8源) MOV addr8, Ri ;(addr8)(Ri) MOV addr8, Rn ;(addr8)Rn MOV Ri, addr8 ;(Ri)(addr8) MOV Rn, addr8 ;Rn(addr8)1
8、3*例: MOV 60H, 50H ; 把50H單元內(nèi)容送到60H單元 MOV P1, R0 ; R0P1(地址90H)1、MOV指令(16條) (4)目標(biāo)地址傳送(1條) 功能:把16位常數(shù)裝入數(shù)據(jù)指針DPTR 。只有一條指令:MOV DPTR , #data16 例如: MOV DPTR , #0150H表示把16位常數(shù)裝入數(shù)據(jù)指針。執(zhí)行后,DPTR=0150H,其中DPH=01H,DPL=50H14*2、MOVX指令(4條) 15*功能: 用于累加器A和外部RAM或擴展并行I/O口進(jìn)行數(shù)據(jù)傳送。這種傳送只一種尋址方式, 即寄存器間接尋址。 MOVX A, DPTR ;A(DPTR) MO
9、VX A, Ri ;A(Ri) MOVX DPTR, A ;(DPTR)A MOVX Ri, A ;(Ri)A注意:由于使用R1或R0寄存器間接尋址方式訪問外部數(shù)據(jù)存儲器時,尋址范圍受到256字節(jié)限制,因此,在實際應(yīng)用中,一般使用DPTR寄存器間接尋址方式訪問外部數(shù)據(jù)存儲器。2、MOVX指令(4條) 16*用R1或R0進(jìn)行寄存器間接尋址。該方式能訪問外部數(shù)據(jù)存儲器(或擴展并行I/O口)256個字節(jié)中一個字節(jié)。若要訪問更大片外空間, 需用P2口輸出高8位地址。需先給P2和Ri賦值, 然后執(zhí)行MOVX指令。(訪問片內(nèi)擴展XRAM時, Ri只能訪問其000FF空間, 與P2口無關(guān))用16位數(shù)據(jù)存儲器
10、地址指針DPTR進(jìn)行寄存器間接尋址 : 該法能遍訪64KB外部數(shù)據(jù)存儲器 (或擴展并行I/O口)的任何單元。 (訪問片內(nèi)擴展XRAM時, DPTR 與P2口無關(guān))2、MOVX指令(4條) 例如:若外部數(shù)據(jù)存儲器單元中:(0100H)=60H,(0101H)=2FH 則下列程序執(zhí)行后的結(jié)果: MOV DPTR , #0100H; DPTR = 0100H MOVX A, DPTR ;執(zhí)行后, 累加器A=60H MOV B, A ; B=A=60H, 不能MOVX B, DPTR INC DPTR ; DPTR = 0101H MOVX A, DPTR ;執(zhí)行后, 累加器A=2FH17*3、程序存
11、儲器向累加器A傳送指令MOVC查表:單片機提供2條查表指令,訪問程序存儲器。指令采用變址尋址, 以PC或DPTR為基址寄存器, 以累加器A為變址寄存器, 基址寄存器與變址寄存器內(nèi)容相加得到程序存儲器某單元的地址值; MOVC指令把該存儲單元的內(nèi)容傳送到累加器A中。18*格式: MOVC A, A+PC ;PCPC+, A(A+PC) MOVC A, A+DPTR ;A(A+DPTR)功能: 把A中內(nèi)容與基址寄存器(PC, DPTR)內(nèi)容相加, 求得程序存儲器單元地址, 再把該地址單元內(nèi)容A。指令執(zhí)行后不改變基址寄存器內(nèi)容, 因執(zhí)行16位加法, 從低8位產(chǎn)生的進(jìn)位將傳送到高位去, 不影響任何標(biāo)志
12、。3、程序存儲器向累加器A傳送指令MOVC查表:單片機提供2條查表指令,訪問程序存儲器。19*格式: MOVC A, A+PC ;PCPC+, A(A+PC) MOVC A, A+DPTR ;A(A+DPTR)功能: 把A中內(nèi)容與基址寄存器(PC, DPTR)內(nèi)容相加, 求得程序存儲器單元地址, 再把該地址單元內(nèi)容A。3、程序存儲器向累加器A傳送指令MOVC【例4-2】試編制根據(jù)累加器A中數(shù)(09)查其平方表的子程序。解:程序代碼如下: COUNT: PUSH DPH ;保護(hù)現(xiàn)場 PUSH DPL ;保護(hù)DPTR內(nèi)容 MOVDPTR , #TABLE ;賦表首址DPTR MOVC A , A+
13、DPTR ;據(jù)A中內(nèi)容查表 POP DPL ;恢復(fù)現(xiàn)場 POP DPH ;恢復(fù)DPTR原內(nèi)容 RET ;返回TABLE: DB 00, 01, 04, 09, 16, 25, 36, 49, 64, 8120* 數(shù)據(jù)交換指令 (5條)21*例如,設(shè)R0=20H,A=3FH,(20H)=75H,若 XCH A, 20H ;執(zhí)行結(jié)果A=75H, (20H)=3FH 若 XCH A, R0 ;執(zhí)行結(jié)果A=75H, (20H)=3FH若 XCH A, R0 ;執(zhí)行結(jié)果A=20H, R0=3FH 包括字節(jié)交換指令和半字節(jié)交換指令。1、字節(jié)交換指令 (3條) XCH A, addr8 ;A (addr8)
14、 XCH A, Ri ;A (Ri) XCH A, Rn ;A Rn 數(shù)據(jù)交換指令2、半字節(jié)交換指令 (2條) XCHD A, Ri ;A30 (Ri) 30指令把累加器A的低4位和寄存器間接尋址的內(nèi)部RAM單元的低4位交換, 高4位內(nèi)容不變, 不影響標(biāo)志位。例如: 設(shè)A=69H (0110 1001B), R1=30H, 內(nèi)部RAM中30H的內(nèi)容: (30H) =87H (1000 0111B), XCHD A, R1;執(zhí)行結(jié)果:A=67H,(30H)=89H22*SWAP A ; A03 A47(高低兩半字節(jié)交換)A若A=67H, 執(zhí)行指令后A=76H 棧操作指令 (2條)堆棧的作用保護(hù)斷
15、點, 保護(hù)現(xiàn)場主程序調(diào)用子程序或中斷處理程序時, 需保存返回地址(斷點地址)和保護(hù)現(xiàn)場,以便返回時能回到調(diào)用前的程序段,繼續(xù)運行原來的程序。23*保存斷點地址方法: 將斷點地址保存到堆棧中(入?;驂簵?, 返回主程序前從堆棧中取出上述地址放回到指令計數(shù)器PC中(出棧或彈棧); 例:LCALL COUNT ;表示調(diào)用COUNT子程序 MOV A, DPTR斷點保存與恢復(fù)的堆棧操作由CPU自動完成。 棧操作指令 (2條)24*現(xiàn)場保護(hù)和恢復(fù)保護(hù)現(xiàn)場: 進(jìn)入子程序或中斷處理程序后要保護(hù)所用到的通用寄存器的值:將寄存器值壓棧 (PUSH) 保存?;謴?fù)現(xiàn)場: 子程序返回或中斷處理返回前,還要能夠恢復(fù)這些
16、寄存器的值:將寄存器值(POP)彈棧到寄存器。例: MOV A, #8H MOV DPTR, #1234H; LCALL COUNT ;表示調(diào)用COUNT子程序 MOV A, DPTR【例4-2】根據(jù)累加器A中數(shù)(09)查其平方值的子程序。COUNT: PUSH DPH ;保護(hù)現(xiàn)場 PUSH DPL ;保護(hù)DPTR內(nèi)容 MOVDPTR , #TABLE;賦表首址DPTR MOVC A , A+DPTR ;據(jù)A中內(nèi)容查表 POP DPL ;恢復(fù)現(xiàn)場 POP DPH ;恢復(fù)DPTR原內(nèi)容 RET ;返回TABLE:DB 00, 01, 04, 09, 16, 25, 36, 49, 64, 81保
17、護(hù)斷點保存返回地址的方法: 將返回地址(斷點地址)保存到堆棧中(入?;驂簵?, 返回主程序前從堆棧中取出上述地址放回到指令計數(shù)器PC中(出?;驈棗?; 25*例:LCALL COUNT ;表示調(diào)用COUNT子程序 MOV A, DPTR斷點保存與恢復(fù)的堆棧操作由CPU自動完成, 不需用戶用指令進(jìn)行堆棧操作。堆棧區(qū)26*圖4-36 堆棧示意圖入棧操作: 先SP+1SP, 指向棧頂上一個空單元, 然后把進(jìn)棧內(nèi)容壓入SP所指單元中。出棧操作: 先彈出棧頂內(nèi)容到直接尋址單元,然后SP-1SP,形成新的堆棧指針。位置:內(nèi)部存儲器的一部分區(qū)域?qū)iT用于堆棧數(shù)據(jù)存取規(guī)則:后進(jìn)先出, 即最后存入的數(shù)據(jù)將被最先取
18、出。堆棧指針: SP始終指向棧頂。 SP-1SPESP指向棧頂SP+1SP 出棧后入棧后DPUSH addr8; POP addr8 ;棧操作指令 (2條) PUSH addr8; SPSP+1, 目的(SP)源(addr8) POP addr8;目的(addr8)源(SP), SPSP- 1分別完成兩種堆棧操作: 入棧 (PUSH), 出棧(POP) 。注意:PUSH和POP成對出現(xiàn),并注意順序:后進(jìn)先出。27*例: PUSH ACC ;保護(hù)累加器ACC中內(nèi)容 PUSH PSW ;保護(hù)標(biāo)志寄存器內(nèi)容 ;執(zhí)行其他程序 POP PSW ;恢復(fù)標(biāo)志寄存器內(nèi)容 POP ACC ;恢復(fù)累加器ACC中內(nèi)
19、容 該程序執(zhí)行后,累加器ACC和PSW寄存器中的內(nèi)容可得到保護(hù)和正確的恢復(fù)。只能直接尋址間接尋址方式入棧出棧順序錯誤會導(dǎo)致現(xiàn)場恢復(fù)錯誤若為: PUSH ACC PUSH PSW ;其他程序 POP ACC POP PSW 則執(zhí)行后,將使得ACC和PSW中的內(nèi)容互換。28*正確: PUSH ACC ;保護(hù)累加器ACC中內(nèi)容 PUSH PSW ;保護(hù)標(biāo)志寄存器內(nèi)容 ;執(zhí)行其他程序 POP PSW ;恢復(fù)標(biāo)志寄存器內(nèi)容 POP ACC ;恢復(fù)累加器ACC中內(nèi)容出入棧規(guī)則:后進(jìn)先出邏輯操作類29*堆棧用于保存臨時數(shù)據(jù)、局部變量、中斷或子程序的返回地址,關(guān)于堆棧的說法正確的是()堆棧設(shè)在內(nèi)部RAM中。堆
20、棧可設(shè)在內(nèi)部擴展RAM,即XRAM中。按照“先進(jìn)后出”規(guī)律存放數(shù)據(jù)。按照“先進(jìn)先出”規(guī)律存放數(shù)據(jù)ABCD提交理論上可將堆棧區(qū)域設(shè)置在內(nèi)部RAM的00H FFH之間。E多選題1分30選擇下面關(guān)于單片機的正確表述:單片機內(nèi)部高128位數(shù)據(jù)RAM亦可作為堆棧區(qū)使用;單片機的堆棧區(qū)可以設(shè)置在內(nèi)部RAM地址的30H7FH范圍;特殊功能寄存器的值可壓入堆棧;特殊功能寄存器都可以位尋址。ABCD提交邏輯操作類多選題1分保護(hù)斷點, 保護(hù)現(xiàn)場 舉例假設(shè)長調(diào)用指令LCALL Delay (機器碼: 12H, 11H, 00H)在1000H存儲器單元,如圖所示。31*保護(hù)斷點, 保護(hù)現(xiàn)場的執(zhí)行過程示意圖1000H1
21、2H1001H11H1002H00H1003H返回后執(zhí)行代碼1100H0C0H1101H0D0H1102H0C0H1103H0E0H1104H0D0H1105H0E0H1106H0D0H1107H0D0H1108H22H1109H地址 程序存儲器PC現(xiàn)行PC即下一指令地址新PC07HR708H09H0AH0BHSP+1SPPSWACCSP+2SP+3SP+4PUSH ACCPUSH PSWRET地址 內(nèi)部RAMLCALL DelayDelay地址POP ACCPOP PSW(ACC)=70H(PSW)=80HPC+1PC+2保護(hù)斷點保護(hù)現(xiàn)場保護(hù)現(xiàn)場恢復(fù)現(xiàn)場10H03H80H70H堆棧區(qū)設(shè)執(zhí)行d
22、elay前被調(diào)用子程略延遲程序保護(hù)斷點, 保護(hù)現(xiàn)場 舉例假設(shè)長調(diào)用指令LCALL Delay (機器碼: 12H, 11H, 00H)在1000H存儲器單元,如圖所示。32*保護(hù)斷點, 保護(hù)現(xiàn)場的執(zhí)行過程示意圖1000H12H1001H11H1002H00H1003H返回后執(zhí)行代碼1100H0C0H1101H0D0H1102H0C0H1103H0E0H1104H0D0H1105H0E0H1106H0D0H1107H0D0H1108H22H1109H地址 程序存儲器PC現(xiàn)行PC即下一指令地址新PC07HR708H09H0AH0BHSP-3SP-4PSWACCSP-2SP-1SPPUSH ACCP
23、USH PSWRET地址 內(nèi)部RAMLCALL DelayDelay地址POP ACCPOP PSW(ACC)=70H(PSW)=80HPC+1PC+2保護(hù)斷點保護(hù)現(xiàn)場保護(hù)現(xiàn)場恢復(fù)現(xiàn)場10H03H80H70H恢復(fù)現(xiàn)場恢復(fù)斷點返回堆棧區(qū)設(shè)執(zhí)行delay前被調(diào)用子程省略程序返回PC數(shù)據(jù)傳送類操作注意事項:除POP, MOV指令將數(shù)據(jù)送到PSW外, 傳送操作一般不影響標(biāo)志位。向A傳送數(shù)據(jù)時, 會影響PSW的P標(biāo)志。把源地址單元內(nèi)容送到目的地址單元后,源地址單元中的內(nèi)容不變。對特殊功能寄存器SFR操作必須用直接尋址(位尋址)。33*對STC15F2K60S2單片機內(nèi)部RAM的80HFFH單元只能使用R
24、i間接尋址方式訪問。將累加器A壓入堆?;驈棾龆褩r, 應(yīng)用PUSH ACC和POP ACC指令, 不能用PUSH A和POP A指令。否則, 程序編譯會出錯。因累加器寫成A或ACC在匯編語言指令中有區(qū)別, 使用A, 表示使用寄存器尋址方式; 而使用ACC時, 表示使用直接尋址方式。4.5.2邏輯操作類指令(24條)邏輯操作類指令完成與、或、異或、清“0”、求反、左右移位等邏輯操作,共有24條。分類:單操作數(shù)和雙操作數(shù)單操作數(shù): 專對累加器A進(jìn)行的邏輯操作, 包括: 清“0”、求反、左右移位等,操作結(jié)果保存在累加器A中。雙操作數(shù): 累加器A或直接尋址單元作為第一操作數(shù)和第二操作數(shù)之間的邏輯與、或
25、和異或操作,結(jié)果保存在A中或直接尋址單元中。第二操作數(shù)可以是立即數(shù)、寄存器Rn、內(nèi)部數(shù)據(jù)RAM單元或者SFR。34*CLR A; CPL A; RL(C) A; RR(C) A9個助記符功能指令形式執(zhí)行結(jié)果單操作數(shù)清0CLR A A0取反CPL A4位環(huán)移SWAP A帶進(jìn)位循環(huán)右移RRC A4.5.2邏輯操作類指令(24條)35*循環(huán)左移RL A帶進(jìn)位循環(huán)左移RLC A循環(huán)右移RR AAAAAA9個助記符數(shù)據(jù)傳送類指令(數(shù)據(jù)交換指令)4.5.2邏輯操作類指令(24條)功能指令形式執(zhí)行結(jié)果雙操作數(shù)與()ANLORL A, XRL或()異或()36*#dataaddr8RiRnA#dataANLO
26、RL addr8, XRL addr8addr8 Y addr8addr8 Y addr8addr8 YY代表格式中第二操作數(shù) AAX AAX AAXX代表格式中第二操作數(shù)9個助記符4.5.2邏輯操作類指令(24條)功能指令形式執(zhí)行結(jié)果雙操作數(shù)與()ANLORL A, XRL或()異或()37*#dataaddr8RiRnA#dataANLORL addr8, XRL addr8addr8Y addr8addr8 Y addr8addr8 YY代表格式中第二操作數(shù) AAX AAX AAXX代表格式中第二操作數(shù)9個助記符見附錄 E附表 E-34.5.2邏輯操作類指令(24條)功能指令形式執(zhí)行結(jié)果
27、雙操作數(shù)與()ANLORL A, XRL或()異或()38*#dataaddr8RiRnA#dataANLORL addr8, XRL addr8addr8Y addr8addr8 Y addr8addr8 YY代表格式中第二操作數(shù) AAX AAX AAXX代表格式中第二操作數(shù)9個助記符數(shù)據(jù)傳送類指令(數(shù)據(jù)交換指令)算術(shù)運算類*見附錄 E附表 E-34.5.2邏輯操作類指令 對累加 器A進(jìn)行的邏輯操作 對累加器A進(jìn)行的邏輯操作包括清“0” 、求反和移位:1、累加器A清“0” CLR A ;A0,把00H送入累加器A中2、累加器A求反 CPL A ;A ,把累加器內(nèi)容按位求反后送入累加器A中39
28、*例如,設(shè)累加器A原來內(nèi)容為67H執(zhí)行“CLR A”后將變成00H,再執(zhí)行“CPL A”后將變?yōu)?FFH3、累加器A左右移位 RL A;累加器左循環(huán)移位 RLC A;累加器通過CY左循環(huán)移位 RR A;累加器右循環(huán)移位 RRC A;累加器通過CY右循環(huán)移位 SWAP A ;累加器高低半字節(jié)互換 左移一位相當(dāng)于乘以2,右移一位相當(dāng)于除以240*例 MOV A ,#01H;A01H RL A ;A02H RL A ;A04H RL A ; A08H 若繼續(xù)執(zhí)行下面指令: RR A ;A04H RR A ;A02H RR A ;A01H,累加器內(nèi)容又變?yōu)?。 通過進(jìn)位標(biāo)志CY的移位可用于檢查一個字節(jié)
29、中各位的狀態(tài)或用于逐位輸出的情況,也可構(gòu)成多個字節(jié)的移位操作。,數(shù)據(jù)傳送類指令(數(shù)據(jù)交換指令)3、累加器A左右移位【例4-3】 在40H和41H中存放一個雙字節(jié)數(shù)據(jù)(即16位數(shù)據(jù)), 高位字節(jié)數(shù)據(jù)在41H中, 低位字節(jié)數(shù)據(jù)在40H中,試將其除以2。解: 利用循環(huán)右移指令可以將一個字節(jié)的數(shù)據(jù)除以2。如果將雙字節(jié)數(shù)據(jù)除以2,可以考慮使用帶進(jìn)位標(biāo)志CY的循環(huán)右移指令。程序代碼如下: CLR C ;先將進(jìn)位標(biāo)志清零, 為第一次移位做準(zhǔn)備 MOV A, 41H RRC A MOV 41H, A ;高位字節(jié) MOV A, 40H RRC A MOV 40H, A41*A (41H)A (40H)D0(41
30、H)001H02HD000H81H假設(shè)(41H)= 01H, (40H)= 02H : 258D0081H:129111 雙操作數(shù)邏輯操作指令42*邏輯操作是按位進(jìn)行的。“ANL”指令常用來屏蔽字節(jié)中的某些位, “某位 ANL 0 ” 則該位清0; “某位 ANL 1 ”則該位值不變;“ORL”指令常用來使字節(jié)中的某些位置1, “某位 ORL 1 ”則該位置1, “某位 ORL 0 ”則該位值不變;“XRL”指令用來對字節(jié)中某些位取反, 某位 “異或” 1則該位取反,某位 “異或” 0保留該位不變 0110 0011 1111 0000 0110 0000 0110 0011 1111 000
31、0 1111 0011 0110 0011 1111 0000 1001 0011 雙操作數(shù)邏輯操作指令例如,設(shè)A的內(nèi)容為63H,R2為0AAH,分別執(zhí)行命令(ANL、ORL、XRL)后,結(jié)果如下: ANL A, R2 ;結(jié)果A=22H ORL A, R2 ;結(jié)果A=0EBH XRL A, R2 ;結(jié)果A=0C9H43*A=0C9H 0110 0011 1010 1010 0010 0010 0110 0011 1010 1010 1110 1011 0110 0011 1010 1010 1100 1001A=22HA=0EBH 雙操作數(shù)邏輯操作指令例如,設(shè)50H單元的內(nèi)容為0AAH, A中
32、內(nèi)容為15H, 則分別執(zhí)行下面指令時的結(jié)果如下: ANL 50H, #0F0H ; (50H)0F0H=0AAH 0F0H;結(jié)果(50H)=0A0H, 屏蔽50H單元的低4位(清零) ORL 50H, #0FH ; (50H) 0F0H=0AAH 0FH ;結(jié)果(50H)= 0AFH,將50H單元的低4位置1 XRL 50H, A ;(50H)(A),結(jié)果(50H)=0BFH 44* 1010 1010 0001 0101 1011 1111 雙操作數(shù)邏輯操作指令當(dāng)用邏輯與、或、異或指令修改一個并行I/O口輸出內(nèi)容時,則原始值將從該輸出口的鎖存器中讀取,而不是從該輸出口的引腳上讀取。45*OR
33、L P0, #0FH 例:若原(P0輸出鎖存器)=32H, (P0引腳狀態(tài))=0C2H, 則執(zhí)行下面指令后(P0輸出鎖存器)=3FH , (P0引腳狀態(tài))=0C2H(不變)。運算輸入是(P0輸出鎖存器)=32H或80H然而執(zhí)行:ORL A, P0 若 (A)=0FH, 則執(zhí)行上面指令后(P0輸出鎖存器)=32H (不變), (P0引腳狀態(tài))=0C2H (不變), (A)= 0CFH 。運算輸入是(P0引腳狀態(tài))=0C2H準(zhǔn)雙向口工作模式的結(jié)構(gòu)準(zhǔn)雙向口有3個上拉場效應(yīng)管T1,T2,T3, 以適應(yīng)不同需要。其中,T1稱為強上拉, 上拉能力可達(dá)20mA; T2稱為極弱上拉, 上拉能力一般為30A;
34、T3稱為弱上拉, 一般上拉能力為150A250A, 典型值為200A。輸出低電平時,最大灌電流可達(dá)20mA。*46強極弱弱P0P5【例4-4】 設(shè)兩位用ASCII碼表示的數(shù)分別保存在40H、41H單元中, 編程把其轉(zhuǎn)換成兩位BCD數(shù), 并以壓縮形式存入40H單元中。 解: 方法一: ANL 40H, #0FH ;40H的ASC碼變成BCD碼 ANL 41H, #0FH ; 41H的ASC碼變成BCD碼 MOV A, 41H;在A中將(41H)左移4位后與(40H)組合 RL A ;該行起A左移4位 RL A RL A RL A ORL 40H, A ;合并結(jié)果存40H單元中 雙操作數(shù)邏輯操作指
35、令47*數(shù)字09的ASCII: 30H39HSWAP A假設(shè): (40H)=32H, (41H)=39H,方法二(40H)=02H(A)=09H(41H)=09H(A)=90H(40H)=92H壓縮BCD碼(92H)BCD 雙操作數(shù)邏輯操作指令【例4-4】方法二:使用SWAP指令會使程序更簡煉。 ANL 40H, #0FH ;40H的ASC碼變成BCD碼 MOV A, 41H ; ANL A, #0FH ;41H的ASC碼變成BCD碼 SWAP A ;高、低4位交換 ORL 40H, A ;結(jié)果存40H單元中48*4.5.3算術(shù)運算類指令 (24條)指令助記符影響標(biāo)志備注CYOVACADD(加
36、) “”表示可置1或清“0”,“0”表示總清“0”空表示不構(gòu)成影響ADDC(帶進(jìn)位加)SUBB(帶借位減)MUL(乘)0DIV(除)0DA(二十進(jìn)制調(diào)整)49* 該類指令主要完成加、減、乘、除四則運算,以及增量、減量和二十進(jìn)制調(diào)整操作。除增量、減量指令外,大多數(shù)算術(shù)運算指令會影響到狀態(tài)標(biāo)志寄存器PSW。表4-3 算術(shù)運算類指令對標(biāo)志的影響INCDEC8個助記符4.5.3算術(shù)運算類指令 (24條)50*8個助記符 該類指令主要完成加、減、乘、除四則運算,以及增量、減量和二十進(jìn)制調(diào)整操作。除增量、減量指令外,大多數(shù)算術(shù)運算指令會影響到狀態(tài)標(biāo)志寄存器PSW。見附錄 E附表 E-24.5.3算術(shù)運算類
37、指令 (24條)51*8個助記符 該類指令主要完成加、減、乘、除四則運算,以及增量、減量和二十進(jìn)制調(diào)整操作。除增量、減量指令外,大多數(shù)算術(shù)運算指令會影響到狀態(tài)標(biāo)志寄存器PSW。位操作*見附錄 E附表 E-2 加減運算指令 (12條)52*1、加法指令:(4條) ADD A, #data8 ;AA+#data8 ADD A, addr8 ;AA+(addr8) ADD A, Ri ;AA+(Ri) ADD A, Rn ;AA+Rn把源字節(jié)變量與累加器相加, 結(jié)果保存在累加器中。在加減運算指令中,以累加器A為第一操作數(shù),并存放操作后的結(jié)果。第二操作數(shù)可以是立即數(shù)、工作寄存器、寄存器間接尋址字節(jié)或直
38、接尋址字節(jié)。運算結(jié)果會影響溢出標(biāo)志OV、進(jìn)位CY、輔助進(jìn)位AC和奇偶標(biāo)志P。1、加法指令:(4條)例, MOV A, #0C3H ; -61的補碼送A ADD A, #0AAH; 加-86的補碼運算后,CY=1, OV=1, AC=0, A=6DH, PSW=85H 溢出標(biāo)志OV取決于帶符號數(shù)運算,和的第6、7位中有一位產(chǎn)生進(jìn)位而另一位不產(chǎn)生進(jìn)位,則使OV置1,否則OV被清0。OV=1產(chǎn)生溢出。53* 1100 0011+ 1010 1010 10110 1101位號D7D6D5D4D3D2D1D0符號CYACF0RS1RS0OVF1P1 0 0 0 0 1 0 1執(zhí)行指令: ADDC A,
39、R0 運行結(jié)果: A=0000 0000B, AC=1,CY=1,OV=02、帶進(jìn)位加法指令 (4條) ADDC A, #data8 ;AA+#data 8 +CY ADDC A, addr8 ;AA+(addr8) +CY ADDC A, Ri ;AA+(Ri) +CY ADDC A, Rn ;AA+Rn +CY 除了相加時把進(jìn)位位也加上外,其他與一般加法指令完全相同。54*例, 設(shè)累加器A內(nèi)容為0AAH(-86補碼), R0內(nèi)容為55H, C內(nèi)容為1, 1010 1010+ 0101 0101 1111 1111+ 1 10000 0000 2、帶進(jìn)位加法指令(4條)【例4-5】設(shè)雙字節(jié)加
40、法中,被加數(shù)放20H、21H單元,加數(shù)放30H、31H單元,和存放在40H、41H單元,若高字節(jié)相加有進(jìn)位則轉(zhuǎn)OVER處執(zhí)行。試編程實現(xiàn)之。 解:程序代碼如下:55*ADDM: MOV A, 20H;取低字節(jié)被加數(shù)ADD A, 30H;低位字節(jié)相加,進(jìn)位C MOV 40H, A;結(jié)果送40H單元 MOV A, 21H;取高字節(jié)被加數(shù) ADDC A, 31H;加高字節(jié)和低位來的進(jìn)位 MOV 41H, A ;結(jié)果送41H單元, 高位字節(jié)進(jìn)位C JC OVER ;若有進(jìn)位,則轉(zhuǎn)OVER處執(zhí)行 OVER: 低字節(jié)高字節(jié) (21H) (20H) +(31H) (30H) (41H) (40H) 3、帶借
41、位減指令(4條) SUBB A, #data8 ;AA #data8 CY SUBB A, addr8 ;AA(addr8) CY SUBB A, Ri ;AA (Ri) CY SUBB A, Rn ;AA Rn CY 在加法中,CY=1表示有進(jìn)位,CY=0表示無進(jìn)位; 在減法中,CY=1則表示有借位,CY=0表示無借位。56*OV=1表示帶符號數(shù)相減時, 從一個正數(shù)中減去一個負(fù)數(shù)得出了一個負(fù)數(shù)(如3H-80H)或從一個負(fù)數(shù)中減去一個正數(shù)時得出一個正數(shù)的錯誤情況(如80H-2H) 。和加法類似, 該標(biāo)志也是由運算時,差的第6、7位兩者借位狀態(tài)經(jīng)異或操作而得。因減法只有帶借位減一條指令, 所以在
42、首次進(jìn)行單字節(jié)相減時, 須先清借位位CY, 以免相減后結(jié)果出錯。結(jié)果超出了符號數(shù)的表示范圍 0000 0011- 1000 0000 1000 00113、帶借位減指令(4條)例如,設(shè)累加器A的內(nèi)容為D9H,R0的內(nèi)容為87H,求兩者相減結(jié)果。 CLR C SUBB A, R0執(zhí)行結(jié)果:A=52H,CY=0,OV=0 若運算兩數(shù)為無符號數(shù),則其溢出與否和OV狀態(tài)無關(guān),而靠CY是否為1予以判別,OV僅表明帶符號數(shù)運算時是否溢出。57* 1101 1001 1000 0111 0101 0010若是帶符號數(shù)-27H-79H52HD9H- 87H3、帶借位減指令(4條)【例4-6】 兩字節(jié)數(shù)相減,
43、設(shè)被減數(shù)放在20H、21H單元,減數(shù)放在30H、31H單元, 差放在40H、41H單元。若高字節(jié)相減有借位則轉(zhuǎn)OVER處執(zhí)行, 試編程實現(xiàn)之。解:程序代碼如下:58*SUBM: CLR C ;低字節(jié)減之前借位CY清0 MOV A, 20H ;被減數(shù)送A SUBB A, 30H ;低位字節(jié)相減 MOV 40H, A ;結(jié)果送40H單元 MOV A, 21H ;被減數(shù)高字節(jié)送A SUBB A, 31H ;高字節(jié)相減 MOV 41H, A ;結(jié)果送41H單元 JC OVER ;若有借位, 則轉(zhuǎn)OVER處執(zhí)行 OVER: 低字節(jié)高字節(jié) (21H) (20H) - (31H) (30H) (41H) (
44、40H) 乘除運算指令(2條)乘除運算指令在累加器A 和寄存器B之間進(jìn)行,運算結(jié)果保存在累加器A和寄存器B中。59*1、乘法指令(1條)乘法指令: MUL AB把累加器A 和寄存器B中的8位無符號整數(shù)相乘;16位乘積低字節(jié)在累加器A中,高字節(jié)在寄存器B中;若乘積大于255 (0FFH), 則溢出標(biāo)志位置 “1”, 否則清 “0”, 運算結(jié)果總使進(jìn)位標(biāo)志CY清“0” 。乘法指令可以豎式表示:1、乘法指令(1條)例如,設(shè)A=82H(130),B=38H(56),執(zhí)行指令: MUL AB結(jié)果: 乘積為1C70H (7280), A=70H, B=1CH,OV=1, CY=060*例4-7 用單字節(jié)乘
45、法指令進(jìn)行多字節(jié)乘法運算。設(shè)雙字節(jié)數(shù)低8位存放在30H, 高8位存放在31H單元, 單字節(jié)數(shù)存放在40H單元, 編程實現(xiàn)雙字節(jié)乘以單字節(jié)的運算, 乘積按由低位到高位依次存放在50H, 51H, 52H單元中。 解:雙字節(jié)數(shù)乘以單字節(jié)數(shù), 設(shè)雙字節(jié)數(shù)用X2X1表示, 單字節(jié)數(shù)用Y表示, 則其乘法可表示為: ( X228+X1 )Y=X2Y28+X1Y (31H) (30H) (40H) (52H)(51H)(50H) 最終結(jié)果在:若乘積大于255 (0FFH), 則溢出標(biāo)志位置 “1”。( X228+X1 ) Y=X2Y28+X1Y利用MUL指令分別進(jìn)行X2Y和X1Y的乘法運算,然后把等號右邊兩
46、項移位相加即得其積??梢允褂孟旅娴呢Q式表示:61*其中, “(X1Y)低” 表示的是X1和Y乘積的低8位, 其他符號代表的含義類似。RES0就是“(X1Y)低” , 即最后結(jié)果的最低位;RES1是“(X1Y)高 + (X2Y)低”(的結(jié)果;RES2是“(X2Y)高” 和由“(X1Y)高 + (X2Y)低” 產(chǎn)生的進(jìn)位相加的結(jié)果。例4-7程序代碼 MOV A, 30H MOV B, 40H MUL AB ;X1Y MOV 50H, A ;積低字節(jié)存50H MOV 51H, B ;積高字節(jié)存51H MOV A, 31H MOV B, 40H MUL AB ;X2Y ADD A, 51H ;X2Y低
47、8位與X1Y高8位相加作為積的第二字節(jié) MOV 51H, A MOV A, B ;乘積最高字節(jié)送A以便與低位進(jìn)位C相加 ADDC A, #00H ;作用:將C與A相加,最高字節(jié)加低位進(jìn)位C MOV 52H, A ;最高字節(jié)存52H單元62*(X228+X1)Y=X2Y28+X1Y52H, 51H, 50H (31H) (30H) (40H) (52H)(51H)(50H) BABAABAB可能向高位產(chǎn)生進(jìn)位C2、除法指令(1條)除法指令: DIV AB 該指令把累加器A中的8位無符號整數(shù)除以寄存器B中8位無符號整數(shù), 所得結(jié)果的商放在累加器A中,余數(shù)在寄存器B中, 63*注意: 若除數(shù)(B中內(nèi)
48、容)為0H, 則執(zhí)行后結(jié)果為不定值, 并置位溢出標(biāo)志OV。例, 設(shè)A內(nèi)容為147(93H), B內(nèi)容為13(0DH), 則執(zhí)行命令: DIV AB 執(zhí)行結(jié)果:A=0BH,B=04H,OV=0,CY=0若除數(shù)(B中內(nèi)容)不為0標(biāo)志位CY和OV均清“0” 。 增量、減量指令(9條)增量指令完成加1運算,減量運算完成減1運算。這兩條指令均不影響標(biāo)志位(INC A, DEC A 影響標(biāo)志P)。1、增量指令(5條) INCA;A A+1 INCaddr8;(addr8) (addr8) +1 INCRi ;(Ri) (Ri) +1 INCRn;Rn Rn+1 INCDPTR;DPTR DPTR+164*
49、1、增量指令(5條)注意: INC指令將指定變量加1,結(jié)果送回原地址單元,原來內(nèi)容若為0FFH,加1后將變成00H,運算結(jié)果不影響任何標(biāo)志位(INC A 影響奇偶標(biāo)志位P)。例如,設(shè)R0=7EH,內(nèi)部數(shù)據(jù)RAM中 (7EH) =0FFH, (7FH) =40H,則執(zhí)行指令: INC R0 ; (7EH) 00H INC R0 ;R0 R0+1,執(zhí)行后,R0=7FH INC R0 ; (7FH) 41H65*2、減量指令(4條) DECA;A A - 1 DECaddr8;(addr8) (addr8) - 1 DECRi;(Ri) (Ri) - 1 DECRn;Rn Rn - 1注意: DEC
50、指令將指定變量減1, 結(jié)果送回原地址單元, 不影響任何標(biāo)志位, 原內(nèi)容若為00H, 減1后變成0FFH。66*例如程序:MOV 7EH, #00H ; (7EH) 00H DEC 7EH ; (7EH) 0FFH 00H -1DEC 7EH ; (7EH) 0FFH -1(DEC A 影響奇偶標(biāo)志位P)2、減量指令(4條) DECA;A A - 1 DECaddr8;(addr8) (addr8) - 1 DECRi;(Ri) (Ri) - 1 DECRn;Rn Rn - 1注意: DEC指令將指定變量減1, 結(jié)果送回原地址單元, 不影響任何標(biāo)志位, 原內(nèi)容若為00H, 減1后變成0FFH。6
51、7*例如程序:MOV R1, #7FH ; (R1) 7FH MOV 7EH, #00H ; (7EH) 00H MOV 7FH, #40H ; (7FH) 40H DEC R1 ; (7FH) 3FH 40H -1DEC R1 ; (R1) 7EH 7FH -1DEC R1 ; (7EH) 0FFH 00H -1(DEC A 影響奇偶標(biāo)志位P)(若A=0, DEC A 后, A中還是偶數(shù)個1, 不影響P) 二十進(jìn)制的加法的調(diào)整指令(1條)指令如下: DA A該指令的調(diào)整條件和方法:若A3-09或AC=1, 則A3-0A3-006H;若A7-49或CY=1, 則A7-4A7-46H(A7-0A
52、7-060H)。若兩個條件同時滿足或者A7-4=9且低4位修正有進(jìn)位,則A7-0A7-066H。68*DA指令使用說明是對二十進(jìn)制加法進(jìn)行調(diào)整的指令。兩個壓縮型BCD碼按二進(jìn)制數(shù)規(guī)則相加, 須經(jīng)本條指令調(diào)整后才能得到壓縮型的BCD碼和數(shù)。 1000 0111+ 0110 1000 1110 1111+ 0110 0110 10101 01018768CY原因:壓縮BCD碼要求按照十進(jìn)制規(guī)則運算、進(jìn)位, 但計算機只能按照16(二)進(jìn)制規(guī)則運算、進(jìn)位。EF66155MOV A, 68HADD A, 87HDA A DA指令使用說明因指令要用AC、CY等標(biāo)志位才能起到正確的調(diào)整作用, 因此它需跟在加
53、法(ADD, ADDC)指令后面使用。若該指令前無加法指令, (不)能用DA A完成累加器A內(nèi)容的二十進(jìn)制轉(zhuǎn)換。對用戶而言,只要保證參加運算的兩數(shù)為BCD碼, 并先對BCD碼執(zhí)行二進(jìn)制加法運算(用ADD, ADDC指令), 然后緊跟一條DA A指令即可。DA A指令不能對減法進(jìn)行十進(jìn)制調(diào)整。DA指令不清除標(biāo)志位C, 若高4位有進(jìn)位, 則置C為1,否則, 不改變進(jìn)位標(biāo)志C。69* 二十進(jìn)制調(diào)整指令70*例4-8 設(shè)計6位BCD碼加法程序。設(shè)被加數(shù)在內(nèi)部RAM中32H, 31H, 30H單元, 加數(shù)在42H, 41H,40H單元, 相加和放在52H, 51H, 50H單元, 忽略加后最高位進(jìn)位(溢
54、出)。解:程序代碼如下:BCDADD:MOV A, 30H ;第一字節(jié)加 ADD A, 40H DA A MOV 50H,A ;存第一字節(jié)和(BCD碼) MOV A, 31H ;第二字節(jié)加 ADDC A, 41H DA A MOV 51H, A ;存第二字節(jié)和(BCD碼) MOV A, 32H ;第三字節(jié)加 ADDC A, 42H DA A MOV 52H,A ;存第三字節(jié)和(BCD碼)低字節(jié) (32H)(31H)(30H) +(42H)(41H)(40H) (52H)(51H)(50H) 二十進(jìn)制調(diào)整指令【例4-9】假設(shè)有兩個十進(jìn)制數(shù),被減數(shù)保存在30H單元,減數(shù)保存在40H單元。編程實現(xiàn)二
55、者的減法運算, 結(jié)果存50H單元中。解: 利用十進(jìn)制加法調(diào)整指令進(jìn)行十進(jìn)制減法調(diào)整, 必須采用補碼相加的方法, 用9AH(即十進(jìn)制100)減去減數(shù)即得以10(每位, 兩位為100)為模的減數(shù)補碼。程序代碼如下:BCDSUB:CLR C ;清進(jìn)位位MOV A, #9AH ;求減數(shù)補碼SUBB A, 40H ;(40H)中是減數(shù) ADD A, 30H ;進(jìn)行補碼相加DA AMOV 50H, A ;結(jié)果(差)存50H單元71*討論: 被減數(shù)大于減數(shù)時, 結(jié)果容易理解;被減數(shù)小于減數(shù)時, 結(jié)果可看成向百位借位而得到的結(jié)果; 或?qū)再求補碼即得絕對值: (9AH-(A);再處理符號位(見下頁)參見4.9
56、 節(jié) “多字節(jié)十進(jìn)制BCD碼減法”無十進(jìn)制減法調(diào)整指令設(shè)(30H)=67H, (40H)=56H設(shè)(30H)=56H, (40H)=67H4-6-4 二十進(jìn)制調(diào)整指令【例4-9】編程實現(xiàn)兩個十進(jìn)制數(shù)減法運算,被減數(shù)存在30H單元,減數(shù)存在40H,結(jié)果存50H, 符號位標(biāo)志存49H。72*解: 程序代碼如下:BCDSUB:CLR C ;清進(jìn)位位MOV A, #9AH ;求減數(shù)補碼SUBB A, 40H ADD A, 30H ;進(jìn)行補碼相加DA AMOV 50H, A ;結(jié)果(差)的絕對值存50H單元 MOV 49H, #0H ;結(jié)果(差)的正符號位存50H單元 JNC BCDCPL ;減法化為補
57、碼加法無進(jìn)位則結(jié)果為負(fù) LJMP BCDEXITBCDCPL:MOV A, #9AH ;求減數(shù)補碼, 對負(fù)結(jié)果求補 SUBB A, 51H; 對負(fù)結(jié)果求補: 9AH-(A) MOV 49H, #01H ;結(jié)果(差)的符號位存49H單元 MOV 50H, A ;結(jié)果(差)的絕對值存50H單元BCDEXIT:RET設(shè)(30H)=67H, (40H)=56H設(shè)(30H)=56H, (40H)=67H4.5.4 位操作指令(17條) 位操作指令以位作為處理對象,共17條。 位地址表示方式有:直接用位地址(例20H)表示;字節(jié)地址加位號表示,如0B8H.0 (IP.0),20H.1等。對位尋址寄存器,
58、可用字節(jié)寄存器名加位號來表示, 例如P1.0,PSW.4等。位寄存器的定義名稱(見附錄B: STC15.INC,圖3-10可位尋址的SFR中的位地址), 如C (PSW.7)、EA (IE.7)等。用戶使用偽指令事先定義過的符號地址。73*6個助記符, 另5個與字節(jié)操作相同位尋址區(qū)-圖3-10特殊功能寄存器SFR中位地址*特殊功能寄存器SFR中位地址范圍: 80H0FFH。圖3-10 可位尋址的特殊功能寄存器中的位地址74字節(jié)地址能被8整除的特殊功能寄存器SFR,其各位都可按位尋址。80HF8H88H90H98HA0HA8HB0HB8HC0HC8HD0HD8HE0HE8HF0H表4-4 位操作
59、指令的操作碼助記符及對應(yīng)的操作數(shù)4.5.4 位操作指令(17條)75*操 作功 能操作碼操作數(shù)備注位傳送MOVC, bit 或bit, C源地址和目的地址可互換位狀態(tài)控制位清零CLRC或 bitbit表示直接尋址位位取反CPL位置位SETB位邏輯操作與ANLC, bit CC, /bit CCbitC; C/bitCCbitC; C/bitC或ORL位跳轉(zhuǎn)判C判移JCrelrel為相對偏移量JNC判直接尋址位轉(zhuǎn)移JBbit,relJNB為“0”轉(zhuǎn)移,JB為“1”轉(zhuǎn)移JNBJBCJBC尋址位為1轉(zhuǎn)移并清“0”該位6個助記符, 另5個與字節(jié)操作相同4.5.4 位操作指令(17條)76*6個助記符,
60、 另5個與字節(jié)操作相同見附錄 E附表 E-54.5.4 位操作指令(17條)77*6個助記符, 另5個與字節(jié)操作相同轉(zhuǎn)移類*見附錄 E附表 E-5*圖3-10 內(nèi)部RAM中的位地址20H2FH之間單元既可按字節(jié)存取, 也可按位存取,共128位, 位地址范圍: 00H7FH。位尋址區(qū)78位尋址 : MOV C, 20H直接尋址 : MOV A, 20H字節(jié)地址: 20H位尋址區(qū)-圖3-11特殊功能寄存器SFR中位地址:*特殊功能寄存器SFR中位地址范圍: 80H0FFH。圖3-11 可位尋址的特殊功能寄存器中的位地址79字節(jié)地址能被8整除的特殊功能寄存器SFR,其各位都可按位尋址。 位傳送指令(
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度公共場所窗簾清洗與保養(yǎng)服務(wù)合同3篇
- 2025年度離婚后子女撫養(yǎng)權(quán)協(xié)商服務(wù)合同3篇
- 2025年度稅收籌劃與稅務(wù)籌劃合規(guī)性審查合同2篇
- 2025年度恐怖劇本定制與特效設(shè)計合同3篇
- 2024版輕鋼房屋建造協(xié)議模板協(xié)議
- 二零二四商鋪租賃合作協(xié)議:教育培訓(xùn)機構(gòu)商鋪租賃合同3篇
- 2025年度餐飲品牌連鎖拓展合同范本3篇
- 二零二四年家居裝飾團(tuán)購合同3篇
- 2025年度材料墊資供應(yīng)鏈金融服務(wù)合同3篇
- 2024年鐵礦石采購中介服務(wù)合同樣本
- 使用錯誤評估報告(可用性工程)模版
- 公司章程(二個股東模板)
- GB/T 19889.7-2005聲學(xué)建筑和建筑構(gòu)件隔聲測量第7部分:樓板撞擊聲隔聲的現(xiàn)場測量
- 世界奧林匹克數(shù)學(xué)競賽6年級試題
- 藥用植物學(xué)-課件
- 文化差異與跨文化交際課件(完整版)
- 國貨彩瞳美妝化消費趨勢洞察報告
- 云南省就業(yè)創(chuàng)業(yè)失業(yè)登記申請表
- UL_標(biāo)準(zhǔn)(1026)家用電器中文版本
- 國網(wǎng)三個項目部標(biāo)準(zhǔn)化手冊(課堂PPT)
- 快速了解陌生行業(yè)的方法論及示例PPT課件
評論
0/150
提交評論