




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第三章 80C51單片微機的指令系統(tǒng)浙江大學電氣學院彭勇剛第三章第三章 單片微機的基本結(jié)構(gòu)單片微機的基本結(jié)構(gòu)一、一、MCS-51系列單片機匯編指令基本情況系列單片機匯編指令基本情況51系列單片機指令集含有系列單片機指令集含有111條條指令指令 三 指令格式及常用符號一)、單字節(jié)指令一)、單字節(jié)指令1 1、8 8位編碼僅為操作碼位編碼僅為操作碼:如:如:INC A。該指令的編碼為:該指令的編碼為:0000 0100B,其十六進制表示為其十六進制表示為04H,累加器,累加器A隱含在操作碼隱含在操作碼中。指令的功能是累加器中。指令的功能是累加器A的內(nèi)容加的內(nèi)容加1。 注意:在指令中用注意:在指令中用
2、“A”表示累加器,而用表示累加器,而用“ACC”表示累加器對應的地址(表示累加器對應的地址(E0H)。)。 高高5位位為操作碼,為操作碼,低低3位位為存放操作數(shù)的寄存器編為存放操作數(shù)的寄存器編碼。如:碼。如:MOV A,R0 編碼編碼為為1110 1000B,其十六進制表示為,其十六進制表示為E8H(低(低3位位000為寄存器為寄存器R0的編碼)。的編碼)。功能功能是將當前是將當前工作寄存器工作寄存器R0中的數(shù)據(jù)傳送到累加器中的數(shù)據(jù)傳送到累加器A中。中。 28位編碼含有操作碼和寄存器編碼位編碼含有操作碼和寄存器編碼二)、雙字節(jié)指令二)、雙字節(jié)指令 第一字節(jié)第一字節(jié)表示操作碼,表示操作碼,第二個
3、字節(jié)第二個字節(jié)表示參表示參與操作的數(shù)據(jù)或數(shù)據(jù)存放的地址。與操作的數(shù)據(jù)或數(shù)據(jù)存放的地址。如:如:MOV A,#50H 編碼編碼為為0111 0100B,0101 0000B。其十。其十六進制表示為六進制表示為74H,50H。功能功能是將立即數(shù)是將立即數(shù)“50H”傳送到累加器傳送到累加器A中。中。 三、三字節(jié)指令三、三字節(jié)指令 指令的第一字節(jié)指令的第一字節(jié)表示該指令的操作碼,表示該指令的操作碼,后后兩個字節(jié)兩個字節(jié)表示參與操作的數(shù)據(jù)或數(shù)據(jù)存放的表示參與操作的數(shù)據(jù)或數(shù)據(jù)存放的地址。如:地址。如:MOV 20HMOV 20H,#50H#50H 編碼編碼為為0111 0101B0111 0101B,00
4、10 0000B0010 0000B,0101 0101 0000B0000B。其十六進制表示為。其十六進制表示為75H75H,20H20H,50H50H。功能功能是將立即數(shù)是將立即數(shù)“50H”50H”傳送到內(nèi)部傳送到內(nèi)部RAM RAM 的的20H20H單元中單元中。四、常用符號四、常用符號 RnRidirect #data #data16 addr16 addr11 由由尋址的單元中的內(nèi)容為地址的這尋址的單元中的內(nèi)容為地址的這個單元中的內(nèi)容個單元中的內(nèi)容 3.2 3.2 匯編語言的尋址方式匯編語言的尋址方式指令執(zhí)行過程中大多數(shù)指令執(zhí)行過程中大多數(shù)情況要用到操作數(shù),情況要用到操作數(shù),操作數(shù)在哪
5、里?操作數(shù)在哪里?如何找到操作數(shù)?如何找到操作數(shù)?確定確定“操作數(shù)操作數(shù)”或或“操操作數(shù)的地址作數(shù)的地址”的基本方的基本方式式七種尋址方式:七種尋址方式:立即尋址立即尋址直接尋址直接尋址寄存器尋址寄存器尋址寄存器間接尋址寄存器間接尋址變址尋址變址尋址相對尋址相對尋址位尋址位尋址該尋址方式下的指令中會該尋址方式下的指令中會直接給出操作數(shù)直接給出操作數(shù),稱為,稱為立立即操作數(shù),即操作數(shù),可以是可以是 8位或位或16位數(shù),前綴符號是位數(shù),前綴符號是“#”例如:例如:MOV A,# 3AH;A#3AH 74HA 操作碼操作碼立即數(shù)立即數(shù)程序存儲器程序存儲器PCPC+13AH3AHMOV DPTR,#
6、0123H ;DPTR#0123H90H01H23H01H23HPCPC+1PC+2操作碼操作碼高位立即數(shù)高位立即數(shù)低位立即數(shù)低位立即數(shù)程序存儲器程序存儲器SFRDPHDPL該尋址方式下的指令中會該尋址方式下的指令中會直接給出操作數(shù)地址直接給出操作數(shù)地址,能進行直接尋址的存儲空間有能進行直接尋址的存儲空間有SFRSFR寄存器和內(nèi)部寄存器和內(nèi)部數(shù)據(jù)數(shù)據(jù)RAM(00H-7FH)RAM(00H-7FH)。例如:例如:MOV PSW,# 20H; PSW#20H例如:例如:MOV A,70H ;A(70H)74H70HPCPC+1操作碼操作碼直接地址直接地址程序存儲器程序存儲器內(nèi)部內(nèi)部RAM70HAX
7、XXX操作數(shù)在指定的操作數(shù)在指定的寄存器寄存器中,只要在語句中指明寄存中,只要在語句中指明寄存器,就找到了操作數(shù)。器,就找到了操作數(shù)。 例如:例如:MOV A, R5 ; A(R5)101PC操作碼操作碼程序存儲器程序存儲器內(nèi)部內(nèi)部RAMR5AXXXXR6R71101以寄存器中內(nèi)容為地址,以該地址中內(nèi)容為操作數(shù)以寄存器中內(nèi)容為地址,以該地址中內(nèi)容為操作數(shù)的尋址方式的尋址方式 例如:例如:MOV A, R1 ; A(R1)將將R1R1的內(nèi)容送作為地址,將該地址所對應的的內(nèi)容送作為地址,將該地址所對應的RAMRAM單單元的內(nèi)容送元的內(nèi)容送累加器累加器。1PC操作碼操作碼程序存儲器程序存儲器內(nèi)部內(nèi)部
8、RAMR1AXX68H111001XX68HMOV R0,A ;(;(R0)A MOVX A,R1 ;A(R1) MOVX DPTR,A ;外部;外部RAM(DPTR)APUSH A;SP(SP)+1,(,(SP)(A)把把A A的內(nèi)容送到以的內(nèi)容送到以R0R0的內(nèi)容為地址的內(nèi)部的內(nèi)容為地址的內(nèi)部RAMRAM單元中單元中把以把以R1R1的內(nèi)容為地址的的內(nèi)容為地址的片外數(shù)據(jù)片外數(shù)據(jù)RAMRAM單元(小于單元(小于256B256B)中)中的內(nèi)容送到的內(nèi)容送到A A中。中。把把A A中的內(nèi)容送到以中的內(nèi)容送到以DPTRDPTR的內(nèi)容為地址的的內(nèi)容為地址的片外數(shù)據(jù)片外數(shù)據(jù)RAMRAM中中變址尋址是以某
9、個寄存器的內(nèi)容為變址尋址是以某個寄存器的內(nèi)容為基本地址基本地址,然后,然后在這個基本地址的基礎上加上在這個基本地址的基礎上加上地址偏移量地址偏移量才是真正才是真正的操作數(shù)所在單元的地址的操作數(shù)所在單元的地址 一般采用一般采用DPTRDPTR或者或者PCPC的內(nèi)的內(nèi)容作為容作為基本地址基本地址累加器累加器A A的內(nèi)容作為的內(nèi)容作為地址地址偏移量偏移量實際操作數(shù)的地址實際操作數(shù)的地址=(DPTR)+(A)或)或?qū)嶋H操作數(shù)的地址實際操作數(shù)的地址=(PC)+(A)例如:例如:MOVC A, A+DPTR 操作碼操作碼程序存儲器程序存儲器SFRA100100111EH02H030FHXXDPHDPLF1
10、H02F1H02F1H+1EH=030FHXXA(A)+(DPTR)主要實現(xiàn)程序的分支轉(zhuǎn)移主要實現(xiàn)程序的分支轉(zhuǎn)移 。相對尋址是以相對尋址是以PC當前值當前值為基址(為基址( PCPC當前值是執(zhí)當前值是執(zhí)行完當前指令后的值,也就是當前指令的行完當前指令后的值,也就是當前指令的PCPC值值+ +指指令所占的字節(jié)數(shù)令所占的字節(jié)數(shù)),加上指令中給出的相對偏移),加上指令中給出的相對偏移量量rel形成有效的轉(zhuǎn)移地址,即:形成有效的轉(zhuǎn)移地址,即:目的地址目的地址 = 源地址源地址 + 轉(zhuǎn)移指令字節(jié)數(shù)轉(zhuǎn)移指令字節(jié)數(shù) + rel60HPC操作碼操作碼程序存儲器程序存儲器PC0102H30HXX0100H010
11、1H0102HPC0132H偏移量偏移量0102H +30H= 0132Hrel=30H0132H例如:例如: JZ 30H當當A=0時,時,PCPC+2+rel當當A0時,時,PCPC+2 /程序順序執(zhí)行程序順序執(zhí)行MCS-51系列單片機中有專用的位運算指令,可以系列單片機中有專用的位運算指令,可以對位尋址區(qū)的每一個位進行數(shù)據(jù)傳送、邏輯運算等對位尋址區(qū)的每一個位進行數(shù)據(jù)傳送、邏輯運算等操作操作該指令屬于位操作指令,作用是將該指令屬于位操作指令,作用是將位地址為位地址為07H07H的位單元的位單元( (字字節(jié)地址節(jié)地址20H20H單元的單元的D7D7位位) )傳送到傳送到位累加器位累加器C C
12、中中例如:例如:MOV C, 07H ; C(07H)PC操作碼操作碼程序存儲器程序存儲器20HA2H00PC+107HPSWX07SFRX3.3 數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令(28條條)將源操作數(shù)送到目的操作數(shù)。指令執(zhí)行后,將源操作數(shù)送到目的操作數(shù)。指令執(zhí)行后,源源操作數(shù)不變操作數(shù)不變,目的操作數(shù)被源操作數(shù)取代。,目的操作數(shù)被源操作數(shù)取代。 片內(nèi)數(shù)據(jù)存儲器間傳送片內(nèi)數(shù)據(jù)存儲器間傳送: (MOV16條條)訪問片外數(shù)據(jù)存儲器訪問片外數(shù)據(jù)存儲器: (MOVX4條條)讀程序存儲器讀程序存儲器: (MOVC2條條)數(shù)據(jù)交換數(shù)據(jù)交換: (XCH,XCHD,SWAP5條條)堆棧操作堆棧操作: (PUSH,PO
13、P2條條)片內(nèi)數(shù)據(jù)存儲器間傳送指令片內(nèi)數(shù)據(jù)存儲器間傳送指令: (MOV16條條)一、以累加器一、以累加器A為目的操作數(shù)指令為目的操作數(shù)指令MOV A,Rn;A (Rn)MOV A,direct;A(direct)MOV A,Ri ;A(Ri)MOV A,#data;A #data源操作數(shù)尋源操作數(shù)尋址方式?址方式?這組指令的功能是把源操作數(shù)所指定的內(nèi)容送入累這組指令的功能是把源操作數(shù)所指定的內(nèi)容送入累加器加器A,源操作數(shù)不變源操作數(shù)不變,目的操作數(shù),目的操作數(shù)A被源操作數(shù)被源操作數(shù)取代,所以這個取代,所以這個“送送”的過程實質(zhì)上是的過程實質(zhì)上是復制復制 練一練:若(練一練:若(A)= 8CH,
14、(,(R0)=(35H),),(R6) = 57H,(,(35H)=7AH,(,(70H)=F3H,執(zhí)行下列指令后,累加器,執(zhí)行下列指令后,累加器A的內(nèi)容各的內(nèi)容各為多少?為多少?MOV A,R6 ;MOV A,70H ;MOV A,R0 ;MOV A,#78H ;A = 57HA = F3HA = 7AHA = 78H片內(nèi)數(shù)據(jù)存儲器間傳送指令片內(nèi)數(shù)據(jù)存儲器間傳送指令: (MOV16條條)片內(nèi)數(shù)據(jù)存儲器間傳送指令片內(nèi)數(shù)據(jù)存儲器間傳送指令: (MOV16條條)二、以寄存器二、以寄存器Rn為目的操作數(shù)的指令為目的操作數(shù)的指令MOV Rn,A;Rn AMOV Rn,direct;Rn (direct
15、) MOV Rn,#data;Rn #data這組指令的功能是把源操作數(shù)指定的內(nèi)容復制到當這組指令的功能是把源操作數(shù)指定的內(nèi)容復制到當前的工作寄存器組的寄存器前的工作寄存器組的寄存器R0R7中的某一個中的某一個 源操作數(shù)尋源操作數(shù)尋址方式?址方式?片內(nèi)數(shù)據(jù)存儲器間傳送指令片內(nèi)數(shù)據(jù)存儲器間傳送指令: (MOV16條條)三、以直接地址三、以直接地址direct為目的操作數(shù)的指令為目的操作數(shù)的指令MOV direct,A; direct AMOV direct,direct; direct(direct)MOV direct,#data; direct #dataMOV direct,Rn;dire
16、ct (Rn)MOV direct,Ri;direct (Ri)源操作數(shù)尋源操作數(shù)尋址方式?址方式?這組指令的功能是把源操作數(shù)所指定的內(nèi)容復制到由這組指令的功能是把源操作數(shù)所指定的內(nèi)容復制到由直接地址指出的片內(nèi)直接地址指出的片內(nèi)RAM單元和特殊功能寄存器中單元和特殊功能寄存器中 片內(nèi)數(shù)據(jù)存儲器間傳送指令片內(nèi)數(shù)據(jù)存儲器間傳送指令: (MOV16條條)練一練:若練一練:若R1=30H,(,(30H)=13H,R3 = 15H,分別分析執(zhí)行以下指令后的,分別分析執(zhí)行以下指令后的結(jié)果。結(jié)果。MOV 60H,R3 MOV 40H,R1 ;(;(60H)=15H;(;(40H)=13H片內(nèi)數(shù)據(jù)存儲器間傳送
17、指令片內(nèi)數(shù)據(jù)存儲器間傳送指令: (MOV16條條)四、以間接地址四、以間接地址Ri為目的操作數(shù)的指令為目的操作數(shù)的指令MOV Ri,A;(;(Ri) AMOV Ri,direct;(;(Ri) (direct)MOV Ri,#data;(;(Ri) #data這組指令的功能是把源操作數(shù)所指定的內(nèi)容復制到以這組指令的功能是把源操作數(shù)所指定的內(nèi)容復制到以R0或或R1的內(nèi)容為地址的片內(nèi)的內(nèi)容為地址的片內(nèi)RAM的單元中的單元中 源操作數(shù)尋源操作數(shù)尋址方式?址方式?片內(nèi)數(shù)據(jù)存儲器間傳送指令片內(nèi)數(shù)據(jù)存儲器間傳送指令: (MOV16條條)例如:設(例如:設(30H)=6FH,R1=40H,分析,分析執(zhí)行執(zhí)行
18、MOV R1,30H后的結(jié)果。后的結(jié)果。30H單元中數(shù)據(jù)取出送入單元中數(shù)據(jù)取出送入R1間接尋址的間接尋址的40H單元,單元,故指令執(zhí)行的結(jié)果是(故指令執(zhí)行的結(jié)果是(40H)=6FH 片內(nèi)數(shù)據(jù)存儲器間傳送指令片內(nèi)數(shù)據(jù)存儲器間傳送指令: (MOV16條條)五、以五、以DPTR為目的操作數(shù)的指令為目的操作數(shù)的指令 MOV DPTR,#data16 ;DPTR #data16這條指令的功能是把這條指令的功能是把16位常數(shù)送入位常數(shù)送入DPTR,高,高8為送為送DPH,低,低8位送位送DPL。這是唯一一條這是唯一一條16位立即數(shù)傳位立即數(shù)傳送指令送指令 。例如執(zhí)行例如執(zhí)行 MOV DPTR,#2000H
19、 后,后,(DPTR)= 2000H 目的操作數(shù)目的操作數(shù)尋址方式?尋址方式?訪問片外數(shù)據(jù)存儲器指令:訪問片外數(shù)據(jù)存儲器指令: (MOVX4條條)這類指令實現(xiàn)對片外這類指令實現(xiàn)對片外RAM的的訪問,這些指令的的的訪問,這些指令的特點:特點:(1)必須通過累加器)必須通過累加器A;(;(2)操作碼助記)操作碼助記符是符是MOVXMOVX A,DPTR;A (DPTR)MOVX DPTR,A;(;(DPTR) ADPTR作為片外作為片外RAM的的16位地址指針位地址指針,尋址范圍,尋址范圍64KB,通過,通過P0和和P2進行訪問。進行訪問。Ri是用來訪問低位片外是用來訪問低位片外RAM的的地址指針
20、地址指針,尋址范圍,尋址范圍是片外是片外RAM的低的低256個字節(jié),通過個字節(jié),通過P0口進行訪問??谶M行訪問。MOVX A,Ri ;A (Ri)MOVX Ri,A ;(;(Ri) A訪問片外數(shù)據(jù)存儲器指令:訪問片外數(shù)據(jù)存儲器指令: (MOVX4條條)練習練習1:若(:若(R1) = 26H,片外(,片外(26H)= 48H,分析指令:分析指令:MOVX A,R1執(zhí)行之后的結(jié)果。執(zhí)行之后的結(jié)果。練習練習2:若(:若(DPTR)= 2034H,(,(A)= 10H,分析,分析執(zhí)行指令:執(zhí)行指令:MOVX DPTR,A 之后的結(jié)果。之后的結(jié)果。把片外把片外RAM的的26H單元的內(nèi)容送入累加器,單元
21、的內(nèi)容送入累加器,(A)=48H把把A的內(nèi)容送入片外的內(nèi)容送入片外RAM中地址為中地址為2034H的單元的單元讀程序存儲器指令:讀程序存儲器指令: (MOVC2條條)這類指令用于這類指令用于讀讀片內(nèi)或者片外片內(nèi)或者片外ROM,源操作數(shù)采用,源操作數(shù)采用變址尋址方式變址尋址方式 MOVC A,A+DPTR;A (A)+(DPTR)MOVC A,A+PC;PC (PC)+1,A (A)+(PC) 2、分析以下程序的結(jié)果。、分析以下程序的結(jié)果。 MOV A,#01H MOV DPTR,#TABLE MOVC A,A+DPTR TABLE:DB 41H DB 42H以上指令執(zhí)行的的結(jié)果以上指令執(zhí)行的的
22、結(jié)果A=( )。)。讀程序存儲器指令:讀程序存儲器指令: (MOVC2條條)練習:練習:1、已知、已知A=30H,DPTR=3000H,程序,程序存儲器單元(存儲器單元(3030H)=50H,執(zhí)行,執(zhí)行MOVC A, A+DPTR后,后,A=( )。)。 50H;(;(A)=01H;(;(DPTR)=TABLE;A(TABLE+01H)42H 地址地址 機器代碼機器代碼 源程序源程序0100 7402 MOV A,#02H 0102 83 MOVC A,A+PC0103 00 NOP0104 00 NOP0105 32 DB 32H 讀程序存儲器指令:讀程序存儲器指令: (MOVC2條條);(
23、;(A) = 02H;(;(PC)=0103H, A(0105)以上指令執(zhí)行結(jié)果以上指令執(zhí)行結(jié)果A=( )32H數(shù)據(jù)交換指令:數(shù)據(jù)交換指令: (XCH,XCHD,SWAP5條條)1、字節(jié)交換:、字節(jié)交換:XCH A,Rn;A RnXCH A ,direct;A(direct)XCH A,Ri ;A(Ri) 2、半字節(jié)交換、半字節(jié)交換XCHD A,Ri;A03(Ri)03 3、累加器、累加器A的低的低4位與高位與高4位交換位交換SWAP A ;A03A47 (A)=45H,(,(30H)=7AH數(shù)據(jù)交換指令:數(shù)據(jù)交換指令: (XCH,XCHD,SWAP5條條)堆棧操作指令:堆棧操作指令: (PU
24、SH,POP2條條)數(shù)據(jù)的進棧出棧由指針數(shù)據(jù)的進棧出棧由指針SP統(tǒng)一管理統(tǒng)一管理。堆棧的操。堆棧的操作有兩條專用指令:作有兩條專用指令: PUSH direct;SP(SP)+1,(,(SP)(direct)POP direct;(;(direct)(SP),),SP SP-1堆棧操作指令:堆棧操作指令: (PUSH,POP2條條)圖3-7 指令PUSH操作示意圖片內(nèi)RAM30H11H10HSP片內(nèi)RAM50H40H11H10HSP圖3-8 指令POP操作示意圖40H30H片內(nèi)RAM50H40H11H10H50HSP30H片內(nèi)RAM40H11H10H34HSP30H34H34H執(zhí)行前執(zhí)行前執(zhí)行
25、前PUSH指令后執(zhí)行POP指令后PUSH 40HPOP 30H總結(jié):總結(jié):MCS-51單片機片內(nèi)數(shù)據(jù)傳送途徑單片機片內(nèi)數(shù)據(jù)傳送途徑 直接地址直接地址direct累加器累加器A直接地址直接地址direct間接地址間接地址Ri寄存器寄存器Rn立即數(shù)立即數(shù)#data寄存器寄存器DPTRMCS-51單片機片內(nèi)數(shù)據(jù)傳送圖單片機片內(nèi)數(shù)據(jù)傳送圖課堂練習課堂練習1.MCS-51單片機在訪問外部數(shù)據(jù)存儲器時,其單片機在訪問外部數(shù)據(jù)存儲器時,其地址指針可采用地址指針可采用( )。A.DPTRB.PCC.PSWD.SP2、已知、已知A=10H,DPTR=2000H,程序存儲器單,程序存儲器單元(元(2010H)=4
26、0H,執(zhí)行,執(zhí)行MOVC A, A+DPTR后,后,A=( )。)。A、10H B、40H C、2000H D、2010H課堂練習課堂練習 C、 D、 課堂練習課堂練習4、若(、若(SP)=28H,(,(A)=55H,(,(B)=66H執(zhí)行指令執(zhí)行指令 PUSH A PUSH B 對指令執(zhí)行結(jié)果的描述,下列選項正確的是:對指令執(zhí)行結(jié)果的描述,下列選項正確的是:A、(、(SP)=30H,(,(SP)=55HB、(、(SP)=30H,(,(SP)=66HC、(、(SP)=2AH,(,(SP)=55HD、(、(SP)=2AH,(,(SP)=66H3.4 算術(shù)運算指令算術(shù)運算指令(24條條)MCS-5
27、1MCS-51指令系統(tǒng)中,算術(shù)指令都是針對指令系統(tǒng)中,算術(shù)指令都是針對8 8位無符號數(shù)位無符號數(shù)的,如的,如要進行帶符號或多字節(jié)二進制數(shù)運算,需編寫程序,通過要進行帶符號或多字節(jié)二進制數(shù)運算,需編寫程序,通過執(zhí)行程序來實現(xiàn)。執(zhí)行程序來實現(xiàn)。加法指令:加法指令: (ADD4條條)帶進位加法指令帶進位加法指令: (ADDC4條條)帶借位減法指令帶借位減法指令: (SUBB4條條)加加1/減減1操作:操作: (INC,DEC9條條)單字節(jié)乘單字節(jié)乘/除法指令除法指令: (MUL,DIV2條條)十進制調(diào)整:十進制調(diào)整: (DA A1條條)一、一、加法指令:加法指令: (ADD4條條)ADD A,#da
28、ta ; A(A)+data ADD A, direct ;A(A)+(direct)ADD A, Ri ;A(A)+(Ri)ADD A, Rn ;A(A)+(Rn)這組指令的功能是使得這組指令的功能是使得累加器累加器A可以和可以和內(nèi)部內(nèi)部RAM的的任何單元的內(nèi)容進行相加,也可以和一個任何單元的內(nèi)容進行相加,也可以和一個8位立即數(shù)位立即數(shù)相加,相加相加,相加結(jié)果存放在結(jié)果存放在A 加法運算:加法運算: (ADD4條條)例例 若(若(A)=84H,(,(30H)=8DH,執(zhí)行指,執(zhí)行指令令 ADD A,30H 之后,由于:之后,由于: 即:(即:(A)=11H,(,(CY)=1,(,(AC)=1
29、,(OV)=1(D7有進位,有進位,D6無進位),(無進位),(P)=0。 (A):1 0 0 0 0 1 0 0 + (30H):1 0 0 0 1 1 0 1 進位:1 1 1 結(jié)果: 1 0 0 0 1 0 0 0 1練一練:(練一練:(A)=0C3H,(,(R0)=0AAH,分,分析指令析指令ADD A,R0執(zhí)行后的結(jié)果以及對各標執(zhí)行后的結(jié)果以及對各標志位的影響。志位的影響。加法運算:加法運算: (ADD4條條)運算結(jié)果:運算結(jié)果:A = 6DH,C = 1,OV = 1,AC = 0,P = 1 二、二、帶進位加法指令:帶進位加法指令: (ADDC4條條)ADDC A,Rn ;A(A
30、)+(Rn)+(C)ADDC A,direct ;A (A)+(direct)+(C)ADDC A,Ri ;A (A) +(Ri)+(C)ADDC A,#data ;A (A) + #data +(C) C為來自為來自PSW中的進位位中的進位位C。這里的進位標志。這里的進位標志C是指是指令令執(zhí)行前已經(jīng)存在的進位標志的內(nèi)容執(zhí)行前已經(jīng)存在的進位標志的內(nèi)容。 帶進位加法帶進位加法(ADDC):(A) (A)+(Cy)+(第二操作數(shù)第二操作數(shù))帶進位加法指令:帶進位加法指令: (ADDC4條條)練一練:設(練一練:設(A)= 0AEH,(,(R0)= 81H,(C)= 1,分析執(zhí)行指令,分析執(zhí)行指令A
31、DDC A,R0后的結(jié)后的結(jié)果及對各標志位的影響。果及對各標志位的影響。運算結(jié)果:運算結(jié)果: = 30H,C = 1,OV = 1,AC = 1,P = 0 三、三、帶借位減法指令帶借位減法指令: (SUBB4條條)SUBB A,Rn ;A(A)-(Rn)-(C)SUBB A,direct ;A(A)-(direct)-(C)SUBB A,Ri ;A (A) -(Ri)-(C)SUBB A,#data ;A (A)- #data(C) 帶借位減法帶借位減法(SUBB):A (A)- (Cy)- (第二操作數(shù)第二操作數(shù))例例 若(若(A)=C9H,(,(R2)=54H,(,(CY)=1,執(zhí)行指令
32、,執(zhí)行指令 SUBB A,R2 之后,由于:之后,由于: 即:(即:(A)=74H,(,(CY)=0,(,(AC)=0,(OV)=1(位(位6有借位,位有借位,位7無借位),(無借位),(P)=0。 四、四、加加1操作:操作: (INC 5條條)INC A;A(A) + 1INC Rn;Rn(Rn) + 1INC direct ;(;(direct)(direct)+ 1INC Ri ;(;(Ri)(Ri)+ 1INC DPTR ;DPTR DPTR + 1INC指令是把所指的寄存器內(nèi)容指令是把所指的寄存器內(nèi)容加加1,結(jié)果仍送,結(jié)果仍送回原寄存器回原寄存器 注意:若原來寄存器的內(nèi)容為注意:若原
33、來寄存器的內(nèi)容為0FFH,則加,則加1后后將為將為00H,運算結(jié)果不影響任何標志位。,運算結(jié)果不影響任何標志位。五、五、減減1操作:操作: (DEC4條條)DEC A;A(A)- 1DEC Rn ;Rn(Rn)- 1DEC direct;direct (direct)- 1DEC Ri;(;(Ri)(Ri)- 1 DEC指令是把所指的寄存器內(nèi)容指令是把所指的寄存器內(nèi)容減減1,結(jié)果仍送,結(jié)果仍送回原寄存器回原寄存器 注意:若原來寄存器的內(nèi)容為注意:若原來寄存器的內(nèi)容為00H,則減,則減1后將后將為為0FFH,運算結(jié)果不影響任何標志位。,運算結(jié)果不影響任何標志位。六、 乘法指令指令 功能 編碼 M
34、UL AB A與B中8位無符號數(shù)相乘 A4 這條指令的功能是把累加器A和寄存器B中的兩個8位無符號數(shù)相乘,所得結(jié)果的低低8位放在累加器位放在累加器A中,高中,高8位放在寄存器位放在寄存器B中中。 當乘積大于FFH(大于8位),則OV 置1,否則清0。標志位CY總是被清0的。 六、 除法指令 指令 功能 編碼 DIV AB 8位無符號數(shù)A除以B 84 該指令的功能是進行(A)除以(B)的運算,A和B中的內(nèi)容均為8位無符號整數(shù)。指令操作后,商存于商存于A中,余數(shù)存于中,余數(shù)存于B中中,標志位CY和OV均被清0。但若B中原有的內(nèi)容為00H,則除法結(jié)果將無確定值,此時OV標志位置1,CY標志位仍然為0
35、。 七 .十進制調(diào)整指令(1條)指令 功能 編碼 對中的結(jié)果進行十進制調(diào)整 其規(guī)則如下:執(zhí)行加法操作后,當累加器A中低4位的BCD數(shù)進入進入了無效碼區(qū)(了無效碼區(qū)(1010-1111)或低)或低4位產(chǎn)生進位位產(chǎn)生進位(AC=1),則在低4位進行加6調(diào)整。 執(zhí)行加法操作后,當累加器A中高4位的BCD數(shù)進入進入了無效碼區(qū)(了無效碼區(qū)(1010-1111)或高)或高4位產(chǎn)生進位位產(chǎn)生進位(CY=1),則在高4位進行加6調(diào)整。在調(diào)整過程中若有進位,進位標志位在調(diào)整過程中若有進位,進位標志位CY置置1,若無,若無進位,進位標志位進位,進位標志位CY不變,不變,AC和和OV標志位不受此標志位不受此指令的影
36、響。指令的影響。例例 若(若(A)0101 0110B,表示的,表示的BCD碼為碼為56H,(R2)0110 0111B,表示的,表示的BCD碼為碼為67H,(,(CY)0。執(zhí)行以下指令:。執(zhí)行以下指令:ADD A,R2DA A由于(由于(A)0010 0011B,即,且(,即,且(CY)1,即,即結(jié)果為結(jié)果為BCD數(shù)數(shù)123。應該注意,應該注意,DA指令不能對減法進行十進制調(diào)整指令不能對減法進行十進制調(diào)整。3.5 邏輯運算與循環(huán)類指令(24條) 邏輯運算指令邏輯運算指令可以完成與、或、異或、清可以完成與、或、異或、清0和取反操作,當以累加器和取反操作,當以累加器A為目的操作數(shù)時,為目的操作數(shù)
37、時,對對P標志有影響;標志有影響; 累加器清累加器清0操作對操作對P標志有影響。標志有影響。 循環(huán)指令循環(huán)指令是對累加器是對累加器A的循環(huán)移位操作,的循環(huán)移位操作,包括左、右方向以及帶與不帶進位位等移位包括左、右方向以及帶與不帶進位位等移位方式,移位操作時,帶進位的循環(huán)移位對方式,移位操作時,帶進位的循環(huán)移位對CY和和P標志有影響;標志有影響; 3.5.1 3.5.1 邏輯與邏輯與 前前2條指令的功能是把源操作數(shù)與直接地址指示的條指令的功能是把源操作數(shù)與直接地址指示的單元內(nèi)容相與,結(jié)果送入直接地址指示的單元。單元內(nèi)容相與,結(jié)果送入直接地址指示的單元。 后后4條指令的功能是把源操作數(shù)與累加器條指
38、令的功能是把源操作數(shù)與累加器A的內(nèi)容相的內(nèi)容相與,結(jié)果送入累加器與,結(jié)果送入累加器A中。中。datadirectdirect data# Adirectdirect A direct ANL)(;)()(;,dataAA data# RiAA Ri directAA direct RnA A Rn A ANL)(;)()(;)()(;)()(;,例例 若(若(A)=C3H,(,(R0)=AAH,執(zhí)行指令,執(zhí)行指令 ANL A,R0 之后,(之后,(A)=82H。前前2條指令的功能是把源操作數(shù)與直接地址指示的單元條指令的功能是把源操作數(shù)與直接地址指示的單元內(nèi)容相或,結(jié)果送入直接地址指示的單元。內(nèi)
39、容相或,結(jié)果送入直接地址指示的單元。后后4條指令的功能是把源操作數(shù)與累加器條指令的功能是把源操作數(shù)與累加器A的內(nèi)容相或,的內(nèi)容相或,結(jié)果送入累加器結(jié)果送入累加器A中。中。3.5.2 3.5.2 邏輯或邏輯或datadirectdirect data# Adirectdirect A direct ORL)(;)()(;,dataAA data# RiAA Ri directAA direct RnA A Rn A ORL)(;)()(;)()(;)()(;,例例 若(若(A)=C3H,(,(R0)=55H,執(zhí)行指令,執(zhí)行指令ORL A,R0 之后,(之后,(A)=D7H。 3.5.3 3.5.
40、3 邏輯異或邏輯異或 datadirectdirect data# Adirectdirect A direct XRL)(;)()(;,dataAA data# RiAA Ri directAA direct RnA A Rn A XRL)(;)()(;)()(;)()(;, 前前2條指令的功能是把源操作數(shù)與直接地址指示的單元內(nèi)條指令的功能是把源操作數(shù)與直接地址指示的單元內(nèi)容異或,結(jié)果送入直接地址指示的單元。容異或,結(jié)果送入直接地址指示的單元。 后后4條指令的功能是把源操作數(shù)與累加器條指令的功能是把源操作數(shù)與累加器A的內(nèi)容異或,結(jié)的內(nèi)容異或,結(jié)果送入累加器果送入累加器A中。中。例例 若(若(
41、A)=C3H,(,(R0)=AAH,執(zhí)行指令,執(zhí)行指令 XRL A,R0 之后,(之后,(A)=69H。 CLR A CPLA3.5.4 3.5.4 累加器清累加器清0 0和取反和取反 ;A 0 ;A 這兩條指令的功能分別是把累加器這兩條指令的功能分別是把累加器A的內(nèi)容清的內(nèi)容清 0 和取反,結(jié)果仍在和取反,結(jié)果仍在A中。中。 例例 若(若(A)=A5H,執(zhí)行指令,執(zhí)行指令 CLR A 之后,之后,(A)=00H。 RRRRC A RLRLC3.5.5 3.5.5 累加器循環(huán)移位累加器循環(huán)移位 有時有時“累加器累加器A內(nèi)容乘內(nèi)容乘2”的任務可以的任務可以利用指令利用指令RLC A方便地完成。方
42、便地完成。 例:若(例:若(A)= BDH = 1011 1101B,(,(CY)0。執(zhí)行指令。執(zhí)行指令RLC A后,(后,(CY)=1,(,(A)= 0111 1010B = 7AH,(,(CY)1。 結(jié)果為:結(jié)果為:17AH(378)2BDH(189)。)。 3.6 控制轉(zhuǎn)移類指令(17條) 通常情況下,程序的執(zhí)行是順序進行通常情況下,程序的執(zhí)行是順序進行的,但也可以根據(jù)需要的,但也可以根據(jù)需要改變程序的執(zhí)行改變程序的執(zhí)行順序順序,這種情況,這種情況稱作程序轉(zhuǎn)移稱作程序轉(zhuǎn)移。 控制程序的轉(zhuǎn)移要利用轉(zhuǎn)移指令??刂瞥绦虻霓D(zhuǎn)移要利用轉(zhuǎn)移指令。80C51的轉(zhuǎn)移指令有的轉(zhuǎn)移指令有無條件轉(zhuǎn)移、條件無條
43、件轉(zhuǎn)移、條件轉(zhuǎn)移及子程序調(diào)用與返回等轉(zhuǎn)移及子程序調(diào)用與返回等。一、一、 短跳轉(zhuǎn)短跳轉(zhuǎn)3.6.1 無條件轉(zhuǎn)移無條件轉(zhuǎn)移 AJMP addr11 ; PC (PC)+ 2, ; PC100 addr11 該指令執(zhí)行時,先將該指令執(zhí)行時,先將PC的內(nèi)容加的內(nèi)容加2(這是(這是PC指向指向的是的是AJMP的下一條指令),然后把指令中的下一條指令),然后把指令中11位地址位地址碼傳送到碼傳送到PC100,而,而PC1511保持原內(nèi)容不變。保持原內(nèi)容不變。v在目標地址的在目標地址的11位中,前位中,前3位為頁地址,后位為頁地址,后8位為頁位為頁內(nèi)地址(每頁含內(nèi)地址(每頁含256個單元)。個單元)。 當前當
44、前PC的高的高5位(即下條指令的存儲地址的高位(即下條指令的存儲地址的高5位)位)可以確定可以確定32個個2KB段之一。所以,段之一。所以,AJMP指令的轉(zhuǎn)移指令的轉(zhuǎn)移范圍為包含范圍為包含AJMP下條指令在內(nèi)的下條指令在內(nèi)的2KB區(qū)間。區(qū)間。二、二、 長跳轉(zhuǎn)長跳轉(zhuǎn) LJMP addr16 ;PC addr16 第一字節(jié)為操作碼,該指令執(zhí)行時,將指令的第一字節(jié)為操作碼,該指令執(zhí)行時,將指令的第二、三字節(jié)地址碼分別裝入指令計數(shù)器第二、三字節(jié)地址碼分別裝入指令計數(shù)器PC的的高高8位和低位和低8位中,程序無條件地轉(zhuǎn)移到指定的目位中,程序無條件地轉(zhuǎn)移到指定的目標地址去執(zhí)行。標地址去執(zhí)行。 LJMP提供的
45、是提供的是16位地址,因此程序可以轉(zhuǎn)向位地址,因此程序可以轉(zhuǎn)向64KB的程序存儲器地址空間的任何單元。的程序存儲器地址空間的任何單元。 例例 若標號若標號“NEWADD”表示轉(zhuǎn)移目標地址表示轉(zhuǎn)移目標地址1234H。執(zhí)。執(zhí)行指令行指令 LJMP NEWADD 時,兩字節(jié)的目標地址將裝入時,兩字節(jié)的目標地址將裝入PC中,使程序轉(zhuǎn)向目標地址中,使程序轉(zhuǎn)向目標地址 1234H 處運行。處運行。三、三、 相對轉(zhuǎn)移相對轉(zhuǎn)移 SJMP rel ;PC (PC)+ 2,PC (PC)+ rel 第一字節(jié)為操作碼,第二字節(jié)為相對偏移量第一字節(jié)為操作碼,第二字節(jié)為相對偏移量 rel,rel 是一是一個帶符號的偏移
46、字節(jié)數(shù)(個帶符號的偏移字節(jié)數(shù)(2的補碼),取值范圍為的補碼),取值范圍為 127 128(00H7FH對應表示對應表示0 127,80HFFH對應表示對應表示1281)。負數(shù)表示反向轉(zhuǎn)移,正數(shù)表示正向轉(zhuǎn)移。)。負數(shù)表示反向轉(zhuǎn)移,正數(shù)表示正向轉(zhuǎn)移。 rel 可以是一個轉(zhuǎn)移目標地址的標號可以是一個轉(zhuǎn)移目標地址的標號,由匯編程序在匯編過,由匯編程序在匯編過程中自動計算偏移地址,并填入指令代碼中。在手工匯編時,程中自動計算偏移地址,并填入指令代碼中。在手工匯編時,可用轉(zhuǎn)移目標地址減轉(zhuǎn)移指令所在的源地址,再減轉(zhuǎn)移指令字可用轉(zhuǎn)移目標地址減轉(zhuǎn)移指令所在的源地址,再減轉(zhuǎn)移指令字節(jié)數(shù)節(jié)數(shù)2得到偏移字節(jié)數(shù)得到偏移
47、字節(jié)數(shù)rel。 例例 若標號若標號“NEWADD”表示轉(zhuǎn)移目標地址表示轉(zhuǎn)移目標地址0123H,PC的的當前值為當前值為0100H。執(zhí)行指令。執(zhí)行指令 SJMP NEWADD 后,程序?qū)⑥D(zhuǎn)向后,程序?qū)⑥D(zhuǎn)向 0123H 處執(zhí)行(此時處執(zhí)行(此時re l= 0123H(01002)= 21H)。)。四、四、 散轉(zhuǎn)移散轉(zhuǎn)移 JMP A+DPTR ;PC (PC)+ 1,PC (A)+(DPTR) 該指令具有散轉(zhuǎn)功能,可以代替許多判別跳轉(zhuǎn)指令。其轉(zhuǎn)移地址該指令具有散轉(zhuǎn)功能,可以代替許多判別跳轉(zhuǎn)指令。其轉(zhuǎn)移地址由數(shù)據(jù)指針由數(shù)據(jù)指針DPTR的的16位數(shù)和累加器位數(shù)和累加器A的的8位數(shù)進行無符號數(shù)相加形位數(shù)進
48、行無符號數(shù)相加形成,并直接裝入成,并直接裝入PC。該指令執(zhí)行時對標志位無影響。該指令執(zhí)行時對標志位無影響。例例 有一段程序如下:有一段程序如下: MOV DPTR,#TABLE JMP A+DPTRTABLE:AJMP ROUT0 AJMP ROUT1 AJMP ROUT2 AJMP ROUT3v當(當(A)=00H時,程序?qū)⑥D(zhuǎn)到時,程序?qū)⑥D(zhuǎn)到 ROUT0處執(zhí)行;當(處執(zhí)行;當(A)=02H時,時,程序?qū)⑥D(zhuǎn)到程序?qū)⑥D(zhuǎn)到 ROUT1處執(zhí)行;其余類推。處執(zhí)行;其余類推。 3.6.2 條件轉(zhuǎn)移條件轉(zhuǎn)移 一、一、 累加器判累加器判0轉(zhuǎn)移轉(zhuǎn)移 指令的功能是對累加器指令的功能是對累加器A的內(nèi)容為的內(nèi)容為
49、0 和不為和不為 0 進行檢測并轉(zhuǎn)移。進行檢測并轉(zhuǎn)移。當當不滿足各自的條件時,程序繼續(xù)往下執(zhí)行。當各自的條件滿足時,程不滿足各自的條件時,程序繼續(xù)往下執(zhí)行。當各自的條件滿足時,程序轉(zhuǎn)向指定的目標地址。目標地址的計算與序轉(zhuǎn)向指定的目標地址。目標地址的計算與SJMP指令情況相同。指令指令情況相同。指令執(zhí)行時對標志位無影響。執(zhí)行時對標志位無影響。例例 若累加器若累加器A原始內(nèi)容為原始內(nèi)容為00H,則:,則: JNZ L1 ;由于;由于A的內(nèi)容為的內(nèi)容為00H,所以程序往下執(zhí)行,所以程序往下執(zhí)行 INC A ; JNZ L2 ;由于;由于A的內(nèi)容已不為的內(nèi)容已不為0,所以程序轉(zhuǎn)向,所以程序轉(zhuǎn)向L2 處
50、執(zhí)行處執(zhí)行 二、二、 比較不相等轉(zhuǎn)移比較不相等轉(zhuǎn)移 這組指令的功能是對指定的目的字節(jié)和源字節(jié)進行比這組指令的功能是對指定的目的字節(jié)和源字節(jié)進行比較,若它們的值不相等則轉(zhuǎn)移較,若它們的值不相等則轉(zhuǎn)移,轉(zhuǎn)移的目標地址為當前的PC值加3后,再加指令的第三字節(jié)偏移量rel;若目的字節(jié)的內(nèi)若目的字節(jié)的內(nèi)容大于源字節(jié)的內(nèi)容,則進位標志清容大于源字節(jié)的內(nèi)容,則進位標志清0;若目的字節(jié)的內(nèi)容;若目的字節(jié)的內(nèi)容小于源字節(jié)的內(nèi)容,則進位標志置小于源字節(jié)的內(nèi)容,則進位標志置1;若目的字節(jié)的內(nèi)容等于源字節(jié)的內(nèi)容,程序?qū)⒗^續(xù)往下執(zhí)行。三、三、 減減1不為不為0轉(zhuǎn)移轉(zhuǎn)移 這組指令每執(zhí)行一次,便將目的操作數(shù)的循環(huán)控制單元的
51、這組指令每執(zhí)行一次,便將目的操作數(shù)的循環(huán)控制單元的內(nèi)容減內(nèi)容減1,并判其是否為,并判其是否為 0。若不為。若不為0,則轉(zhuǎn)移到目標地址繼,則轉(zhuǎn)移到目標地址繼續(xù)循環(huán);若為續(xù)循環(huán);若為0,則結(jié)束循環(huán),程序往下執(zhí)行。,則結(jié)束循環(huán),程序往下執(zhí)行。例例 有一段程序如下:有一段程序如下: MOV 23H,#0AH CLR ALOOPX:ADD A,23H DJNZ 23H,LOOPX SJMP $ 該程序執(zhí)行后該程序執(zhí)行后: (A)=10+9+8+7+6+5+4+3+2+1=37H3.6.3 調(diào)用與轉(zhuǎn)移調(diào)用與轉(zhuǎn)移 這兩條指令可以實現(xiàn)子程序的短調(diào)用和長調(diào)用。這兩條指令可以實現(xiàn)子程序的短調(diào)用和長調(diào)用。目標地址的
52、形成方式與目標地址的形成方式與AJMP和和LJMP相似。這兩相似。這兩條指令的執(zhí)行不影響任何標志。條指令的執(zhí)行不影響任何標志。 一、一、 調(diào)用調(diào)用 vACALL指令執(zhí)行時,被調(diào)用的子程序的首址必須設指令執(zhí)行時,被調(diào)用的子程序的首址必須設在包含當前指令(即調(diào)用指令的下一條指令)的第一在包含當前指令(即調(diào)用指令的下一條指令)的第一個字節(jié)在內(nèi)的個字節(jié)在內(nèi)的2K字節(jié)范圍內(nèi)字節(jié)范圍內(nèi)的程序存儲器中。的程序存儲器中。vLCALL指令執(zhí)行時,被調(diào)用的子程序的首址可以指令執(zhí)行時,被調(diào)用的子程序的首址可以設在設在64K字節(jié)范圍字節(jié)范圍內(nèi)的程序存儲器空間的任何位置。內(nèi)的程序存儲器空間的任何位置。 例例 若(若(S
53、P)=07H,標號,標號“XADD”表示的實際地表示的實際地址為址為0345H,PC的當前值為的當前值為0123H。執(zhí)行指令。執(zhí)行指令 ACALL XADD 后,(后,(PC)+2=0125H,其低,其低8位的位的25H壓入堆棧的壓入堆棧的08H單元,其高單元,其高8位的位的01H壓入堆棧的壓入堆棧的09H單元。(單元。(PC)=0345H,程序轉(zhuǎn)向目標地址,程序轉(zhuǎn)向目標地址0345H 處執(zhí)行。處執(zhí)行。vRET指令的功能是從堆棧中彈出由調(diào)用指令壓入堆棧保護指令的功能是從堆棧中彈出由調(diào)用指令壓入堆棧保護的斷點地址,并送入指令計數(shù)器的斷點地址,并送入指令計數(shù)器PC,從而結(jié)束子程序的執(zhí),從而結(jié)束子程
54、序的執(zhí)行。程序返回到斷點處繼續(xù)執(zhí)行。行。程序返回到斷點處繼續(xù)執(zhí)行。二、二、 返回返回 vRETI指令是專用于中斷服務程序返回的指令,除正確返指令是專用于中斷服務程序返回的指令,除正確返回中斷斷點處執(zhí)行主程序以外,并有清除內(nèi)部相應的中斷回中斷斷點處執(zhí)行主程序以外,并有清除內(nèi)部相應的中斷狀態(tài)寄存器(以保證正確的中斷邏輯)的功能。狀態(tài)寄存器(以保證正確的中斷邏輯)的功能。3.6.4 空操作空操作 NOP ;PC (PC)+ 1 v這條指令不產(chǎn)生任何控制操作,只是將程這條指令不產(chǎn)生任何控制操作,只是將程序計數(shù)器序計數(shù)器PC的內(nèi)容加的內(nèi)容加1。該指令在執(zhí)行時間。該指令在執(zhí)行時間上要消耗上要消耗1個機器周
55、期,在存儲空間上可以個機器周期,在存儲空間上可以占用一個字節(jié)。因此,常用來實現(xiàn)較短時間占用一個字節(jié)。因此,常用來實現(xiàn)較短時間的延時。的延時。3.7 位操作類指令(17條) 位操作位操作又稱布爾操作,它是又稱布爾操作,它是以位為單位進行的各以位為單位進行的各種操作種操作。位操作指令中的位地址有。位操作指令中的位地址有4 種表示形式:種表示形式:v 直接地址方式(如,直接地址方式(如,0D5H););v點操作符方式(如,點操作符方式(如,0D0H.5、PSW.5等);等);v位名稱方式(如,位名稱方式(如,F(xiàn)0););v偽指令定義方式(如,偽指令定義方式(如,MYFLAG BIT F0)。)。以上
56、幾種形式表示的都是以上幾種形式表示的都是PSW中的位中的位5。 與字節(jié)操作指令中累加器與字節(jié)操作指令中累加器ACC用字符用字符“A”表示表示類似的是,在位操作指令中,位累加器要用字符類似的是,在位操作指令中,位累加器要用字符“C”表示(注:在位操作指令中表示(注:在位操作指令中CY與具體的直接與具體的直接位地址位地址D7H對應)。對應)。 MOV bit,C ;bit(CY) MOV C ,bit ;CY (bit) v這兩條指令可以實現(xiàn)指定位地址中的內(nèi)容與位累加器這兩條指令可以實現(xiàn)指定位地址中的內(nèi)容與位累加器CY的的內(nèi)容的相互傳送。內(nèi)容的相互傳送。3.7.1 位傳送位傳送 例例 若(若(CY
57、)=1,(,(P3)=1100 0101B,(,(P1)=0011 0101B。執(zhí)行以下指令:。執(zhí)行以下指令: MOV P1.3,C MOV C,P3.3 MOV P1.2,C 結(jié)果為:(結(jié)果為:(CY)=0,P3的內(nèi)容未變,的內(nèi)容未變,P1的內(nèi)容變?yōu)榈膬?nèi)容變?yōu)?0011 1001B。一、位清一、位清03.7.2 位狀態(tài)設置位狀態(tài)設置 0bit bit 0CY C CLR; 這兩條指令可以實現(xiàn)位地址內(nèi)容和位累加這兩條指令可以實現(xiàn)位地址內(nèi)容和位累加器內(nèi)容的清器內(nèi)容的清0。 例例 若(若(P1)=1001 1101B。執(zhí)行指令。執(zhí)行指令CLR P1.3 后,結(jié)果為:后,結(jié)果為:( P1 )=100
58、1 0101B。二、位置位二、位置位 1bit bit 1CY C SETB; 這兩條指令可以實現(xiàn)地址內(nèi)容和位累加器內(nèi)這兩條指令可以實現(xiàn)地址內(nèi)容和位累加器內(nèi)容的置位。容的置位。 例例 若(若(P1)=1001 1100B。執(zhí)行指令。執(zhí)行指令SETB P1.0 后,(后,(P1)1001 1101B。一、位邏輯一、位邏輯“與與”3.7.3 位邏輯運算位邏輯運算 bit)CYCY /bit bitCYCY bit C ANL()(;)(;, 例例 若(若(P1)=1001 1100B,(,(CY)1。執(zhí)行指。執(zhí)行指令令ANL C, P1.0 后,結(jié)果為:后,結(jié)果為:P1 內(nèi)容不變,而內(nèi)容不變,而(
59、CY)0。 這兩條指令可以實現(xiàn)位地址單元內(nèi)容或取反后的這兩條指令可以實現(xiàn)位地址單元內(nèi)容或取反后的值與位累加器的內(nèi)容值與位累加器的內(nèi)容“與與”操作,操作的結(jié)果送位操作,操作的結(jié)果送位累加器累加器C。二、位邏輯二、位邏輯“或或” bit)CYCY /bit bitCYCY bit C ORL()(;)(;, 這兩條指令可以實現(xiàn)位地址單元內(nèi)容或取反這兩條指令可以實現(xiàn)位地址單元內(nèi)容或取反后的值與位累加器的內(nèi)容后的值與位累加器的內(nèi)容“或或”操作,操作的操作,操作的結(jié)果送位累加器結(jié)果送位累加器C。三、位取反三、位取反 bit)bit bit CYCY C CPL(;)(; 這兩條指令可以實現(xiàn)位地址單元內(nèi)容
60、和位累這兩條指令可以實現(xiàn)位地址單元內(nèi)容和位累加器內(nèi)容的取反。加器內(nèi)容的取反。一、判一、判CY轉(zhuǎn)移轉(zhuǎn)移3.7.4 位判跳(條件轉(zhuǎn)移)位判跳(條件轉(zhuǎn)移) 這兩條指令的功能是對進位標志位這兩條指令的功能是對進位標志位CY進行進行檢測,當(檢測,當(CY)=1(第一條指令)或(第一條指令)或(CY)=0(第二條指令),程序轉(zhuǎn)向(第二條指令),程序轉(zhuǎn)向PC當前值與當前值與rel之和的目標地址去執(zhí)行,否則程序?qū)㈨樞驁?zhí)行。之和的目標地址去執(zhí)行,否則程序?qū)㈨樞驁?zhí)行。 二、判二、判bit轉(zhuǎn)移轉(zhuǎn)移 這三條指令的功能是對指定位這三條指令的功能是對指定位bit進行檢測,進行檢測,當(當(bit)=1(第一和第二條指令
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- T-ZZB 3725-2024 固定污染源廢氣非甲烷總經(jīng)連續(xù)監(jiān)測系統(tǒng)
- T-ZJBS 002-2024 城市公共標識系統(tǒng)施工規(guī)范
- 二零二五年度戶口分家及遺產(chǎn)評估協(xié)議范本
- 二零二五年度股東退股及公司未來發(fā)展方向與投資布局協(xié)議
- 二零二五年度教育培訓機構(gòu)春季招生促銷合同范本
- 二零二五年度高速公路施工安全責任豁免合同樣本
- 二零二五年度員工績效評估與職業(yè)發(fā)展輔導協(xié)議書
- 商業(yè)智能軟硬件開發(fā)合作協(xié)議
- 五年級數(shù)學探索圖形變化教學教案
- 優(yōu)化辦公室工作環(huán)境的策略
- 《建筑工程施工許可管理辦法》2021年9月28日修訂
- 普通話培訓教案1(共5篇)
- 大慶醫(yī)學高等專科學校單招參考試題庫(含答案)
- 國有企業(yè)內(nèi)部控制的問題與改進措施
- 綿陽市三臺縣鄉(xiāng)鎮(zhèn)地圖矢量可編輯課件行政區(qū)劃邊界高清(四川省)
- 新疆城市綠地養(yǎng)護管理標準
- 幼兒園故事繪本《賣火柴的小女孩兒》課件
- 妊娠期高血壓疾病試題
- 《高速公路機電系統(tǒng)集成與維護》課件-05.高速公路監(jiān)控系統(tǒng)
- 工資條員工工資明細表模板
- 網(wǎng)絡故障分析報告模板
評論
0/150
提交評論