![第3章指令系統(tǒng)_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/10/0ca73e94-0f9a-4fd2-8c45-bf264c4249e7/0ca73e94-0f9a-4fd2-8c45-bf264c4249e71.gif)
![第3章指令系統(tǒng)_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/10/0ca73e94-0f9a-4fd2-8c45-bf264c4249e7/0ca73e94-0f9a-4fd2-8c45-bf264c4249e72.gif)
![第3章指令系統(tǒng)_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/10/0ca73e94-0f9a-4fd2-8c45-bf264c4249e7/0ca73e94-0f9a-4fd2-8c45-bf264c4249e73.gif)
![第3章指令系統(tǒng)_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/10/0ca73e94-0f9a-4fd2-8c45-bf264c4249e7/0ca73e94-0f9a-4fd2-8c45-bf264c4249e74.gif)
![第3章指令系統(tǒng)_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/10/0ca73e94-0f9a-4fd2-8c45-bf264c4249e7/0ca73e94-0f9a-4fd2-8c45-bf264c4249e75.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第第3章章 指令系統(tǒng)指令系統(tǒng)Exit. . 熟悉熟悉89C5189C51匯編語言指令的格式;匯編語言指令的格式;. . 掌握掌握89C5189C51的的7 7種尋址方式,并能實際應種尋址方式,并能實際應用,學會計算目用,學會計算目 標地址或偏移量;標地址或偏移量;. . 熟記熟記89C5189C51的的111111條匯編指令,并會根據(jù)條匯編指令,并會根據(jù)題目要求編制匯編語言程序;題目要求編制匯編語言程序;. . 熟記指令的功能、操作的對象和結果以熟記指令的功能、操作的對象和結果以及指令執(zhí)行后對及指令執(zhí)行后對PSWPSW各位的影響。各位的影響。 3.1 3.1 匯編語言匯編語言3.1.1 3.1
2、.1 指令和程序設計語言指令和程序設計語言3.1.2 3.1.2 指令格式指令格式BACK3.1.1 3.1.1 指令和程序設計語言指令和程序設計語言 指令:指令:是是CPU根據(jù)人的意圖來執(zhí)行某種操作的命令。根據(jù)人的意圖來執(zhí)行某種操作的命令。 程序設計語言:程序設計語言:是實現(xiàn)人機交換信息的基本工具,是實現(xiàn)人機交換信息的基本工具,分為機器語言、匯編語言和高級語言。分為機器語言、匯編語言和高級語言。 機器語言:機器語言:用二進制編碼表示每條指令,是計算機用二進制編碼表示每條指令,是計算機能直接識別和執(zhí)行的語言。能直接識別和執(zhí)行的語言。 匯編語言:匯編語言:是用助記符、符號和數(shù)字等來表示指令是用助
3、記符、符號和數(shù)字等來表示指令的程序設計語言。它與機器語言指令是一一對應的。的程序設計語言。它與機器語言指令是一一對應的。BACK3.1.2 3.1.2 指令格式指令格式 89C51匯編語言指令格式匯編語言指令格式操作碼操作碼 目的操作數(shù)目的操作數(shù),源操作數(shù),源操作數(shù);注釋;注釋 匯編語言指令對應的二進制代碼格式匯編語言指令對應的二進制代碼格式單字節(jié)指令單字節(jié)指令(49條)條)雙字節(jié)指令雙字節(jié)指令(45條)條)三字節(jié)指令三字節(jié)指令(17條)條)單字節(jié)指令(單字節(jié)指令(49條)條)1、指令碼中隱含著對某一種寄存器的操作、指令碼中隱含著對某一種寄存器的操作如:指令如:指令“INC DPTR”的指令代
4、碼格式為:的指令代碼格式為:A3H= 1 0 1 0 0 0 1 12、由指令中的、由指令中的rrr三位的不同編碼指定某三位的不同編碼指定某一寄存器一寄存器如:指令如:指令“MOV A,Rn”的指令代碼格式的指令代碼格式為:為:1 1 1 0 1 r r r 雙字節(jié)指令(雙字節(jié)指令(45條)條) 用一個字節(jié)表示操作碼,另一個字節(jié)表用一個字節(jié)表示操作碼,另一個字節(jié)表示操作數(shù)或操作數(shù)所在的地址。示操作數(shù)或操作數(shù)所在的地址。 格式為:格式為:操作碼操作碼立即數(shù)或地址立即數(shù)或地址BACK三字節(jié)指令(三字節(jié)指令(17條)條) 一個字節(jié)操作碼,兩個字節(jié)操作數(shù)。一個字節(jié)操作碼,兩個字節(jié)操作數(shù)。 格式為:格式
5、為:操作碼操作碼立即數(shù)或地址立即數(shù)或地址立即數(shù)或地址立即數(shù)或地址3.2 3.2 尋址方式尋址方式 什么是尋址方式:什么是尋址方式:如何找到存放操如何找到存放操作數(shù)的地址,把操作數(shù)提取出來的方法。作數(shù)的地址,把操作數(shù)提取出來的方法。 1、7種尋址方式種尋址方式 2、尋址空間及符號注釋、尋址空間及符號注釋1. 7種尋址方式:種尋址方式: 1)寄存器尋址)寄存器尋址 2)直接尋址)直接尋址 3)立即數(shù)尋址)立即數(shù)尋址 4)寄存器間接尋址)寄存器間接尋址 5)變址尋址)變址尋址 6)相對尋址)相對尋址 7)位尋址)位尋址(1)寄存器尋址)寄存器尋址 寄存器尋址:寄存器尋址:由指令指出寄存器組由指令指出
6、寄存器組R0R7中的某一個或其他寄存器中的某一個或其他寄存器(A,B,DPTR等等)的內容的內容作為操作數(shù)。作為操作數(shù)。例如:例如:MOV A,R0 ;(R0)A MOV P1,A ;(A)P1口 ADD A,R0 ;(A)+(R0)A(2)直接尋址)直接尋址 直接尋址方式直接尋址方式:在指令中直接給出操作數(shù)在指令中直接給出操作數(shù)所在存儲單元的地址。指令中操作數(shù)部分是操所在存儲單元的地址。指令中操作數(shù)部分是操作數(shù)所在地址。作數(shù)所在地址。 直接尋址方式可訪問片內直接尋址方式可訪問片內RAM的的 128個單元個單元以及所有的以及所有的SFR。對于。對于SFR,既可以使用它們的,既可以使用它們的地址
7、,也可以使用它們的名字。地址,也可以使用它們的名字。 例如:例如:MOV A,3AH ;(3AH) A MOV A,P1 ;(P1口口) A 或:或: MOV A,90H ; 90H是是P1口的地址口的地址(3)立即數(shù)尋址)立即數(shù)尋址 立即數(shù)尋址:立即數(shù)尋址:指令操作碼后面緊跟的是一字節(jié)或指令操作碼后面緊跟的是一字節(jié)或兩字節(jié)操作數(shù),用兩字節(jié)操作數(shù),用“#”號表示,以區(qū)別直接地址。號表示,以區(qū)別直接地址。 例如:例如:MOV A,3AH ;(;(3AH)AMOV A,#3AH ; 3AHAMOV DPTR,#2000H ;2000HDPTR ;(;(DPH)=20H ;(;(DPL)=00H(4
8、)寄存器間接尋址)寄存器間接尋址 寄存器間接尋址:寄存器間接尋址:操作數(shù)的地址事先存放在某個操作數(shù)的地址事先存放在某個寄存器中,寄存器間接尋址是把指定寄存器的內容作為寄存器中,寄存器間接尋址是把指定寄存器的內容作為地址,由該地址所指定的單元內容作為操作數(shù)。地址,由該地址所指定的單元內容作為操作數(shù)。 89C51規(guī)定規(guī)定R0或或R1為間接尋址寄存器,它可尋址為間接尋址寄存器,它可尋址片片內內RAM低低128B單元內容和單元內容和片外片外RAM低地址低地址256B單元的單元的內容。還可采用內容。還可采用DPTR作為間接尋址寄存器,尋址外部作為間接尋址寄存器,尋址外部數(shù)據(jù)存儲器的數(shù)據(jù)存儲器的64KB空
9、間。空間。 但不能用這種尋址方式尋址特殊功能寄存器。但不能用這種尋址方式尋址特殊功能寄存器。 例如:例如: 例如:例如:將片內RAM 65H單元內容47H送A,可執(zhí)行指令“MOV A,R0”。其中R0內容為65H。如圖所示:65H47HR0A47H片內數(shù)據(jù)存儲器片內數(shù)據(jù)存儲器地址65H以指令中所指定以指令中所指定的的R0內容(內容(65H)為指針為指針將片內將片內RAM 65H單元內容單元內容47H送送A(5)變址尋址)變址尋址(基址寄存器基址寄存器+變址寄存器間接尋址變址寄存器間接尋址) 變址尋址:變址尋址:以某個寄存器的內容為基地址,在這個以某個寄存器的內容為基地址,在這個基地址的基礎上加
10、上地址偏移量形成真正的操作數(shù)基地址的基礎上加上地址偏移量形成真正的操作數(shù)地址。地址。89C51中采用中采用DPTR或或PC為變址寄存器,為變址寄存器,A的的內容為地址偏移量。內容為地址偏移量。 注意:變址尋址只能訪問注意:變址尋址只能訪問程序存儲器程序存儲器,訪問范圍為,訪問范圍為64KB。這種尋址方式多用于查表。這種尋址方式多用于查表。 MOVC A, A+DPTR MOVC A, A+PC 例如:例如: 例如:例如:MOVC A,A+DPTR ;(A)+(DPTR)A1EH0302HROMDPTRAA02F1H11H1EH+DPTR內容與內容與A的內容之的內容之和為程序存儲器地址和為程序存
11、儲器地址程序存儲器內容送程序存儲器內容送A(6)相對尋址)相對尋址 相對尋址:相對尋址:是以當前的是以當前的PC值加上指令中規(guī)定的偏移值加上指令中規(guī)定的偏移量量rel而形成實際的轉移地址。而形成實際的轉移地址。 相對尋址只出現(xiàn)在相對轉移指令中。相對尋址只出現(xiàn)在相對轉移指令中。 當前的當前的PC值是指執(zhí)行完相對指令后的值是指執(zhí)行完相對指令后的PC值;值;相對轉移指令操作碼所在地址稱為源地址;轉移相對轉移指令操作碼所在地址稱為源地址;轉移后的地址稱為目的地址。后的地址稱為目的地址。 目的地址目的地址=源地址源地址+2(相對轉移指令字節(jié)數(shù))(相對轉移指令字節(jié)數(shù))+rel rel為補碼表示的有符號數(shù)。
12、為補碼表示的有符號數(shù)。 例如:例如:JC rel ,設設rel=75H,CY=1。 (0100 0000 0111 0101)(7)位尋址)位尋址 位尋址:位尋址:采用位尋址方式的指令的操作數(shù)是采用位尋址方式的指令的操作數(shù)是8位位二進制數(shù)中的某一位,指令中給出的是位地址。二進制數(shù)中的某一位,指令中給出的是位地址。位地址在指令中用位地址在指令中用bit表示。表示。 例如:例如:CLR bit;位地址的兩種表示方法:位地址的兩種表示方法:直接使用位地址,如直接使用位地址,如D3H;直接用寄存器名字加位數(shù),如直接用寄存器名字加位數(shù),如PSW.3。位尋址區(qū)域:位尋址區(qū)域: 1、片內片內RAM的的20H
13、-2FH的的16個單元中的個單元中的128位;位; 2、字節(jié)地址能被字節(jié)地址能被8整除的整除的SFR。2、尋址空間及符號注釋、尋址空間及符號注釋(1)尋址空間:)尋址空間:見表見表3-2(2)尋址方式中常用符號注釋)尋址方式中常用符號注釋表表3-2 操作數(shù)尋址方式和有關空間操作數(shù)尋址方式和有關空間尋址方式尋址空間立即數(shù)尋址程序存儲器ROM直接尋址片內RAM 低128B、特殊功能寄存器寄存器尋址工作寄存器R0-R7、A、B、C、DPTR寄存器間接尋址片內RAM 低128B、片外RAM變址尋址程序存儲器(A+PC,A+DPTR)相對尋址程序存儲器256B 范圍(PC+偏移量)位尋址片內RAM 的2
14、0H-2FH 字節(jié)地址、部分SFR符號注釋符號注釋 Rn(n=07):當前選中的工作寄存器組:當前選中的工作寄存器組R0R7。 Ri(i=0,1):作為地址指針的兩個工作寄存器:作為地址指針的兩個工作寄存器R0,R1。 #data:8位立即數(shù)。位立即數(shù)。 #data16:16位立即數(shù)。位立即數(shù)。 direct:8位片內位片內RAM單元(包括單元(包括SFR)的直接地址。)的直接地址。 addr11:11位目的地址,用于位目的地址,用于ACALL和和AJMP指令中。指令中。 addr16:16位目的地址。用于位目的地址。用于LCALL和和LJMP指令中。指令中。 rel:補碼表示的:補碼表示的8
15、位地址偏移量。范圍:位地址偏移量。范圍:-128+127D。 bit:片內:片內RAM或或SFR的直接尋址位地址。的直接尋址位地址。 :間接寄存器的符號。:間接寄存器的符號。 /:位操作指令中對該位先取反再參與操作,不影響原值。:位操作指令中對該位先取反再參與操作,不影響原值。 ():中的內容。中的內容。 ():指出的地址單元中的內容。指出的地址單元中的內容。 :指令操作流程方向。:指令操作流程方向。概述:概述: 89C5189C51指令系統(tǒng)由指令系統(tǒng)由111111條指令組成。其中條指令組成。其中,單字節(jié)指令,單字節(jié)指令4949條,雙字節(jié)指令條,雙字節(jié)指令4545條,三字條,三字節(jié)指令節(jié)指令1
16、717條。條。 從指令執(zhí)行時間看,單周期指令從指令執(zhí)行時間看,單周期指令64條,條,雙周期雙周期45條,只有乘、除指令為條,只有乘、除指令為4個周期。個周期。 該指令系統(tǒng)有該指令系統(tǒng)有255種指令代碼,助記符種指令代碼,助記符42種種。3.3 89C513.3 89C51指令系統(tǒng)指令系統(tǒng)89C51 89C51 指令系統(tǒng)可分為五大類指令系統(tǒng)可分為五大類1 1 數(shù)據(jù)傳送指令:數(shù)據(jù)傳送指令:2828條條2 2 算術運算指令:算術運算指令:2424條條3 3 邏輯運算及移位指令:邏輯運算及移位指令:2525條條4 4 控制轉移指令:控制轉移指令:1717條條5 5 位操作指令(布爾操作):位操作指令(
17、布爾操作):1717條條Back 3.3.1 3.3.1 數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令1.1.以累加器以累加器A A為目的操作數(shù)的指令為目的操作數(shù)的指令(4(4條條, ,即即4 4種種尋址方式尋址方式) ) 2.2.以寄存器以寄存器RnRn為目的操作數(shù)的指令(為目的操作數(shù)的指令(3 3條)條)3.3.以直接地址為目的操作數(shù)的指令(以直接地址為目的操作數(shù)的指令(5 5條)條)4.4.以間接地址為目的操作數(shù)的指令(以間接地址為目的操作數(shù)的指令(3 3條)條)5.5.十六位數(shù)據(jù)傳送指令十六位數(shù)據(jù)傳送指令(1(1條條) )6.6.查表指令(查表指令(2 2條)條)7.7.累加器累加器A A與片外與片外RA
18、MRAM傳送指令傳送指令(4(4條條) )8.8.棧操作指令(棧操作指令(2 2條)條)9.9.交換指令交換指令(5(5條條) )1.1.以累加器以累加器A A為目的操作數(shù)的指令為目的操作數(shù)的指令 (4 (4條條, ,即即4 4種尋址方式種尋址方式) )例:例:匯編指令匯編指令機器碼機器碼操操 作作注注 釋釋MOV A,Rn1110 1rrr(Rn) A將工作寄存器將工作寄存器RnRn(即(即R0R7R0R7)內容傳送到累加器內容傳送到累加器A A中中MOV A,direct1110 0101direct(direct) A將直接尋址所得的片內將直接尋址所得的片內RAMRAM單單元內容或特殊功
19、能寄存器中元內容或特殊功能寄存器中的內容傳送到累加器的內容傳送到累加器A AMOV A,Ri1110 011i(Ri) A將間接尋址(將間接尋址(RiRi為為R0R0或或R1R1)所得的片內所得的片內RAMRAM單元內容或特單元內容或特殊功能積存器中的內容傳送殊功能積存器中的內容傳送到累加器到累加器A A中中MOV A,#data0111 0100#data#dataA將立即數(shù)傳送到累加器將立即數(shù)傳送到累加器A A中中 MOV AMOV A,#30H #30H ;(;(A A)=30H=30H MOV A MOV A, 30H30H ;(;(A A)=11H =11H MOV A MOV A,
20、R1R1 ;(;(A A)=11H=11H MOV A MOV A,R1 R1 ;(;(A A)=30H=30H例:起始例:起始30H單元內容為單元內容為11H,R1中為中為30HBack 2 2 、以寄存器、以寄存器RnRn為目的操作數(shù)的指令(為目的操作數(shù)的指令(3 3條)條)這組指令的功能是把源操作數(shù)所指定的內容送到當前工作寄存器組R0-R7中的某個寄存器。源操作數(shù)有寄存器尋址、直接尋址和立即數(shù)尋址三種方式。Back匯編指令匯編指令機器碼機器碼操操 作作注注 釋釋MOV Rn,A1111 1rrr(A) Rn將累加器將累加器A A中內容傳送到工中內容傳送到工作寄存器作寄存器RnRn(即(即
21、R0-R7R0-R7)中)中MOV Rn,direct1010 1rrrdirect(direct) Rn將 直 接 尋 址 所 得 的 片 內將 直 接 尋 址 所 得 的 片 內RAM單元內容或特殊功能單元內容或特殊功能寄存器中的內容傳送到工作寄存器中的內容傳送到工作寄存器寄存器Rn(即(即R0-R7)中)中MOV Rn,#data0111 1rrr#data#dataRn將立即數(shù)傳送到工作寄存器將立即數(shù)傳送到工作寄存器Rn(即(即R0-R7)中)中如:(如:(A A)=78H=78H,(,(R5R5)=47H=47H,(,(70H70H)=F2H=F2H,執(zhí)行指令:,執(zhí)行指令: MOV
22、R5MOV R5,A A ;(;(A A)R5R5,(,(R5R5)=78H=78H MOV R5MOV R5,70H 70H ;(;(70H70H)R5R5,(,(R5R5)=F2H=F2H MOV R5MOV R5,#A3H#A3H; A3HR5A3HR5,(,(R5R5)=A3H=A3H注意:注意:在在89C5189C51指令系統(tǒng)中沒有指令系統(tǒng)中沒有“MOV RnMOV Rn,RnRn”傳傳送指令。送指令。 3 3 、以直接地址為目的操作數(shù)的指令(、以直接地址為目的操作數(shù)的指令(5 5條)條)這組指令的功能是把源操作數(shù)所指定的內容送入由直接地址direct所指出的片內存儲單元中。源操作數(shù)
23、有寄存器尋址,直接尋址,寄存器間接尋址和立即尋址等方式。匯編指令匯編指令機器碼機器碼操操 作作注注 釋釋MOV direct,A1111 01011111 0101directdirect(A) direct(A) direct將將A A中內容傳送到直接地址中內容傳送到直接地址directdirect所所指出的片內存儲單元中。指出的片內存儲單元中。MOV direct,Rn1rrrdirectdirectRn direct 將工作寄存器將工作寄存器Rn(即(即R0-R7)中內)中內容傳送到直接地址容傳送到直接地址direct所指出的片所指出的片內存儲單元中。內存儲單元中。MOV direct1
24、,direct21000 0101Direct2direct1direct2direct 1將直接地址源將直接地址源direct2所指出的片內所指出的片內存儲單元中內容傳送到直接地址目存儲單元中內容傳送到直接地址目的的direct1所指出的片內存儲單元中所指出的片內存儲單元中MOV direct,Ri 011idirectdirect(Ri) direct 將間接尋址(將間接尋址(Ri為為R0或或R1)所得的)所得的片內片內RAM單元內容傳送到直接地址單元內容傳送到直接地址direct所指出的片內存儲單元中所指出的片內存儲單元中MOV direct,#data0111 0101directdi
25、rect#data#data direct 將立即數(shù)傳送到直接地址將立即數(shù)傳送到直接地址direct所指所指出的片內存儲單元中出的片內存儲單元中4 4 、以間接地址為目的操作數(shù)的指令(、以間接地址為目的操作數(shù)的指令(3 3條)條)(Ri)表示Ri中的內容為指定的RAM單元的地址。匯編指令匯編指令機器碼機器碼操操 作作注注 釋釋 MOV Ri,A1111 011i (A)(Ri)將累加器將累加器A中內容傳送到中內容傳送到 間接尋址(間接尋址(Ri為為R0或或R1) 所指的片內所指的片內RAM單元中。單元中。 MOV Ri,direct 0101 011i (direct) (Ri)將直接尋址得到
26、的片內將直接尋址得到的片內RAMdirectRAMdirect單元內容或特殊單元內容或特殊功能寄存器中內容傳送到間功能寄存器中內容傳送到間接尋址(接尋址(Ri為為R0或或R1)所)所指的片內指的片內RAM單元中。單元中。 MOV Ri,#data0111 011i data#data(Ri) 將立即數(shù)傳送到間接尋將立即數(shù)傳送到間接尋 址(址(Ri為為R0或或R1)所指的)所指的片內片內RAM單元中。單元中。 MOV指令在片內存儲器的操作功能如圖3.2-1示。圖圖3.2-1 3.2-1 傳送指令在片內存儲器的操作功能傳送指令在片內存儲器的操作功能RidirectRn#dataACC5 5、 十六
27、位數(shù)據(jù)傳送指令十六位數(shù)據(jù)傳送指令(1(1條條) ) 這條指令的功能是把這條指令的功能是把1616位常數(shù)送入位常數(shù)送入DPTRDPTR。DPTRDPTR由由DPHDPH和和DPLDPL組成組成。例:例:MOV DPTR, #1000H; (DPTR)=1000H, (DPH)=10H, (DPL)=00H 匯編指令匯編指令機器碼機器碼操操 作作MOV DPTR,#data161001 0000Data(h)Data(l)#data16DPTR6 6 、查表指令(、查表指令(2 2條)條)例如上述兩條指令的操作過程如圖上述兩條指令的操作過程如圖3.2-2所示。所示。匯編指令匯編指令機器碼機器碼操操
28、 作作MOVC A,A+DPTR1001 0011(A)+(DPTR)A(對ROM,遠程查表)MOVC A,A+PC1000 0011先(PC)+1PC再((A)+(PC))A(對ROM,近程查表)基地址寄存器+變址寄存器間接尋址PC+A(程序存儲器256B)基地址寄存器+變址寄存 器間接尋址DPTR+A(程序存儲器0-64K)A寄存器圖圖3.2-2 3.2-2 程序存貯器傳送程序存貯器傳送Back執(zhí)行下面程序段后結果如何?MOV DPTR, #2000H MOV DPTR, #2000H ;(;(DPTRDPTR)=2000H=2000HMOV A , #0AH MOV A , #0AH ;
29、(;(A A)=0AH=0AHMOVC A, A+DPTR MOVC A, A+DPTR ;(A)=(200AH)=11H(A)=(200AH)=11H例例1 1:若初始:若初始 ROM ROM 內容:內容:2000H 00H2000H 00H2001H 01H2001H 01H2002H 09H2002H 09H2003H 04H2003H 04H2004H 06H2004H 06H2005H 08H2005H 08H2006H FFH2006H FFH2007H 66H2007H 66H2008H 45H2008H 45H2009H ABH2009H ABH200AH 11H200AH 1
30、1HBack例例2:2:若初始若初始ROMROM內容為:內容為: 100FH100FH01H01H1010H 1010H 02H02H1011H 1011H 03H03H1012H 1012H 04H04H 所以,最后結果為:(A)=02H (R0)=02H (PC)=1004H執(zhí)行下面程序后的結果如何?執(zhí)行下面程序后的結果如何? 1000H 74 0D MOVA, #0DH ;(;(A)=0DH1002H 83 MOVC A, A+PC ;(;(PC)=1002+1=1003H, (A)=(A)+(PC) =(0D+1003) =(1010H) (A)=02H1003H F8 MOV R0,
31、 A ; (R0)=(A)=02H7、 累加器累加器A與片外與片外RAM傳送指令傳送指令(4條條,I/O指令指令) 在在89C5189C51指令系統(tǒng)中,指令系統(tǒng)中,CPUCPU對片外對片外RAMRAM的訪問只能用寄存器間接尋址的方式,的訪問只能用寄存器間接尋址的方式,且僅有四條指令:且僅有四條指令:第第2 2,4 4兩條指令以兩條指令以DPTRDPTR為片外數(shù)據(jù)存儲器為片外數(shù)據(jù)存儲器1616位地址指針,尋址范圍達位地址指針,尋址范圍達64KB64KB。其功能是。其功能是DPTRDPTR所指定的片外數(shù)據(jù)存儲器與累加器所指定的片外數(shù)據(jù)存儲器與累加器A A之間傳送數(shù)據(jù)。之間傳送數(shù)據(jù)。第第1 1,3
32、3兩條指令是用兩條指令是用R0R0或或R1R1作低作低8 8位地址指針,由位地址指針,由P0P0口送出,尋址范圍口送出,尋址范圍是是256256字節(jié)。這兩條指令完成以字節(jié)。這兩條指令完成以R0R0或或R1R1為地址指針的片外數(shù)據(jù)存儲器與累加為地址指針的片外數(shù)據(jù)存儲器與累加器器A A之間的傳送數(shù)據(jù)。之間的傳送數(shù)據(jù)。上述四條指令的操作如上述四條指令的操作如 圖圖3.2-33.2-3所示所示: :匯編指令匯編指令機器碼機器碼操操 作作MOVX A,Ri1110 001i(Ri)AMOVX A,DPTR1110 0000(DPTR)AMOVX Ri,A1111 001i(A)(Ri)MOVX DPTR
33、,A1111 0000(A)(DPTR)圖3.2-3 外部數(shù)據(jù)存儲器傳送操作A寄存器寄存器間接尋址寄存器間接尋址R1.R0R1.R0片外片外 RAM 0-255BRAM 0-255B寄存器間接尋址寄存器間接尋址DPTRDPTR片外片外 RAM 0-64KBRAM 0-64KB 若片外數(shù)據(jù)存儲器的地址空間上有片外若片外數(shù)據(jù)存儲器的地址空間上有片外I/OI/O接口芯片,則接口芯片,則上述指令就是上述指令就是89C5189C51的輸入的輸入/ /輸出指令。輸出指令。例例: : 若片內若片內RAM (30H)=01HRAM (30H)=01H,片外,片外RAM RAM (30H)=02H(30H)=0
34、2H,執(zhí)行下面程序段后的結果如何?,執(zhí)行下面程序段后的結果如何?MOV R1, #30H ;(R1)=30HMOVX A, R1 ;(A)=02HMOV R0, A ;(R0)=(A)=02HMOV A,R1 ;(A)=(R1)=01HMOV R2, A ;(R2)=(A)=01H 8 8 、棧操作指令(、棧操作指令(2 2條)條) 在在89C5189C51片內的片內的128128字節(jié)單元中,可設定一個區(qū)域作為堆棧(一般可設在字節(jié)單元中,可設定一個區(qū)域作為堆棧(一般可設在30H7FH30H7FH單元中),棧頂由堆棧指針單元中),棧頂由堆棧指針SPSP指出,指出,89C5189C51復位后為復位
35、后為07H07H,若要更改,需,若要更改,需重新賦值。重新賦值。 PUSH和和POP操作不影響標志位。操作不影響標志位。匯編指令匯編指令機器碼機器碼操操 作作PUSH direct1100 0000direct先先(SP)+1SP后后(direct) (SP),壓棧,壓棧POP direct1101 0000direct先先(SP)(direct)后后(SP)-1 SP,出棧,出棧 例:例:MOV SPMOV SP, #18H#18H; ; (SPSP)=18H=18HMOV AMOV A, #30H#30H; ; (A A)=30H=30HMOV DPTRMOV DPTR, #1000H#1
36、000H; ; (DPTRDPTR)=1000H=1000HPUSH APUSH A; ; (SPSP)=19H=19H,(,(19H19H)=30H=30HPUSH DPHPUSH DPH; ; (SPSP)=1AH=1AH,(,(1AH1AH)=10H=10HPUSH DPLPUSH DPL; ; (SPSP)=1BH=1BH,(,(BHBH)=00H=00H POP DPLPOP DPL; (DPL)=00H; (DPL)=00H,(SP)=1AH(SP)=1AHPOP DPHPOP DPH; (DPH)=10H ; (DPH)=10H ,(SP)=19H(SP)=19HPOP APOP
37、 A; (A)=30H ; (A)=30H , (SP)=18H (SP)=18H 9 9、 交換指令交換指令(4+1(4+1條條) )(1 1)字節(jié)交換指令)字節(jié)交換指令例例:初始時:初始時:(A)=34H(A)=34H,(30H)=11H(30H)=11HXCH A, 30H XCH A, 30H ;(A)=11H(A)=11H,(30H)=34H(30H)=34HMOV R1, #30H MOV R1, #30H ;(R1)=30H(R1)=30HXCH A, R1XCH A, R1 ;(A)=34H(A)=34H,(30H)=11H(30H)=11H匯編指令匯編指令機器碼機器碼操操 作
38、作XCH A,Rn1100 1rrr(A)(Rn)XCH A,direct1100 0101direct(A) (direct)XCH A,Ri1100 011i(A) (Ri)(2) (2) 半字節(jié)交換指令半字節(jié)交換指令 XCHDXCHD指令為低半字節(jié)交換指令。該指令將累加器指令為低半字節(jié)交換指令。該指令將累加器A A的低的低4 4位與位與R0R0或或R1R1所指出的片內所指出的片內RAMRAM單元的低單元的低4 4位數(shù)據(jù)相互交換,各位數(shù)據(jù)相互交換,各自的高自的高4 4位不變,其操作表示為:位不變,其操作表示為:如:如:(R1)=30H,(30H)=11H,(A)=34H(R1)=30H,(
39、30H)=11H,(A)=34H則:則:XCHD AXCHD A, R1 R1 ; (A)=31H (A)=31H ; (30H)=14H(30H)=14H 匯編指令機器碼操 作XCHD A,Ri1101 011i(A)0-3 (Ri)0-3 SWAP A1100 01003.3.2 3.3.2 算術運算指令(算術運算指令(2424條)條)1 .1 .不帶進位加法指令不帶進位加法指令(4(4條條) )2 .2 .帶進位加法指令(帶進位加法指令(4 4條)條)3 .3 .帶借位減法指令(帶借位減法指令(4 4條)條)4 .4 .乘法指令(乘法指令(1 1條)條)5 5、除法指令(、除法指令(1
40、1條)條)6 6、加、加1 1指令(指令(5 5條)條)7 7、減、減1 1指令指令(4(4條條) )8 8、十進制調整指令、十進制調整指令(1(1條條) )1 1 、 不帶進位加法指令不帶進位加法指令(4(4條條) )匯編指令匯編指令機器碼機器碼操操 作作ADD A,Rn0010 1rrr(A)+(Rn)AADD A,direct0010 0101direct(A)+(direct)AADD A,Ri0010 011i(A)+(Ri)AADD A,#data0010 0100data(A)+#dataA說明:說明:上述指令的執(zhí)行將影響標志位上述指令的執(zhí)行將影響標志位ACAC,CYCY,OVO
41、V,P P。當。當“和和”的第的第3 3位或第位或第7 7位有進位時,分別將位有進位時,分別將ACAC,CYCY標志位標志位置置1 1,否則為,否則為0 0。溢出標志位。溢出標志位OV=C7 C6OV=C7 C6(異或),該標(異或),該標志位只有帶符號數(shù)運算時才有用。志位只有帶符號數(shù)運算時才有用。例:若:(例:若:(A A)=78H =78H ,(,(R0R0)=64H=64H執(zhí)行執(zhí)行ADD AADD A,R0 R0 后,結果及后,結果及PSW=PSW=? (A A):):78H= 0111 1000 B78H= 0111 1000 B + +(R0R0):):64H= 0110 0100
42、B64H= 0110 0100 B (A A):):DCH= 1101 1100 BDCH= 1101 1100 B標志位:標志位:CY=0CY=0, AC=0AC=0, OV=1OV=1, P=1P=1, 即即: PSW=05H: PSW=05H 結果:結果: (A A)=DCH =DCH (R0R0)=64H=64H2 2、帶進位加法指令(、帶進位加法指令(4 4條)條)匯編指令匯編指令機器碼機器碼操操 作作ADDC A,Rn0011 1rrr(A)+(Rn) +CYAADDC A,direct0011 0101direct(A)+(direct) +CYAADDC A,Ri0011 01
43、1i(A)+(Ri) +CYAADDC A,#data0011 0100#data(A)+#data+CYA說明:說明:本組指令的功能是同時把源操作數(shù)所指出的內容和進本組指令的功能是同時把源操作數(shù)所指出的內容和進位標志未位標志未CY都加到累加器都加到累加器A中,結果存放到中,結果存放到A中,其余的功中,其余的功能和上面的能和上面的ADD指令相同。本組指令常用于多字節(jié)加法。指令相同。本組指令常用于多字節(jié)加法。 例:設(A)=0C3H,(R0)=0AAH, (CY)=1。執(zhí)行指令“ADDC A,R0”后的結果及標志位如何?解: (A A):): C3H=1100 0011C3H=1100 0011
44、 + + (CYCY):): 1=0000 00011=0000 0001 1100 0100 1100 0100 + + (R0R0):): AAH=1010 1010AAH=1010 1010 (A A):): 6EH=0110 11106EH=0110 1110 標志位:標志位:CY=1CY=1,OV=1OV=1,AC=0AC=0, 結果:(結果:(A A)=6EH=6EH,(,(R0R0)=0AAH=0AAH。 例:編程,將例:編程,將(30H),(31H)(30H),(31H)單元中的數(shù)與單元中的數(shù)與(40H40H),(41H,(41H)單元中的數(shù)相加,結果存)單元中的數(shù)相加,結果存
45、于(于(30H30H),(31H,(31H)單元中。)單元中。解:解:MOV AMOV A, 30H30HADD AADD A, 40H40HMOV 30HMOV 30H, A AMOV AMOV A, 31H31HADDC AADDC A, 41H41HMOV 31HMOV 31H, A A3 3 、帶借位減法指令(四條)、帶借位減法指令(四條)匯編指令匯編指令機器碼機器碼操操 作作SUBB A,Rn1001 1rrr(A)-(Rn) -CYASUBB A,direct1001 0101direct(A-(direct) -CYASUBB A,Ri1001 011i(A)-(Ri) -CYA
46、SUBB A,#data1001 0100#data(A)-#data-CYA 說明:這組指令的功能是從累加器這組指令的功能是從累加器A A中減去中減去源操作數(shù)所指出的數(shù)及進位位源操作數(shù)所指出的數(shù)及進位位CYCY的值的值, ,差保差保留在累加器留在累加器A A中。中。 由于由于89C5189C51指令系統(tǒng)中沒有不帶借位的指令系統(tǒng)中沒有不帶借位的減法指令,如需要的話,可以在減法指令,如需要的話,可以在“SUBBSUBB”指指令前用令前用“CLR CCLR C”指令將指令將CYCY清清0 0,這一點必須,這一點必須注意。注意。例:設(例:設(A A)=0C9H,=0C9H,(R2R2)=54H,C
47、y=1=54H,Cy=1。 執(zhí)行指令執(zhí)行指令“SUBB ASUBB A, R2R2”的結果如何?的結果如何? 解:解: (A A)=0C9H= 11001001 B=0C9H= 11001001 B - - ) CYCY =1 = 00000001 B=1 = 00000001 B 11001000 B 11001000 B - -)()(R2R2)=54H = 01010100 B=54H = 01010100 B (A A)=74H = 01110100 B=74H = 01110100 B結果為:(結果為:(A A)=74H=74H標志位為:標志位為:CY=0 AC=0 OV=1 P=0
48、CY=0 AC=0 OV=1 P=0 4 4、 乘法指令(乘法指令(1 1條)條)該指令若乘積大于0FFH,則OV置1,否則OV清0,Cy位總是被清0。 該指令將累加器該指令將累加器A和寄存器和寄存器B中兩個無符號數(shù)相乘,所中兩個無符號數(shù)相乘,所得得16位積的低字節(jié)存放在位積的低字節(jié)存放在A中,高字節(jié)存放中中,高字節(jié)存放中B中。中。例:(例:(A A)=4EH=4EH,(,(B B)=5DH=5DH,執(zhí)行指令,執(zhí)行指令“MUL ABMUL AB”后后結果如何結果如何? ?解: 結果為:(結果為:(B B)=1CH, =1CH, (A A)=56H=56H, 表示積(表示積(BABA)=1C56
49、H=1C56H,OV=1OV=1。 匯編指令匯編指令機器碼機器碼操操 作作MUL AB1010 0100(A)(B)B15-8A7-05 5、 除法指令(除法指令(1 1條)條)例:(例:(A A)=BFH=BFH,(,(B B)=32H=32H。執(zhí)行指令。執(zhí)行指令“DIV ABDIV AB”后后: : 結果為(結果為(A A)=03H=03H,(,(B B)=29H=29H; 標志位標志位 CY=0CY=0,OV=0OV=0。該指令執(zhí)行后,該指令執(zhí)行后,CYCY和和OVOV均被清均被清0 0。若原(若原(B B)=00H=00H,則結果無法確定,用則結果無法確定,用OV=1OV=1表示,表示
50、,CYCY仍為仍為0 0。匯編指令匯編指令機器碼機器碼操操 作作DIV AB1000 0100 (A)/(B)的商的商 A,(A)/(B)的余數(shù)的余數(shù) B 6 6、 加加1 1指令(指令(5 5條)條)匯編指令匯編指令機器碼機器碼操操 作作注注 釋釋INC A00000100(A)+1AA中內容加中內容加1INC Rn0000 1rrr(Rn)+1RnRn中內容加中內容加1INC direct0000 0101direct(direct)+1directDirect單元中內容加單元中內容加1INC Ri0000 011i(Ri)+1(Ri)Ri間接尋址所得片內間接尋址所得片內RAM單元中內容加
51、單元中內容加1INC DPTR1010 0011 (DPTR)+1DPTRDPTR中內容加中內容加1 該組指令的操作不影響該組指令的操作不影響PSWPSW。例例1 1:比較指令:比較指令“INC AINC A”和和“ADD AADD A,#01H#01H”的結果。的結果。解:解:“INC AINC A”指令只將指令只將A A的內容加的內容加1 1,標志位沒有變化。,標志位沒有變化。而而“ADD AADD A,#01H#01H”指令不僅將指令不僅將A A的內容加的內容加1 1,還影響標志,還影響標志位變化。位變化。 該組指令的操作不影響該組指令的操作不影響PSWPSW。若原單元內容為。若原單元內
52、容為FFHFFH,加加1 1后溢出為后溢出為00H00H,也不影響,也不影響PSWPSW標志。標志。例例2 2: 若:(若:(R1R1)=30H =30H ,(,(30H30H)=11H=11H 求執(zhí)行下面指令后的結果。求執(zhí)行下面指令后的結果。INC R1 INC R1 ; (30H)=12H(30H)=12HINC R1 INC R1 ; (R1)=31H(R1)=31H解:結果為:(解:結果為:(30H30H)=12H=12H,(,(R1R1)=31H=31H。 不影響不影響PWS.PWS.7 7、 減減1 1指令指令(4(4條條) ) 該組指令的操作不影響該組指令的操作不影響PSWPSW
53、。Back匯編指令匯編指令機器碼機器碼操操 作作注注 釋釋DEC A00010100(A)-1AA中內容減中內容減1DEC Rn0001 1rrr(Rn)-1RnRn中內容減中內容減1DEC direct0001 0101direct(direct)-1directDirect單元中內容減單元中內容減1DEC Ri0001 011i(Ri)-1(Ri)Ri間接尋址所得片內間接尋址所得片內RAM單元中內容減單元中內容減18、 十進制調整指令(1條)該指令該指令調整累加器內容為調整累加器內容為BCDBCD碼碼。 這條指令跟在這條指令跟在ADDADD或或ADDCADDC指令后指令后, ,將相加后存放
54、在累加器中將相加后存放在累加器中的結果進行十進制調整的結果進行十進制調整, ,完成十進制加法運算功能。完成十進制加法運算功能。 必須注意,本指令不能簡單地把累加器必須注意,本指令不能簡單地把累加器A的的16進制數(shù)變換進制數(shù)變換成成BCD碼,也不能用于十進制減法的調整。碼,也不能用于十進制減法的調整。 匯編指令匯編指令機器碼機器碼操操 作作DA A1101 0100 若若 (A(A0-30-3)9)9或或AC=1AC=1,則,則(A(A0-30-3)+6A)+6A0-30-3 同時,若同時,若(A(A4-74-7)9)9或或CY=1CY=1,則,則(A(A4-74-7)+6A)+6A4-74-7
55、例例: : 設累加器設累加器A A內容為:內容為:01010110B01010110B(即為(即為5959的的BCDBCD碼),寄存器碼),寄存器R3R3的的內容為內容為01100111B01100111B(即(即6868的的BCDBCD碼),碼),CYCY內容為內容為1 1。求執(zhí)行下列指令后的。求執(zhí)行下列指令后的結果。結果。 ADDC AADDC A,R3R3;DA ADA A;解:先執(zhí)行解:先執(zhí)行ADDC AADDC A,R3R3; (A A):): 0101 1001 BCD0101 1001 BCD:5959 (R3R3):): 0110 1000 BCD0110 1000 BCD:6
56、868 (+ +)()(CYCY):): 0000 0001 BCD0000 0001 BCD:01 01 和和 : 1100 00101100 0010即(即(A A)=1100 0001=1100 0001且影響標志位且影響標志位 CY=0CY=0,AC=1AC=1; 再執(zhí)行再執(zhí)行DA ADA A; 因為因為A A中的高四位值為中的高四位值為1111,大于,大于9 9,低四位值為,低四位值為1717,ACAC有有進位,所以內部調整自動進行加進位,所以內部調整自動進行加66H66H的操作:的操作: 1 1 0 0 0 0 1 01 1 0 0 0 0 1 0 調整調整 + + 0 1 1 0
57、 0 1 1 0 0 1 1 0 0 1 1 0 1 0 0 1 0 1 0 0 1 BCD 1 0 0 1 0 1 0 0 1 BCD:129129即(即(A A)=0010 0100=29 =0010 0100=29 (BCDBCD),),CY=1CY=1;AC=1AC=1。Back3.3.3 3.3.3 邏輯操作指令邏輯操作指令 邏輯操作指令包括:與、或、異或、清零、求反邏輯操作指令包括:與、或、異或、清零、求反、移位等操作。該指令組全部操作數(shù)都是、移位等操作。該指令組全部操作數(shù)都是8位,共位,共24條條指令。指令。 1.1.簡單操作指令(簡單操作指令(2 2條)條) 2.2.移位指令(
58、移位指令(4 4條)條) 3 3. .邏輯邏輯“與與”指令(指令(6 6條)條) 4 4. 邏輯邏輯“或或”指令(指令(6 6條)條) 5 5. .邏輯邏輯“異或異或”指令(指令(6 6條)條)Back1 .1 .簡單操作指令(簡單操作指令(2 2條)條)(A) A0 A操操 作作累加器累加器A取反指令,取反指令,不影響標志位不影響標志位1111 0100CPL A累加器累加器A清清0指令,指令,只影響標志位只影響標志位P。1110 0100CLR A注注 釋釋機機 器器 碼碼匯編指令匯編指令2 .2 .移位指令(移位指令(4 4條)條)我們通常用我們通常用RLC A指令將累加器指令將累加器A
59、的內容做乘的內容做乘2運算。運算。 例如:無符號例如:無符號8位二進制數(shù)位二進制數(shù) (A)=10111101B=BDH,(,(CY)=0。 將(將(A)乘)乘2,執(zhí)行指令,執(zhí)行指令 “RLC A”后后結果:(結果:(A)=0111 1010B=7AH,(,(CY)=1,而,而17AH正是正是BDH的的2倍。倍。匯編指令匯編指令機器碼機器碼操操 作作注注 釋釋RL A0010 0011A中內容循環(huán)左移一位中內容循環(huán)左移一位RR A0000 0011A中內容循環(huán)右移一位中內容循環(huán)右移一位RLC A0011 0011A中內容連同進位位中內容連同進位位CY一起循環(huán)左移一位一起循環(huán)左移一位RRC A00
60、01 0011A中內容連同進位位中內容連同進位位CY一起循環(huán)右移一位一起循環(huán)右移一位a7a0a7a0a7a0CYa7 a0CY3. 3. 邏輯邏輯“與與”指令(指令(6 6條)條) 這組指令中前四條指令是將累加器這組指令中前四條指令是將累加器A A的內容和操作數(shù)所指出的內容按位進行邏的內容和操作數(shù)所指出的內容按位進行邏輯輯“與與”,結果存放在,結果存放在A A中。中。 后兩條指令是將直接地址單元中的內容和操作數(shù)所指出的單元的內容按位進行后兩條指令是將直接地址單元中的內容和操作數(shù)所指出的單元的內容按位進行邏輯邏輯“與與”,結果存入直接地址單元中。若直接地址正好是,結果存入直接地址單元中。若直接地
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年交接器項目可行性研究報告
- 2025至2030年中國盤式電機數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國氣動防爆氣扇數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國冰箱專用冰磚數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國丁胺黑藥數(shù)據(jù)監(jiān)測研究報告
- 2025年中國電腦彩繪指甲機市場調查研究報告
- 城市交通規(guī)劃與經(jīng)濟效應考核試卷
- 醫(yī)療設備租賃合同風險規(guī)避考核試卷
- 批發(fā)商品牌合作與代理協(xié)議考試考核試卷
- 2025-2030年復古風格皮質沙發(fā)套企業(yè)制定與實施新質生產(chǎn)力戰(zhàn)略研究報告
- 教育案例評選細則(3篇模板)
- 武強縣華浩數(shù)控設備科技有限公司年產(chǎn)9000把(只)提琴、吉他、薩克斯等樂器及80臺(套)數(shù)控雕刻設備項目環(huán)評報告
- 安全生產(chǎn)法律法規(guī)匯編(2024年4月)
- DB11∕T 882-2023 房屋建筑安全評估技術規(guī)程
- (2024年)剪映入門教程課件
- 快餐品牌全案推廣方案
- 華為員工股權激勵方案
- 衛(wèi)生院安全生產(chǎn)知識培訓課件
- 發(fā)生輸液反應時的應急預案及處理方法課件
- 中國旅游地理(高職)全套教學課件
- 門脈高壓性消化道出血的介入治療課件
評論
0/150
提交評論