




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、會計學1理學指令系統福建專升本電子類復習資理學指令系統福建專升本電子類復習資料專升本電子類復習資料料專升本電子類復習資料BACK第1頁/共150頁程序設計語言:程序設計語言:是實現人機交換信息的基本工具,分為機器語言、匯編語言和高級語言。是實現人機交換信息的基本工具,分為機器語言、匯編語言和高級語言。機器語言:機器語言:用二進制編碼表示每條指令,是計算機能直接識別和執行的語言。用二進制編碼表示每條指令,是計算機能直接識別和執行的語言。匯編語言:匯編語言:是用助記符、符號和數字等來表示指令的程序設計語言。它與機器語言指令是一一對應的。是用助記符、符號和數字等來表示指令的程序設計語言。它與機器語言
2、指令是一一對應的。BACK第2頁/共150頁BACK第3頁/共150頁BACK第4頁/共150頁操作碼操作碼立即數或地址立即數或地址BACK第5頁/共150頁BACK立即數或地址立即數或地址操作碼操作碼立即數或地址立即數或地址第6頁/共150頁BACK第7頁/共150頁BACK第8頁/共150頁BACK第9頁/共150頁BACK第10頁/共150頁BACK第11頁/共150頁說明:(1) 比較以下三條指令INC AINC ACC ;ACC是SFR中的一個INC 0E0HA、ACC、0E0H是累加器的三種表示形式。是寄存器尋址;是直接尋址,但都表示累加器的內容自加1,即執行結果相同。(2) 注意
3、區別字節地址和位地址。如:MOV A,20HMOV C,20H ;(20H)Cy 形式相同,但結果不同,因為中的20H為字節地址,中的20H為位地址。 第12頁/共150頁BACK第13頁/共150頁BACK第14頁/共150頁65H47HR0A47H數據存儲器數據存儲器地址65H以指令中所指定以指令中所指定的的R0內容(內容(65H)為指針)為指針將片內將片內RAM 65H單元內容單元內容47H送送ABACK第15頁/共150頁BACK第16頁/共150頁只有兩條指令:MOVC A, A+PC; (A)+(PC)AMOVC A, A+DPTR ; (A)+(DPTR) A 第17頁/共150
4、頁1EH0302HROMDPTRAA02F1H11H1EH+DPTR內容與內容與A的內容之的內容之和為程序存儲器地址和為程序存儲器地址程序存儲器內容送程序存儲器內容送ABACK第18頁/共150頁BACK第19頁/共150頁 如在程序存儲器中2000H單元有一條雙字節的相對轉移指令“SJMP 75H”。 其操作示意圖如圖25所示。程序存儲器2000H、2001H單元的內容80H、75H是“SJMP 75H”的機器語言代碼。實際編程中偏移量75H用標號表示,省去我們手工計算轉移地址的麻煩,如: SJMP LOOP LOOP: 第20頁/共150頁BACK第21頁/共150頁尋址方式尋址空間立即數
5、尋址程序存儲器 ROM直接尋址片內 RAM 低 128B、特殊功能寄存器寄存器尋址工作寄存器 R0-R7、A、B、C、DPTR寄存器間接尋址片內 RAM 低 128B、片外 RAM變址尋址程序存儲器(A+PC,A+DPTR)相對尋址程序存儲器 256B 范圍(PC+偏移量)位尋址片內 RAM 的 20H-2FH 字節地址、部分 SFRBACK第22頁/共150頁BACK第23頁/共150頁Back第24頁/共150頁Back第25頁/共150頁Back 1.1.以累加器以累加器A A為目的操作數的指令為目的操作數的指令 (4(4條條, ,即即4 4種尋址方式種尋址方式) ) 2.2.以寄存器以
6、寄存器RnRn為目的操作數的指令(為目的操作數的指令(3 3條)條) 3.3.以直接地址為目的操作數的指令(以直接地址為目的操作數的指令(5 5條)條) 4.4.以間接地址為目的操作數的指令(以間接地址為目的操作數的指令(3 3條)條) 5.5.十六位數據傳送指令十六位數據傳送指令(1(1條條) ) 6.6.查表指令(查表指令(2 2條)條) 7.7.累加器累加器A A與片外與片外RAMRAM傳送指令傳送指令(4(4條條) ) 8.棧操作指令(二條) 9.9.交換指令交換指令(4(4條條) )第26頁/共150頁2.3.1.1 內部數據傳送指令內部數據傳送指令格式:MOV dst,src;(s
7、rc)dst或者,(dst)=(src)各操作數間傳送關系如下圖所示。說明:(1) 立即數不能作dst。(2) direct可以作dst;direct之間還可以互相傳送數據,提高了數據傳送的速度和效率。(3) 無Rn和Rn之間數據傳送的指令。 第27頁/共150頁匯編指令格式機器碼格式操作注釋MOV A,Rn;1110 1rrr(Rn) 將工作寄存器 Rn(即R0R7)內容傳送到累加器A 中MOV A,direct;1110 0101direct(direct) 將直接尋址所得的片內RAM 單元內容或特殊功能寄存器中的內容傳送到累加器A 中Back1.1.以累加器以累加器A A為目的操作數的指
8、令為目的操作數的指令(4(4條條, ,即即4 4種尋址方式種尋址方式) )第28頁/共150頁MOV A,Ri;1110 011i(Ri) 將間接尋址(Ri 為 R0或 R1)所得的片內 RAM單元內容或特殊功能積存器中的內容傳送到累加器A中MOV A,#data;0111 0100data #data 將立即數傳送到累加器A中第29頁/共150頁第30頁/共150頁匯編指令格式 機器碼格式操作注釋MOV Rn,A;1111 1rrr Rn將累加器 A 中內容傳送到工作寄存器 Rn(即R0-R7)中MOV Rn,direct;1010 1rrrdirect(direct) Rn將直接尋址所得的
9、片內 RAM 單元內容或特殊功能寄存器中的內容傳送到工作寄存器Rn(即R0-R7)中MOV Rn,#data;0111 1rrrdata#data Rn將立即數傳送到工作寄存器Rn (即R0-R7)中Back第31頁/共150頁n注意注意,在,在89S5189S51指令系統中沒指令系統中沒有有“MOV RnMOV Rn,RnRn”傳送指令。傳送指令。Back第32頁/共150頁匯編指令格式 機器碼格式操作注釋MOV direct,A;1111 0101 direct(A) direct將累加器 A 中內容傳送到直接地址direct所指出的片內存儲單元中。MOV direct,Rn;111 1r
10、rr direct(Rn) direct將工作寄存器Rn(即R0-R7)中內容傳送到直接地址 direct所指出的片內存儲單元中Back第33頁/共150頁MOV direct, direct; 1000 0101 源direct目的direct(源direct)目的direct將直接地址源direct所指出的片內存儲單元中內容傳送到直接地址目的 direct 所指出的片內存儲單元中MOV direct,Ri;1000 011i direct(Ri) direct將間接尋址 (Ri為R0或R1) 所得的片內RAM單元內容傳送到直接地址 direct 所指出的片內存儲單元中MOV direct,
11、#data;0111 0101 direct data#data direct將立即數傳送到直接地址 direct 所指出的片內存儲單元中第34頁/共150頁匯編指令格式 機器碼格式操作注釋MOV Ri, A ;1111 011i(A) (Ri)將累加器A 中內容傳送到間接尋址(Ri 為 R0或R1)所得的片內RAM單元中。MOV Ri, direct;0101 011i direct(direct) (Ri)將直接尋址所得的片內RAM 單元內容或特殊功能寄存器中的內容傳送到間接尋址(Ri 為 R0或R1)所得的片內RAM單元中MOV Ri, #data ;0111 011Idata#data
12、 (Ri)將立即數傳送到間接尋址(Ri為R0或R1)所得的片內RAM單元中Back第35頁/共150頁匯編指令格式機器碼格式操作注釋MOV DPTR, #data16;1000 0000高位字節低位字節dataH DPHdataL DPL將高 8 位立即數dataH 送入 DPH,低 8 位立 即 數dataL 送入 DPL。Back第36頁/共150頁例:例:MOV DPTR #1000HMOV DPTR #1000H;(DPTRDPTR)=1000H=1000H, (DPHDPH)=10H=10H,(DPLDPL)=00H=00H Back第37頁/共150頁【例21】已知:Ri=32H,
13、(30H)=AAH,(31H)=BBH,(32H)=CCH,請問執行下列指令后累加器A、50H單元、R6、32H單元和P1口中的內容是什么?MOV A,30H; A=(30H)=AAHMOV 50H,A; (50H)=(A)=AAHMOV R6,31H; R6=(31H)=BBHMOV P1,32H; P1=(32H)=CCHMOV R1,#30H; (R1)=(32H)=30HMOV A,R1; A=(R1)=30H所以,(A)=30H,(50H)=AAH,(R6)=BBH,(32H)=30H,(P1)=CCH。 第38頁/共150頁匯編指令格式機器碼格式操作注釋MOVC A,A+DPTR;
14、1001 0011先(PC)+1 PC,后(A)+(DPTR) A(遠程查表)MOVC A, A+PC;1000 0011先(PC)+1 PC,后(A)+(PC) A(近程查表)Back第39頁/共150頁基地址寄存器+變址寄存器間接尋址PC+A(程序存儲器0-64K)基地址寄存器+變址寄存 器間接尋址DPTR+A(程序存儲器0-64K)A寄存器圖圖2-7 2-7 程序存貯器傳送(查表)程序存貯器傳送(查表)第40頁/共150頁若:初始 ROM 內容 2000H00H2001H01H2002H09H2003H04H2004H06H2005H08H2006HFFH2007H66H2008H45H
15、2009HABH200AH11HH第41頁/共150頁第42頁/共150頁若:初始 ROM 內容為:100FH01H1010H02H1011H03H1012H04H第43頁/共150頁1000H74 0DMOVA, #0DH;(A)=0DH1002H83MOVC A, A+PC;(PC)=1002+1=1003H,(A)=( (A)+(PC) )=(0D+1003)=(1010H)(A)=01H1003HF8MOV R0, A;(R0)=(A)=01HBack第44頁/共150頁 在 8051 指令系統中,CPU 對片外 RAM 的訪問只能用寄存器間接尋址的方式,且僅有四條指令:Back第45
16、頁/共150頁匯編指令格式 機器碼格式 操作 注釋 MOVX A,Ri ; 1110 001i (Ri) A =0 MOVX A, DPTR ; 1110 0000 (DPTR) A =0 MOVX Ri, A ; 1111 001i (A) (Ri) =0 MOVX DPTR, A ; 1111 0000 (A) (DPTR) =0 1. MCS51沒有專門的I/O指令,它只能通過這種方式與外RAM或外設打交道,其中,前兩條指令是輸入指令,后兩條是輸出指令。2. 外部RAM的數據傳送,只能通過累加器A進行。 第46頁/共150頁第47頁/共150頁寄存器寄存器間接尋址 寄存器間接尋址 R1.
17、R0DP(外RAM0-255) (外RAM0-64K)圖 2-8 外部數據存儲器傳送操作第48頁/共150頁MOV R1, #30H;(R1)=30H MOVX A, R1 ;(A)=02H MOV R0, A ;(R0)=(A)=02H MOV A,R1 ; (A)=(R1)=01H MOV R2, A ;(R2)=(A)=01HBack第49頁/共150頁 堆棧:先進后出,后進先出。 匯編指令格式 機器碼格式 操作 注釋 PUSH direct; 1100 0000 direct 先(SP)+1 SP, 后(direct) (SP) PUSH(入棧)指令 PUSH direct; 1101
18、 0000 direct 先(SP) direct, 后(SP)1 SP POP(出棧)指令 Backdirect應是直接地址。如:正確 錯誤PUSH ACC PUSH APOP OOHPOP R0 第50頁/共150頁 MOV SP, #18H; (SP)=18H MOV A, #30H; (A)=30H MOV DPTR, #1000H; (DPTR)=1000H PUSH A; (SP)=19H(19H)=30H PUSH DPH; (SP)=1AH(1AH)=10H PUSH DPL; (SP)=1BH(1BH)=00H第51頁/共150頁POP DPL; (DPL)=00H (SP)
19、=1AHPOP DPH; (DPH)=10H (SP)=19HPOP A ; (A)=30H (SP)=18HBack第52頁/共150頁匯編指令格式機器碼格式操作注釋XCH A,Rn;1100 1rrr(A) (Rn)XCH A, direct;1100 0101direct(A) (direct)XCH A, Ri;1100 011i(A) ( (Ri) )Back(1)字節變換指令第53頁/共150頁 將第二操作數所指定的工作寄存器 Rn(R0R7),直接尋址和間接尋址的單元內容與累加器 A 中內容互換。其操作可表示為:A 一字節 源操作數 一字節第54頁/共150頁 初始時:(A)=3
20、4H,(30H)=11HXCH A, 30H ; (A)=11H,(30H)=34HMOV R1, #30H ; (R1)=30HXCH A, R1 ;(A)=34H,(30H)=11H第55頁/共150頁匯編指令格式機器碼格式操作注釋XCHD A, Ri; 1101 011i(A03) (Ri)03)繼續上例: XCHD A, R1 ; (A)=31H ; (30H)=14HBack第56頁/共150頁 SWAP A; (A03)(A 47),A的高低半字節交換注意:1、2兩類指令都只影響標志位P,但3指令不影響任何標志位。 (3) (3) 累加器半字節交換指令累加器半字節交換指令第57頁/
21、共150頁【例】初始時:(A)=34H,(30H)=11H,執行以下程序段:XCH A, 30H; (A)=11H,(30H)=34HMOV R1, #30H; (R1)=30HXCH A, R1; (A)=34H,(30H)=11HXCHD A, R1; (A)=31H,(30H)=14HSWAP A; (A)=13H第58頁/共150頁Back 算術邏輯運算和移位類指令中,累加器A是最為繁忙的指令,且多為dst。 算術運算類指令執行后除了增1、減1指令不影響CY、AC、OV外,其它指令會影響改變它們的值。其操作對象為8位的無符號二進制整數,若對帶符號數或多字節二進制數運算,需通過編寫程序實
22、現。 第59頁/共150頁Back1. 1. 不帶進位加法指令不帶進位加法指令(4(4條條) )2. 2. 帶進位加法指令(帶進位加法指令(4 4條)條)3. 3. 十進制調整指令十進制調整指令(1(1條條) )4. 4. 帶借位減法指令(帶借位減法指令(4 4條)條)5. 5. 乘法指令(乘法指令(1 1條)條)6. 6. 除法指令(除法指令(1 1條)條)7. 7. 加加1 1指令(指令(5 5條)條)8. 8. 減減1 1指令指令(4(4條條) )第60頁/共150頁Back匯編指令格式機器碼格式操作注釋ADD A, Rn;0010 1rrr(A)+(Rn) A將工作寄存器內容和累加器
23、A 中的數相加, “和”存放于累加器 A中ADD A,direct;0010 0101direct(A)+(direct) A將內部 RAM 單元內容和累加器 A中的 數相 加,“和”存放于累加器A中第61頁/共150頁ADD A,Ri ;0010 011i(A)+(Ri) A將間接尋址(Ri為 R0 或 R1)所得的片內 RAM 單元中內容和累加器 A 中的數相加, “和”存放于累加器A中ADD A, #data;0010 0100data(A)+#data A將立即數的 8 位無符號二進制數和累加器 A 中的數相加, “和”存放于累加器A中第62頁/共150頁第63頁/共150頁若: (A
24、)=78H , (R0)=64H執行 ADD A,R0 后,結果及 PSW=? (A) :78H= 01111000 B + (R0) :64H= 01100100 B (A) :DCH= 11011100 B 標志位: CY=0, AC=0, OV=1, P=1,即 PSW=05H 結果: (A)=DCH (R0)=64HBack第64頁/共150頁Back匯編指令格式機器碼格式操作注釋ADDC A, Rn ;0011 1rrr(A)+CY+(Rn) A將工作寄存器內容、CY 位和累加器 A 中的數相加, “和”存放于累加器A 中ADDC A,direct; 0011 0101direct(
25、A)+(direct)+CY A將內部 RAM 單元內容、CY 位和累加器 A 中的 數 相 加 ,“和”存放于累加器 A 中第65頁/共150頁ADDC A,Ri;0011 011i(A)+(Ri)+CY A將間接尋址 (Ri為 R0 或 R1)所得的片內RAM單元中內容、 CY位和累加器 A中的數相加,“和”存放于累加器A中ADDC A, #data;0011 0100data(A)+#data+CY A將立即數的 8位無符號二進制數、CY 位和累加器 A 中的數相加, “和”存放于累加器A中第66頁/共150頁 本組指令的功能是同時把源操作數所指出的內容和進位標志未 CY 都加到累加器
26、A 中,結果存放到 A 中,其余的功能和上面的 ADD 指令相同。本組指令常用于多字節加法。第67頁/共150頁匯編指令格式機器碼格式操作注釋DA A;1101 0100若(A0-3)9或AC=1,則(A0-3)+6 A0-3同時,若(A4-7)9 或 CY=1,則(A4-7)+6 A4-7調整累加器內容為BCD 碼。Back第68頁/共150頁第69頁/共150頁解:先執行 ADDC A,R3; (A) :0101 0110 BCD:56 (R3) :0110 0111 BCD:67 (+) (CY) :0000 0001 BCD:01 和:1011 1110即(A)=1011 1110 且
27、影響標志位 CY=0,AC=0;第70頁/共150頁 再執行 DA A;因為 A 中的高四位值為 11,大于 9,低四位值為 14,也大于 9,所以內部調整自動進行加 66H的操作: 1011 1110 調整+) 0110 0110 1 0010 0100 BCD:124即(A)=0010 0100=24BCD,CY=1;AC=1。Back第71頁/共150頁 例:有兩個BCD碼表示的4位十進制數,分別存放在內部數據存儲器的50H51H單元和60H61H單元,試編寫程序求這兩個數之和,結果的和存放在40H41H單元,進位存放在42H單元。解:求兩個BCD數之和的運算程序段如下:MOVA,50H
28、;取第一個數低2位BCD碼ADD A,60H;加第二個數低2位BCD碼DA A;十進制調整MOV 40H,A;保存結果的低2位MOV A,51H;取高位BCD碼ADDC A,61H;高位相加DA A;十進制調整MOV 41H,A;保存結果的高2位MOV A,#00HADDC A,#00H;計算進位MOV 42H,A;保存進位第72頁/共150頁匯編指令格式機器碼格式操作注釋SUBB A, Rn;1001 1rrr(A)-CY-(Rn) A將累加器 A 中的數減去 CY 位及工作寄存器內容“差”存放于累加器 A 中SUBB A,direct;1001 0101direct(A)-CY-(dire
29、ct) A將累加器 A 中的數減去 CY 位及內部RAM單 元 內 容“差”存放于累加器 A 中Back第73頁/共150頁SUBB A,Ri ;1001 011i(A)-CY-(Ri) A將累加器 A 中的數減去 CY 位及間接尋址(Ri 為 R0 或R1) 所得的片內 RAM單 元 中 內 容 ,“差”存放于累加器 A 中SUBB A, #data;1001 0100data(A)-CY-#data A將累加器 A 中的數減去 CY 位及立即數的 8 位無符號二進制數, “差”存放于累加器 A 中第74頁/共150頁第75頁/共150頁 解: (A)=0C9H= 11001001 B-)
30、Cy= 1 = 00000001 B 11001000 B -) (R2)=54H = 01010100 B (A)=74H = 01110100 B結果為: (A)=74H標志位為:Cy=0 AC=0 OV=1 P=0Back第76頁/共150頁匯編指令格式機器碼格式操作注釋MUL AB ; 1010 0100(A)(B) B15-8 A7-0將累加器 A 和寄存器 B 中兩個無符號數相乘,所得 16位積的低字節存放在 A 中,高字節存放中B中。Back第77頁/共150頁匯編指令格式機器碼格式操作注釋DIV AB ;1000 0100(A)/(B)的商 A(A)/(B)的余數 BA 中內容
31、除以 B中內容,整數商存于 A 中,余數存于B中。Back若除數若除數(B)=00H,則結果無法確定,則,則結果無法確定,則OV置置1。 CY總是被清總是被清0。該操作也影響。該操作也影響標志位標志位P。 第78頁/共150頁匯編指令格式機器碼格式操作注釋INC A ;0000 0100(A)+1 AA 中內容加1。INC Rn;0000 1rrr(Rn)+1 RnRn 中內容加1。INC direct;0000 0101direct(direct)+1directDirect 單元中內容加1。INC Ri;0000 011I(Ri)+1 (Ri)Ri 間接尋址所得的片內 RAM 單元中內容加
32、1。INC DPTR;1010 0011(DPTR)+1 DPTRDPTR中內容加1Back第79頁/共150頁除第一條指令會影響 P 外,其他均不影響 PSW中各標志位。 ADD A,#01H 和 INC A 都是使累加器 A 的內容加 1,但前者對 Cy 有影響。 第80頁/共150頁匯編指令格式機器碼格式操作注釋DEC A ;0001 0100(A)-1 AA 中內容減1。DEC Rn;0001 1rrr(Rn)-1 RnRn 中內容減 1。DEC direct;0001 0101direct(direct)-1directDirect 單元中內容減 1。DEC Ri;0001 011I
33、(Ri)-1 (Ri)Ri 間接尋址所得的片內 RAM 單元中內容減 1。Back它的規定和加 1 指令一樣,只是少了一條 16位的指令。 第81頁/共150頁 邏輯操作指令包括: 與、 或、 異或、 清除、求反、 移位等操作。 該指令組全部操作數都是8位24條指令。 Back第82頁/共150頁Back第83頁/共150頁匯編指令格式機器碼格式操作注釋CLR A ;1110 01000 A清累加器A 為 0,只影響標志位P。Back(1) (1) 累加器累加器A A清清0 0指令指令第84頁/共150頁匯編指令格式 機器碼格式 操作 注釋 CPL A ; 1111 0100 (A) A 對累
34、加器 A 內容逐位取反,不影響標志位 Back【思考】 編程序段,實現功能:對30H單元中的數X求補并保存在原單元。 第85頁/共150頁匯 編 指 令 格 式機 器 碼 格 式操 作注 釋RL A ;0010 0011 a7 a0累加器 A 的內容循環左移 一 位Back(1)(1)累加器累加器A A循環左移指令循環左移指令第86頁/共150頁匯編指令格式機器碼格式操作注釋RR A ;0000 0011 a7 a0將累加器 A的內容循環右移一位第87頁/共150頁匯編指令格式機器碼格式操作注釋RLC A ;0011 0011 CY a7 a0將累加器 A 的內容連同進位位CY一起循環左移一位
35、。 注注意意:該該操操作作影影響響標標志志位位 P P 和和 C CY Y。可可以以利利用用本本指指令令將將 A A 的的內內容容做做乘乘 2 2 處處理理,但但要要注注意意進進位位位位的的處處理理。 第88頁/共150頁匯編指令格式機器碼格式操作注釋RRC A ;0001 0011 CY a7 a0將累加器 A 的內容連同進位位CY一起循環右移一位。 注注意意:該該操操作作影影響響標標志志位位 P P 和和 C CY Y。 第89頁/共150頁例如:無符號例如:無符號 8 8 位二進制數位二進制數 (A A)=10111101B=BDH=10111101B=BDH, (, (CYCY)=0=
36、0。 將(將(A A)乘)乘 2 2,執行指令,執行指令 “RLC ARLC A”后”后 結果: (結果: (A A)=0111=0111 1010B=7AH1010B=7AH, (, (CYCY)=1=1, 而而 17AH17AH 正是正是 BDHBDH 的的 2 2 倍。倍。 Back第90頁/共150頁匯編指令格式機器碼格式操作注釋ANL A, Rn;0101 1rrr(A)(Rn) AANL A,direct;0101 0101direct(A)(direct) AANL A, Ri;0101 011i(A)(Ri) AANL A, #data;0101 0100#data(A)#da
37、ta AANL direct, A;0101 0010direct(direct)(A) directANL direct,#data;0101 0011direct#data(direct)#data directBack第91頁/共150頁Back第92頁/共150頁 應用:可以使目的操作數清零或保留其中有用的位,如ANL dst,80H 【思考】將41H(ASCII碼值)的高4位清零,低4位不變,何法?MOVA,#41HANL A,#0FH 或MOV direct,#0FH 第93頁/共150頁匯編指令格式機器碼格式操作注釋ORL A, Rn;0100 1rrr(A)(Rn) AORL
38、A,direct;0100 0101direct(A)(direct) AORL A, Ri;0100 011i(A)(Ri) AORL A, #data;0100 0100#data(A)#data AORL direct, A;0100 0010direct(direct)(A) directORL direct,#data;0100 0011direct#data(direct)#data directBack第94頁/共150頁Back第95頁/共150頁匯編指令格式機器碼格式操作注釋XRL A, Rn;0110 1rrr(A)(Rn) AXRL A,direct;0110 0101d
39、irect(A)(direct) AXRL A, Ri;0110 011i(A)(Ri) AXRL A, #data;0110 0100#data(A)#data AXRL direct, A;0110 0010direct(direct)(A) directBack第96頁/共150頁Back第97頁/共150頁上述邏輯操作類指令歸納如圖。上述邏輯操作類指令歸納如圖。第98頁/共150頁例:拆字程序:在內部RAM 40H單元保存有以壓縮BCD碼表示的2位十進制數,編程將它們拆開,分別保存在內部RAM的41H、42H單元。程序如下:MOV A,40H;壓縮BCD碼送累加器ANL A,#0FH;
40、高4位清0,保留低4位MOV 41H,A;保存低4位BCD碼MOV A,40H;取數據MOV A,#0F0H;低4位清0,保留高4位SWAP A;高低位交換MOV 42H,A;保存高4位BCD碼 第99頁/共150頁Back第100頁/共150頁 一個計算機“智商”的高低,取決于它的轉移類指令的多少,特別是條件轉移指令的多少。計算機運行過程中,有時因為操作的需要,程序不能按順序逐條執行指令,需要改變程序的運行方向,即將程序跳轉到某個指定的地址再順序執行下去。某些指令具有修改程序計數器 PC 內容的功能,因為 PC 內容是將要執行的下一條指令的地址,所以計算機執行這類指令就能夠控制程序轉移到新的
41、地址上去執行。第101頁/共150頁Back第102頁/共150頁 無條件轉移指令是當程序執行到該指令時,程序無條件的轉移到指令所提供的地址處執行。無條件轉移指令有長轉移、短轉移、相對轉移和間接轉移 4 條指令。該類指令結果不影響程序狀態字寄存器 PSW。 Back第103頁/共150頁匯編指令格式機器碼格式操作注釋AJMP addr11 ;a10a9a8 0 0001a7 a0先(PC)+2 PC,addr11 PC100,(PC1511)不變Back第104頁/共150頁Back第105頁/共150頁 LJMP add16 ; ,add16 PC00000010a15-a8a7-a0Bac
42、k第106頁/共150頁Back FFFFH 0000HG LJMP addr16 64KB ROM 地址 ORG 0000H;開機后(PC)=0000HLJMP 0F80H 已知某單片機監控程序始地址為0F80H,請問可用什么辦法可使單片機開機后自動執行該監控程序。第107頁/共150頁BackSJMP rel ;1000 0000rel (相對地址) 先(PC)+2 PC 后(PC)+rel PC第108頁/共150頁第109頁/共150頁01110011JMP A+DPTR;, (A)+(DPTR) PCBack第110頁/共150頁第111頁/共150頁例如:根據累加器 A 中命令鍵鍵
43、值,設計命令鍵操作程序入口跳轉表: CLR C ;清進位 RLC A ;鍵值乘 2 MOV DPTR,#JPTAB ;指向命令鍵跳轉表首址 JMP A+DPTR ;散轉入命令鍵入口JPTAB:AJMP CCS0 ;雙字節指令 AJMP CCS1 AJMP CCS2第112頁/共150頁Back第113頁/共150頁總結: 四個無條件轉移指令的轉移范圍。 除長轉指令外,其他轉移指令可以生成浮動 代碼,在64KB任意范圍內浮動。 涉及到的目標地址和偏移量均可用符號地址表示。 第114頁/共150頁 這是一條單字節指令,除 PC 加 1 外,不影響其它寄存器和標志位。 “NOP”指令常用于產生一個機
44、器周期的延遲。NOP ;00000000(PC)+1 PCBack第115頁/共150頁Back(1) (1) 判零轉移指令判零轉移指令 按給出的條件判斷,滿足則轉移,不滿足繼續執行下一條指令,轉移的目標地址為PC當前值為中心的-128+127共256B范圍,共有三類: 第116頁/共150頁BackBack第117頁/共150頁 功能: (dst)和(scr)作為條件,進行比較,若它們的值不等則轉移。 目標地址: (PC) 當前值+rel源地址+3+rel,同時若(dst)(src)則 CY 清零, (dst)(src) ,CY 置 1, (dst)(scr)時,順序往下執行。即: Back
45、CJNE(dst) , (src) ,rel ;三字節指令 第118頁/共150頁格式:CJNE A,direct,rel ;先 (PC)+3PCCJNE A,#data,rel ;先 (PC)+3PC第119頁/共150頁CJNE Rn,#data,rel;先(PC)+3PCCJNE Ri,#data,rel;先(PC)+3PC 第120頁/共150頁說明:(1) rel為8位的帶符號數,常用符號地址表示。指令的相對轉移范圍為-125+130,從(PC)+3為起始地址的+127-128字節單元地址。(2) 指令執行后均不影響任何操作數。(3) 執行過程的比較操作實際上是減法操作,只是不保存差
46、值,而是形成標志位CY。(4) 若(dst)和(src)均為無符號數,則根據CY可判斷大小: CY0時,(dst)(src);CY=1時,(dst)(src) 第121頁/共150頁DJNZ Rn,REL ;11011rrrrel(PC)+2 PC (Rn)-1 Rn當(Rn)=/0,則(PC)+rel PC當(Rn)=0,則順序執行Back第122頁/共150頁DJNZ direct,rel ;11010101directrel(PC)+3 PC (direct)-1 direct 當(direct)=/0,則(PC)+rel PC 當(direct)=0,則結束循環,程序往下執行第123頁
47、/共150頁Back【思考思考】請用一個示意圖歸納條件轉移指令請用一個示意圖歸納條件轉移指令。 第124頁/共150頁 在程序設計中,有時因操作要求,需反復執行某段程序,是這段程序能被公用。這樣可減少程序編寫和調試的工作量,于是引進了主程序和子程序的概念。指令系統中一般都有主程序調用子程序的指令和從子程序返回主程序的指令。通常把具有一定功能的公用程序段作為子程序,子程序的最后一條指令為返回主程序指令(RET) 。主程序轉子程序以及子程序返回主程序的過程入圖所是。Back第125頁/共150頁 短 調 用 指 令 提 供 了11 位目標地址,限定在2K 地址空間內調用。Back第126頁/共15
48、0頁ACALL addr11 ;a10a9a810001addr07addr11常用符號地址代替。調用范圍同AJMP指令。 第127頁/共150頁LCALL addr16 ;00010010addr8-15addr0-7(PC)+3 PC 斷點值(SP)+1 SP(PC0-7) (SP)(SP)+1 SP 壓入斷點(PC8-15) (SP) addr0-15 PCBackaddr16常用符號地址代替。調用范圍同LJMP指令。 第128頁/共150頁RET;00100010(SP) PC8-15, 彈出斷點高 8 位(SP)-1 SP(SP) PC0-7, 彈出斷點低 8 位(SP)-1 SPB
49、ack第129頁/共150頁 RET 指令是從子程序返回。 當程序執行到本指令時,表示結束子程序的執行,返回調用指令(ACALL 或 LCALL)的下一條指令處(斷點)繼續往下執行。 第130頁/共150頁00110010RETI ;(SP) PC8-15,(SP)-1 SP(SP) PC0-7, (SP)-1 SPBack在編程時不能將兩種返回指令混用,中斷返回一定要安排在中斷服務程序的最后。 第131頁/共150頁例 編程:利用子程序技術把內RAM 20H2AH單元中的數清零。 【思考】把本例題中的DJNZ指令改成CJNE指令,程序該如何修改? 第132頁/共150頁Back第133頁/共
50、150頁第134頁/共150頁第135頁/共150頁Back第136頁/共150頁匯編指令格式機器碼格式操作注釋MOV C,bit ; 1010 0010位地址(bit)(bit) CMOV bit,C ; 1001 0010位地址(bit)(C) bit 位地址(bit)Back第137頁/共150頁匯編指令格式機器碼格式操作注釋CLR C ;1100 00110 CCLR bit ;1100 0010位地址(bit)0 bitBack(1)(1)位清0指令第138頁/共150頁匯編指令格式機器碼格式操作注釋SETB C ;1101 00111 CSETB bit ;1101 0010位地址(bit)1 bitBack第139頁/共150頁匯編指令格式機器碼格式操作注釋CPL C ;1011 0011(C) CCPL bit ;1011 0010位地址(bit)(bit) bitBack第140頁/共150頁匯編指令格式機器碼格式操作注釋ANL C,bit ;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司每月生日會策劃方案
- 2025年職業教育與成人繼續教育專業能力考核試題及答案
- 2025年醫學影像技術考試試卷及答案
- 2025年社會保障與就業考試題及答案
- 畜禽糞污資源化技術-洞察及研究
- 2025年教育信息化與學習平臺構建考試試卷及答案
- 2025年環境工程師資格考試試卷及答案
- 2025年廣告與傳播專業考試試題及答案
- 2024年度浙江省二級造價工程師之建設工程造價管理基礎知識提升訓練試卷B卷附答案
- 2024年度浙江省二級注冊建筑師之法律法規經濟與施工題庫附答案(基礎題)
- (完整版)傳熱學期末考試試題
- JCT587-2012 玻璃纖維纏繞增強熱固性樹脂耐腐蝕立式貯罐
- Python數據分析與數據挖掘 課件 第6、7章 Pandas基礎與應用、Matplotlib
- 玻璃體手術并發癥的預防及處理
- 2023年醫學高級職稱-中醫肛腸(醫學高級)考試歷年高頻考點試題含答案
- 爬架拆除技術交底
- pergeos軟件教程評價許可介紹
- 密封條范文模板(A4打印版)
- 出租車 專業部分考核試題 城市客運企業主要負責人和安全生產管理人員安全考核基礎題庫
- GB/T 9634.3-2002鐵氧體磁心表面缺陷極限導則第3部分:ETD和E形磁心
- GB/T 8478-2008鋁合金門窗
評論
0/150
提交評論