第4章 尋址方式及指令系統(tǒng)(6)_第1頁(yè)
第4章 尋址方式及指令系統(tǒng)(6)_第2頁(yè)
第4章 尋址方式及指令系統(tǒng)(6)_第3頁(yè)
第4章 尋址方式及指令系統(tǒng)(6)_第4頁(yè)
第4章 尋址方式及指令系統(tǒng)(6)_第5頁(yè)
已閱讀5頁(yè),還剩140頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第第4章章 MCS-51 指令系統(tǒng)指令系統(tǒng)14.1 概述概述4.2 尋址方式尋址方式4.3 指令系統(tǒng)指令系統(tǒng)第第4章章 MCS-51的指令系統(tǒng)的指令系統(tǒng)第第4章章 MCS-51 指令系統(tǒng)指令系統(tǒng)24.1 概述概述0111 01000000 01014.1.1 計(jì)算機(jī)語(yǔ)言計(jì)算機(jī)語(yǔ)言MOV A,#05 A=5機(jī)器語(yǔ)言機(jī)器語(yǔ)言匯編語(yǔ)言匯編語(yǔ)言高級(jí)語(yǔ)言高級(jí)語(yǔ)言第第4章章 MCS-51 指令系統(tǒng)指令系統(tǒng)34.1 概述概述4.1.1 計(jì)算機(jī)語(yǔ)言計(jì)算機(jī)語(yǔ)言 (1)機(jī)器語(yǔ)言)機(jī)器語(yǔ)言:是用二進(jìn)制代碼表示的,能被計(jì)算機(jī)直接識(shí)是用二進(jìn)制代碼表示的,能被計(jì)算機(jī)直接識(shí)別和執(zhí)行的一種機(jī)器指令的集合。別和執(zhí)行的一種機(jī)器指

2、令的集合。 優(yōu)點(diǎn):優(yōu)點(diǎn):靈活、能被計(jì)算機(jī)直接執(zhí)行、速度快等。靈活、能被計(jì)算機(jī)直接執(zhí)行、速度快等。 缺點(diǎn):缺點(diǎn):直觀性差,很容易出錯(cuò),通用性很差。直觀性差,很容易出錯(cuò),通用性很差。(2)匯編語(yǔ)言:)匯編語(yǔ)言:是一種用助記符表示的仍然面向機(jī)器的計(jì)算是一種用助記符表示的仍然面向機(jī)器的計(jì)算機(jī)語(yǔ)言,又將其稱為符號(hào)語(yǔ)言。機(jī)語(yǔ)言,又將其稱為符號(hào)語(yǔ)言。 優(yōu)點(diǎn):優(yōu)點(diǎn):用符號(hào)代替了機(jī)器指令代碼,簡(jiǎn)化了編程過程,用符號(hào)代替了機(jī)器指令代碼,簡(jiǎn)化了編程過程,助記符與指令代碼一一對(duì)應(yīng),基本保留了機(jī)器語(yǔ)言的靈活性。助記符與指令代碼一一對(duì)應(yīng),基本保留了機(jī)器語(yǔ)言的靈活性。占用的內(nèi)存空間少,運(yùn)行速度快。占用的內(nèi)存空間少,運(yùn)行速度

3、快。 第第4章章 MCS-51 指令系統(tǒng)指令系統(tǒng)4 缺點(diǎn):缺點(diǎn): 必須對(duì)編寫的程序進(jìn)行加工和翻譯,才能變成能夠必須對(duì)編寫的程序進(jìn)行加工和翻譯,才能變成能夠被計(jì)算機(jī)識(shí)別和處理的二進(jìn)制代碼程序。仍然是面向機(jī)器的語(yǔ)言,被計(jì)算機(jī)識(shí)別和處理的二進(jìn)制代碼程序。仍然是面向機(jī)器的語(yǔ)言,使用起來還是比較繁瑣費(fèi)時(shí),通用性差。使用起來還是比較繁瑣費(fèi)時(shí),通用性差。用匯編語(yǔ)言等非機(jī)器語(yǔ)言書寫好的符號(hào)程序稱匯編語(yǔ)言源程序。用匯編語(yǔ)言等非機(jī)器語(yǔ)言書寫好的符號(hào)程序稱匯編語(yǔ)言源程序。(3)高級(jí)語(yǔ)言:)高級(jí)語(yǔ)言:與自然語(yǔ)言相近并為計(jì)算機(jī)所接受和執(zhí)行的計(jì)與自然語(yǔ)言相近并為計(jì)算機(jī)所接受和執(zhí)行的計(jì)算機(jī)語(yǔ)言稱為高級(jí)語(yǔ)言,它是面向用戶的語(yǔ)

4、言。算機(jī)語(yǔ)言稱為高級(jí)語(yǔ)言,它是面向用戶的語(yǔ)言。 優(yōu)點(diǎn):編程容易,不需要編程者對(duì)機(jī)器硬件有較好的了解。優(yōu)點(diǎn):編程容易,不需要編程者對(duì)機(jī)器硬件有較好的了解。 缺點(diǎn):執(zhí)行速度比機(jī)器語(yǔ)言和匯編語(yǔ)言慢。缺點(diǎn):執(zhí)行速度比機(jī)器語(yǔ)言和匯編語(yǔ)言慢。第第4章章 MCS-51 指令系統(tǒng)指令系統(tǒng)54.1.2 匯編語(yǔ)言程序語(yǔ)句格式匯編語(yǔ)言程序語(yǔ)句格式匯編指令由操作碼或偽操作碼、目的操作數(shù)和源操作數(shù)構(gòu)成,匯編指令由操作碼或偽操作碼、目的操作數(shù)和源操作數(shù)構(gòu)成,標(biāo)準(zhǔn)書寫格式如下:標(biāo)準(zhǔn)書寫格式如下: 標(biāo)號(hào)標(biāo)號(hào): : 操作碼操作碼/ /偽操作碼偽操作碼 操作數(shù)操作數(shù) ;注釋;注釋 標(biāo)號(hào)標(biāo)號(hào):又稱指令地址符號(hào)。它是用戶設(shè)定的符號(hào),

5、代表著該條:又稱指令地址符號(hào)。它是用戶設(shè)定的符號(hào),代表著該條指令所在的地址。指令所在的地址。標(biāo)號(hào)必須以字母開頭,其后跟標(biāo)號(hào)必須以字母開頭,其后跟18個(gè)字母或數(shù)字,并以個(gè)字母或數(shù)字,并以“:”結(jié)尾結(jié)尾。標(biāo)號(hào)不能為指令系統(tǒng)中的指令助記符、標(biāo)號(hào)不能為指令系統(tǒng)中的指令助記符、CPU的寄存器名以及偽指令的寄存器名以及偽指令等,且同一程序內(nèi)標(biāo)號(hào)必須互不相同。等,且同一程序內(nèi)標(biāo)號(hào)必須互不相同。 第第4章章 MCS-51 指令系統(tǒng)指令系統(tǒng)6操作碼操作碼/偽操作碼:偽操作碼:是用英文縮寫的指令助記符。是用英文縮寫的指令助記符。 操作碼:操作碼:規(guī)定了指令的操作功能,它所對(duì)應(yīng)的匯編語(yǔ)句稱規(guī)定了指令的操作功能,它所

6、對(duì)應(yīng)的匯編語(yǔ)句稱為指令性語(yǔ)句。為指令性語(yǔ)句。 如:如:MOV 50H,#10H 機(jī)器碼:機(jī)器碼:75H,50H,10H。 偽操作碼:偽操作碼:說明匯編程序如何完成匯編工作,它所對(duì)應(yīng)的說明匯編程序如何完成匯編工作,它所對(duì)應(yīng)的語(yǔ)句稱為指示性語(yǔ)句,在匯編后沒有目標(biāo)代碼。語(yǔ)句稱為指示性語(yǔ)句,在匯編后沒有目標(biāo)代碼。 如:如:ORG, END, EQU 等。等。 第第4章章 MCS-51 指令系統(tǒng)指令系統(tǒng)7操作數(shù):操作數(shù):指參加操作的數(shù)據(jù)或數(shù)據(jù)所在的地址。指參加操作的數(shù)據(jù)或數(shù)據(jù)所在的地址。在在MCS-51單片機(jī)中,操作數(shù)可以是單片機(jī)中,操作數(shù)可以是1、2、3個(gè),也可以沒有。個(gè),也可以沒有。例如,例如, M

7、OV A,#10H ;兩個(gè)操作數(shù)。兩個(gè)操作數(shù)。目的操作數(shù)目的操作數(shù)源操作數(shù)源操作數(shù) DECA ;一;一個(gè)操作數(shù)個(gè)操作數(shù) CJNEA,#10H, DELAY ;三;三個(gè)操作數(shù)個(gè)操作數(shù)規(guī)定:操作碼規(guī)定:操作碼/偽操作碼和操作數(shù)之間必須用偽操作碼和操作數(shù)之間必須用空格空格分開,操作分開,操作數(shù)與操作數(shù)之間必須用數(shù)與操作數(shù)之間必須用逗號(hào)逗號(hào)分開。分開。注釋:注釋:增加程序的可讀性,以增加程序的可讀性,以“;”號(hào)開頭。號(hào)開頭。 第第4章章 MCS-51 指令系統(tǒng)指令系統(tǒng)84.1.3 操作數(shù)的類型操作數(shù)的類型MOV A,#30 MOV B,A MOV R0, #40H 1) 立即數(shù)立即數(shù)2) 寄存器操作數(shù)

8、寄存器操作數(shù)3) 存儲(chǔ)器操作數(shù)存儲(chǔ)器操作數(shù)MOV A,20H第第4章章 MCS-51 指令系統(tǒng)指令系統(tǒng)94.1.4 MCS-51系列單片機(jī)指令格式及分類系列單片機(jī)指令格式及分類7 6 5 4 3 2 1 0操作碼操作碼如:如: DEC A 機(jī)器碼:機(jī)器碼:0001,0100B=14H。 (1)單字節(jié)指令:)單字節(jié)指令:兩種編碼格式兩種編碼格式 8位編碼全部是操作碼,操作數(shù)隱含在其中。位編碼全部是操作碼,操作數(shù)隱含在其中。第第4章章 MCS-51 指令系統(tǒng)指令系統(tǒng)10 8位編碼中含有操作碼和操作數(shù),該操作數(shù)通常是通用寄存器位編碼中含有操作碼和操作數(shù),該操作數(shù)通常是通用寄存器R0R7的編碼。的編碼

9、。 rrr=000111,分別表示,分別表示R0R7。 如:如:ADD A,R7機(jī)器碼為:機(jī)器碼為:0010,1111B=2FH。7 6 5 4 3 2 1 0操作碼操作碼rrr第第4章章 MCS-51 指令系統(tǒng)指令系統(tǒng)11(2)雙字節(jié)指令:)雙字節(jié)指令:由兩個(gè)字節(jié)組成,其中一個(gè)字節(jié)為操作碼,由兩個(gè)字節(jié)組成,其中一個(gè)字節(jié)為操作碼,另一個(gè)字節(jié)為參與操作的另一個(gè)字節(jié)為參與操作的數(shù)據(jù)數(shù)據(jù)data或數(shù)據(jù)存放的或數(shù)據(jù)存放的地址地址direct。如:如:ADD A,#60H機(jī)器碼:機(jī)器碼:24H,60H。 7 6 5 4 3 2 1 0操作碼操作碼操作數(shù)操作數(shù)第第4章章 MCS-51 指令系統(tǒng)指令系統(tǒng)11

10、2(3) 三字節(jié)指令:三字節(jié)指令:指令由三個(gè)字節(jié)組成,其中操作碼占一個(gè)字指令由三個(gè)字節(jié)組成,其中操作碼占一個(gè)字節(jié),操作數(shù)占兩個(gè)字節(jié)。操作數(shù)既可以是數(shù)據(jù),也可以是地址。節(jié),操作數(shù)占兩個(gè)字節(jié)。操作數(shù)既可以是數(shù)據(jù),也可以是地址。 如:如:MOV 40H,#20H機(jī)器碼:機(jī)器碼:75H,4 40H,2 20H。 7 6 5 4 3 2 1 0操作碼操作碼操作數(shù)操作數(shù)1操作數(shù)操作數(shù)2第第4章章 MCS-51 指令系統(tǒng)指令系統(tǒng)13以以(20H(20H10H)-1510H)-15為例說明單片機(jī)的指令格式以及匯編語(yǔ)言源程序?yàn)槔f明單片機(jī)的指令格式以及匯編語(yǔ)言源程序的格式。的格式。符號(hào)符號(hào)(偽偽)操作碼操作碼操

11、作數(shù)操作數(shù)機(jī)器碼機(jī)器碼(H)ORG 2000HABCEQU 20HMOVA,#10HE5,10ADDA,#ABC24,20SUBBA,#1594,0FNOP 00MOV40H,AF5,40END第第4章章 MCS-51 指令系統(tǒng)指令系統(tǒng)144.1.5 MCS-51匯編語(yǔ)言偽指令匯編語(yǔ)言偽指令 主要的主要的8個(gè):個(gè):ORG、END、DB、DW、DS、EQU、 DATA、BIT(1) ORG(Origin) 匯編起始地址命令匯編起始地址命令 功能:用于規(guī)定目標(biāo)程序的起始地址。功能:用于規(guī)定目標(biāo)程序的起始地址。 格式:格式: 標(biāo)號(hào):標(biāo)號(hào): ORG 地址地址 地址項(xiàng):地址項(xiàng):16位絕對(duì)地址,也可以用標(biāo)

12、號(hào)或表達(dá)式表示。位絕對(duì)地址,也可以用標(biāo)號(hào)或表達(dá)式表示。如果不用如果不用ORG規(guī)定,則匯編得到的目標(biāo)程序?qū)囊?guī)定,則匯編得到的目標(biāo)程序?qū)?000H開始。開始。第第4章章 MCS-51 指令系統(tǒng)指令系統(tǒng)115一個(gè)源程序中,可多次使用一個(gè)源程序中,可多次使用ORG指令以規(guī)定不同程序段指令以規(guī)定不同程序段的起始位置。地址應(yīng)從小到大順序排列,不允許重疊。的起始位置。地址應(yīng)從小到大順序排列,不允許重疊。例如:例如: ORG 4000HLJMP MAINORG 4200HMAIN:MOV A, 30H 第第4章章 MCS-51 指令系統(tǒng)指令系統(tǒng)1162) END(END of assembly)匯編終止命

13、令)匯編終止命令 功能:用于終止源程序的匯編工作。功能:用于終止源程序的匯編工作。 格式:格式: 標(biāo)號(hào):標(biāo)號(hào): END 表達(dá)式表達(dá)式注意:只有主程序模塊才有注意:只有主程序模塊才有“表達(dá)式表達(dá)式” 項(xiàng),且項(xiàng),且“表達(dá)式表達(dá)式”的值等于該程序模塊的入口地址。而其他程序模塊就沒有的值等于該程序模塊的入口地址。而其他程序模塊就沒有“表達(dá)式表達(dá)式”項(xiàng)。項(xiàng)。“標(biāo)號(hào):標(biāo)號(hào):”也是選擇項(xiàng)。也是選擇項(xiàng)。 一個(gè)源程序只能有一個(gè)一個(gè)源程序只能有一個(gè)END命令。命令。第第4章章 MCS-51 指令系統(tǒng)指令系統(tǒng)173) DB(Define Byte) 定義數(shù)據(jù)字節(jié)命令定義數(shù)據(jù)字節(jié)命令 功能:用于從指定的地址單元開始,

14、在程序存儲(chǔ)器中定義功能:用于從指定的地址單元開始,在程序存儲(chǔ)器中定義字節(jié)數(shù)據(jù)。字節(jié)數(shù)據(jù)。 例例4-1 分別從分別從ROM的的1000H和和1020H單元開始,按順序存放單元開始,按順序存放09中每個(gè)整數(shù)的平方值和字符串中每個(gè)整數(shù)的平方值和字符串“An apple!”。 ORG 1000HDATA1: DB 0, 1, 4, 9, 16, 25, 36, 49, 64, 81 ORG 1020HDATA2: DB “An apple!” END第第4章章 MCS-51 指令系統(tǒng)指令系統(tǒng)18單元地址單元地址ROM中的內(nèi)容中的內(nèi)容單元地址單元地址ROM中的內(nèi)容中的內(nèi)容0FFFH101FH1000H0

15、0H1020H41H(A)1001H01H1021H6EH(n)1002H04H1022H20H(空格空格)1003H09H1023H61H(a)1004H10H1024H70H(p)1005H19H1025H70H(p)1006H24H1026H6CH(l)1007H31H1027H65H(e)1008H40H1028H21H(!)1009H51H1029H第第4章章 MCS-51 指令系統(tǒng)指令系統(tǒng)19 (4) DW(Define Word) 定義數(shù)據(jù)字命令定義數(shù)據(jù)字命令 功能:用于從指定地址開始,在程序存儲(chǔ)器單元中定義功能:用于從指定地址開始,在程序存儲(chǔ)器單元中定義16位位的數(shù)據(jù)字。的數(shù)據(jù)

16、字。 格式格式: 標(biāo)號(hào):標(biāo)號(hào): DW 16位數(shù)表位數(shù)表 存放規(guī)則:高存放規(guī)則:高8位在前(低地址),低位在前(低地址),低8位在后(高地址)。位在后(高地址)。 ORG 1100HDATA2: DW 3478H, 10H, -1單元地址單元地址ROM中的內(nèi)容中的內(nèi)容10FFH1100H34H1101H78H1102H00H1103H10H1104H0FFH1105H0FFH1109H第第4章章 MCS-51 指令系統(tǒng)指令系統(tǒng)20 注意:注意: DB和和DW定義的數(shù)表,數(shù)的個(gè)數(shù)不得超過定義的數(shù)表,數(shù)的個(gè)數(shù)不得超過80個(gè);個(gè); 如果數(shù)據(jù)的數(shù)目較多時(shí),可使用多個(gè)定義命令;如果數(shù)據(jù)的數(shù)目較多時(shí),可使用

17、多個(gè)定義命令; 在在 MCS-51程序設(shè)計(jì)應(yīng)用中,常以程序設(shè)計(jì)應(yīng)用中,常以DB定義數(shù)據(jù),以定義數(shù)據(jù),以DW定義地址。定義地址。第第4章章 MCS-51 指令系統(tǒng)指令系統(tǒng)21(5) DS(Define Storage) 定義存儲(chǔ)區(qū)命令定義存儲(chǔ)區(qū)命令 功能:用于從指定地址開始,保留指定數(shù)目的字節(jié)單元為存功能:用于從指定地址開始,保留指定數(shù)目的字節(jié)單元為存儲(chǔ)區(qū),供程序運(yùn)行使用。匯編時(shí)對(duì)這些單元不賦值。儲(chǔ)區(qū),供程序運(yùn)行使用。匯編時(shí)對(duì)這些單元不賦值。 格式:格式: 標(biāo)號(hào):標(biāo)號(hào): DS 指定數(shù)目字節(jié)單元指定數(shù)目字節(jié)單元 例:例: ORG 8100H DS 08H注意:對(duì)注意:對(duì)MSC-51單片機(jī)來說,單片

18、機(jī)來說,DB、DW、DS命令只能對(duì)程序命令只能對(duì)程序存儲(chǔ)器使用,不能對(duì)數(shù)據(jù)存儲(chǔ)器使用。存儲(chǔ)器使用,不能對(duì)數(shù)據(jù)存儲(chǔ)器使用。第第4章章 MCS-51 指令系統(tǒng)指令系統(tǒng)22例如例如: X EQU 20Y EQU 30Z EQU X+YAA EQU R1(6) EQU(Equate) 賦值命令賦值命令 功能:用于給字符名稱賦予一個(gè)特定值。賦值以后,其值在功能:用于給字符名稱賦予一個(gè)特定值。賦值以后,其值在整個(gè)過程中有效。整個(gè)過程中有效。 格式:格式: 字符名稱字符名稱 EQU 賦值項(xiàng)賦值項(xiàng) “賦值項(xiàng)賦值項(xiàng)”:可以是常數(shù)、地址、標(biāo)號(hào)或表達(dá)式。:可以是常數(shù)、地址、標(biāo)號(hào)或表達(dá)式。 MOV A, #XMOV

19、A, X第第4章章 MCS-51 指令系統(tǒng)指令系統(tǒng)23(7) DATA 數(shù)據(jù)地址賦值命令數(shù)據(jù)地址賦值命令格式:格式:字符名稱字符名稱 DATA 賦值賦值項(xiàng)項(xiàng)功能:與功能:與EQU基本類似,但有以下差別。基本類似,但有以下差別。* EQU定義的字符名稱必須先定義后使用定義的字符名稱必須先定義后使用,而,而DATA定義定義的字符名可以先使用后定義。的字符名可以先使用后定義。* 用用EQU可以把一個(gè)匯編符號(hào)賦給字符名稱可以把一個(gè)匯編符號(hào)賦給字符名稱,如上例中的,如上例中的R1,而,而DATA只能把只能把數(shù)據(jù)數(shù)據(jù)賦給字符名。賦給字符名。第第4章章 MCS-51 指令系統(tǒng)指令系統(tǒng)24(8)BIT 位定義

20、命令位定義命令 功能:功能: 用于給字符名稱賦以位地址。用于給字符名稱賦以位地址。 格式:格式: 字符名稱字符名稱 BIT 位地址位地址 例如:例如: AAA BIT 40H ;絕對(duì)地址;絕對(duì)地址BBB BIT P1.0 ;符號(hào)地址;符號(hào)地址例如例如: MOV Cy, AAA第第4章章 MCS-51 指令系統(tǒng)指令系統(tǒng)125小結(jié)小結(jié) MCS-51匯編語(yǔ)言偽指令匯編語(yǔ)言偽指令 ORG 匯編起始地址命令匯編起始地址命令END 匯編終止命令匯編終止命令DB(Define Byte) 定義數(shù)據(jù)字節(jié)命令定義數(shù)據(jù)字節(jié)命令DW(Define Word)定義數(shù)據(jù)字命令)定義數(shù)據(jù)字命令DS(Define Stor

21、age)定義存儲(chǔ)區(qū)命令EQU(Equate) 賦值命令賦值命令DATA 數(shù)據(jù)地址賦值命令BIT 位定義命令第第4章章 MCS-51 指令系統(tǒng)指令系統(tǒng)264.2 尋址方式尋址方式尋址方式:尋找操作數(shù)所在地址的方法。尋址方式:尋找操作數(shù)所在地址的方法。7種尋址方式:種尋址方式: 立即尋址立即尋址寄存器尋址寄存器尋址直接尋址直接尋址寄存器間接尋址寄存器間接尋址基址加變址尋址基址加變址尋址相對(duì)尋址相對(duì)尋址位尋址。位尋址。第第4章章 MCS-51 指令系統(tǒng)指令系統(tǒng)1274.2.1 符號(hào)注釋符號(hào)注釋l Rn (n = 07)l Ri (i = 0,1)l l #data:8位立即數(shù)。位立即數(shù)。l l #d

22、atal6:16位立即數(shù)。位立即數(shù)。l l direct:8位片內(nèi)位片內(nèi)RAM單元單元(包括包括SFR)的直接地址。的直接地址。l l addr11:11位目的地址。位目的地址。l l addr16:16位目的地址。位目的地址。l l :將箭頭兩邊的數(shù)據(jù)進(jìn)行交換。:將箭頭兩邊的數(shù)據(jù)進(jìn)行交換。第第4章章 MCS-51 指令系統(tǒng)指令系統(tǒng)128l l rel:以補(bǔ)碼形式出現(xiàn)的:以補(bǔ)碼形式出現(xiàn)的8位相對(duì)地址偏移量位相對(duì)地址偏移量,-128+127.l l bit:直接尋址位的地址。:直接尋址位的地址。l l :間接尋址方式中,表示間址寄存器的前綴標(biāo)志。:間接尋址方式中,表示間址寄存器的前綴標(biāo)志。l l

23、 /:表示對(duì)該位狀態(tài)取反。:表示對(duì)該位狀態(tài)取反。l l (X):表示直接地址:表示直接地址X或寄存器或寄存器X中的內(nèi)容。中的內(nèi)容。l l (X):表示寄存器:表示寄存器X中的內(nèi)容為單元地址,以該單元的值中的內(nèi)容為單元地址,以該單元的值為操作數(shù)。為操作數(shù)。l l :將箭頭右邊的內(nèi)容送給箭頭左邊的單元或寄存器。:將箭頭右邊的內(nèi)容送給箭頭左邊的單元或寄存器。第第4章章 MCS-51 指令系統(tǒng)指令系統(tǒng)294.2 尋址方式尋址方式尋址方式:尋找操作數(shù)所在地址的方法。尋址方式:尋找操作數(shù)所在地址的方法。7種尋址方式:種尋址方式: 立即尋址立即尋址寄存器尋址寄存器尋址直接尋址直接尋址寄存器間接尋址寄存器間接

24、尋址基址加變址尋址基址加變址尋址相對(duì)尋址相對(duì)尋址位尋址。位尋址。第第4章章 MCS-51 指令系統(tǒng)指令系統(tǒng)1304.2.2 尋址方式尋址方式(1)立即尋址)立即尋址 指令中直接給出操作數(shù)的尋址方式。指令中直接給出操作數(shù)的尋址方式。 立即數(shù):立即數(shù):8位或位或16位。位。例如:例如:MOV A,#20H ;A20H MOV 20H,#20H ;20H20H MOV DPTR, #2000H ; DPTR 2000H 第第4章章 MCS-51 指令系統(tǒng)指令系統(tǒng)131(2) 直接尋址直接尋址指令中直接給出操作數(shù)所在地址的尋址方式。指令中直接給出操作數(shù)所在地址的尋址方式。操所數(shù)所在區(qū)域:操所數(shù)所在區(qū)域

25、:(1)內(nèi)部)內(nèi)部RAM的低的低128單元;單元;(2)特殊功能寄存器。)特殊功能寄存器。例如:例如: MOV A,20H ;A(20H) MOV 30H,20H ;30H(20H)第第4章章 MCS-51 指令系統(tǒng)指令系統(tǒng)132(3) 寄存器尋址寄存器尋址以通用寄存器的內(nèi)容為操作數(shù)的尋址方式。以通用寄存器的內(nèi)容為操作數(shù)的尋址方式。例如:例如:MOV 20H,A ; 20H ( A ) MUL AB;BA(A)(B) MOV B,R0 ;B(R0) 可用的寄存器:通用寄存器可用的寄存器:通用寄存器R0R7和若干和若干SFR,例如,例如,A,B和和DPTR。第第4章章 MCS-51 指令系統(tǒng)指令

26、系統(tǒng)133直接尋址和寄存器尋址的差別:直接尋址和寄存器尋址的差別: 直接尋址直接尋址是以操作數(shù)所在的是以操作數(shù)所在的單元地址單元地址(占一個(gè)字節(jié)占一個(gè)字節(jié))出現(xiàn)在指令碼中出現(xiàn)在指令碼中; 例如:例如:MOV A,70H ;機(jī)器碼;機(jī)器碼 E5H,70H 源操作數(shù)是直接尋址,目的操作數(shù)為寄存器尋址源操作數(shù)是直接尋址,目的操作數(shù)為寄存器尋址 寄存器尋址寄存器尋址是寄存器編碼出現(xiàn)在指令碼中。是寄存器編碼出現(xiàn)在指令碼中。 例如:例如:MOV A,R0 ;機(jī)器碼;機(jī)器碼 E8H 源操作數(shù)和目的操作數(shù)都是寄存器尋址源操作數(shù)和目的操作數(shù)都是寄存器尋址p 操作碼和寄存器編碼合用一個(gè)字節(jié),因此寄存器尋址的指令機(jī)

27、器碼操作碼和寄存器編碼合用一個(gè)字節(jié),因此寄存器尋址的指令機(jī)器碼短,執(zhí)行快。短,執(zhí)行快。p 除了除了通用寄存器通用寄存器R0R7 ,和特殊功能寄存器,和特殊功能寄存器 A,B和和DPTR外的其它特外的其它特殊功能寄存器一律屬于殊功能寄存器一律屬于直接尋址直接尋址。 第第4章章 MCS-51 指令系統(tǒng)指令系統(tǒng)134(4) 寄存器間接尋址寄存器間接尋址 MOV A,R0;A(R0)若若(R0) = 34H,(34H) = 56H 以寄存器中的內(nèi)容為以寄存器中的內(nèi)容為地址地址,以該地址中的內(nèi)容為操作數(shù),以該地址中的內(nèi)容為操作數(shù)的尋的尋址方式稱為寄存器間接尋址。址方式稱為寄存器間接尋址??捎玫目捎玫募拇?/p>

28、器寄存器:R0、R1和和DPTR。第第4章章 MCS-51 指令系統(tǒng)指令系統(tǒng)135寄存器間接尋址的尋址范圍:寄存器間接尋址的尋址范圍:片內(nèi)片內(nèi)RAM和片外和片外RAM。當(dāng)尋址片內(nèi)當(dāng)尋址片內(nèi)RAM時(shí)(或片外時(shí)(或片外RAM的低的低256字節(jié)),使用字節(jié)),使用R0或或R1作間址寄存器,其通用形式為作間址寄存器,其通用形式為 Ri(i=0或或1) 。當(dāng)尋址片外當(dāng)尋址片外RAM時(shí),使用時(shí),使用DPTR作間址寄存器,其通用形作間址寄存器,其通用形式為式為 DPTR。MOVA,R0;A(R0),MOVR1,A; (R1)AMOVXA,R0;A(R0)MOVX A,DPTR;A(DPTR)第第4章章 MC

29、S-51 指令系統(tǒng)指令系統(tǒng)136(5) 變址尋址變址尋址(或基址加變址尋址) 以以DPTR或或PC作基址寄存器,累加器作基址寄存器,累加器A作變址寄存器,并作變址寄存器,并以兩者內(nèi)容相加形成的以兩者內(nèi)容相加形成的16位地址作為操作數(shù)地址的尋址方式稱位地址作為操作數(shù)地址的尋址方式稱為變址尋址,或基址加變址尋址方式。為變址尋址,或基址加變址尋址方式。 尋址空間:程序存儲(chǔ)器尋址空間:程序存儲(chǔ)器ROMROM。 指令指令:MOVC A,A+PC MOVC A,A+DPTR JMP ADPTR第第4章章 MCS-51 指令系統(tǒng)指令系統(tǒng)37圖圖4-8 指令指令MOVC A,A+DPTR的操作示意圖的操作示意

30、圖例如:例如: ORG 0200HMOVC A,A+DPTR;A(A)+(DPTR),機(jī)器碼為,機(jī)器碼為93H 若(若(DPTRDPTR)=1234H=1234H,(,(A A)=10H=10H第第4章章 MCS-51 指令系統(tǒng)指令系統(tǒng)138變址尋址方式只能對(duì)變址尋址方式只能對(duì)程序存儲(chǔ)器程序存儲(chǔ)器進(jìn)行尋址。進(jìn)行尋址。(2) 變址尋址的指令只有三條變址尋址的指令只有三條 MOVC A,ADPTR MOVC A,APC JMP ADPTR 其中前兩條是程序存儲(chǔ)器讀指令,后一條是無(wú)條件轉(zhuǎn)移指令。其中前兩條是程序存儲(chǔ)器讀指令,后一條是無(wú)條件轉(zhuǎn)移指令。(3) 盡管變址尋址方式操作較為復(fù)雜,但變址尋址指令

31、都是盡管變址尋址方式操作較為復(fù)雜,但變址尋址指令都是單字單字節(jié)指令節(jié)指令。 說明:說明:第第4章章 MCS-51 指令系統(tǒng)指令系統(tǒng)39(6) 相對(duì)尋址相對(duì)尋址 尋址方式主要用于通過修改尋址方式主要用于通過修改PCPC值而實(shí)現(xiàn)程序的分支轉(zhuǎn)移。值而實(shí)現(xiàn)程序的分支轉(zhuǎn)移。 例如:例如: ORG 2000HORG 2000HJC 30H JC 30H ;雙字節(jié)指令;雙字節(jié)指令 relrel為一字節(jié)補(bǔ)碼數(shù),范圍為為一字節(jié)補(bǔ)碼數(shù),范圍為128128127127。在在匯編語(yǔ)言匯編語(yǔ)言中,相對(duì)轉(zhuǎn)移指令后給出的地址即為中,相對(duì)轉(zhuǎn)移指令后給出的地址即為程序的目程序的目標(biāo)地址標(biāo)地址. 第第4章章 MCS-51 指令系

32、統(tǒng)指令系統(tǒng)40注意注意: 在在機(jī)器語(yǔ)言機(jī)器語(yǔ)言中相對(duì)轉(zhuǎn)移指令指令代碼后跟的不是匯編中相對(duì)轉(zhuǎn)移指令指令代碼后跟的不是匯編語(yǔ)言中給出的語(yǔ)言中給出的目標(biāo)地址目標(biāo)地址,而是,而是該目標(biāo)地址和程序計(jì)數(shù)器該目標(biāo)地址和程序計(jì)數(shù)器PC的當(dāng)前值(指跳轉(zhuǎn)指令的下條指令的地址)之間的相對(duì)偏的當(dāng)前值(指跳轉(zhuǎn)指令的下條指令的地址)之間的相對(duì)偏差差rel。 第第4章章 MCS-51 指令系統(tǒng)指令系統(tǒng)141 ORG 0000H(0H) MOV A, #89H; 2字節(jié)指令字節(jié)指令, 機(jī)器代碼為機(jī)器代碼為74H, 89H(2H) ADDA, #78H; 2字節(jié)指令字節(jié)指令, 機(jī)器代碼為機(jī)器代碼為24H, 78H(4H) JC

33、 30H ; 2字節(jié)指令字節(jié)指令, 機(jī)器代碼為機(jī)器代碼為40H, 2AH(6H) NOP; 1字節(jié)指令字節(jié)指令, 機(jī)器代碼為機(jī)器代碼為00HORG 30H(30H) ADDA, #30H; 2字節(jié)指令字節(jié)指令, 機(jī)器代碼為機(jī)器代碼為24H, 30H(32H) NOP; 1字節(jié)指令字節(jié)指令, 機(jī)器代碼為機(jī)器代碼為00H END第第4章章 MCS-51 指令系統(tǒng)指令系統(tǒng)142圖圖4-9 相對(duì)尋址操作示意圖相對(duì)尋址操作示意圖第第4章章 MCS-51 指令系統(tǒng)指令系統(tǒng)43在編程中,經(jīng)常用標(biāo)號(hào)代替目標(biāo)地址。在編程中,經(jīng)常用標(biāo)號(hào)代替目標(biāo)地址。 ORG 0000H MOV A, #89H ADD A, #7

34、8H JC LOOP NOP ORG 30HLOOP:ADD A, #30H NOP END第第4章章 MCS-51 指令系統(tǒng)指令系統(tǒng)144(7) 位尋址方式位尋址方式在進(jìn)行位操作時(shí),借助于進(jìn)位位在進(jìn)行位操作時(shí),借助于進(jìn)位位C作為操作累加器。作為操作累加器。例如:例如: MOV 20H,C ;20H(CY),),20H是位尋址的位地址是位尋址的位地址 CLR C; 第第4章章 MCS-51 指令系統(tǒng)指令系統(tǒng)145(1) 位名稱表示方法:位名稱表示方法:CLR CY(2) 位地址表示法:位地址表示法:CLR 0D7H(3) 單元地址加位的表示方法:?jiǎn)卧刂芳游坏谋硎痉椒ǎ篊LR 0D0H.7 (

35、4) 專用寄存器符號(hào)加位的表示方法:專用寄存器符號(hào)加位的表示方法:CLR PSW.7D7D6D5D4D3D2D1D0CYACF0RS1RS0OVP對(duì)于特殊功能寄存器中具有位地址和位名稱的位,可以采用對(duì)于特殊功能寄存器中具有位地址和位名稱的位,可以采用以下四種方法表示以下四種方法表示.PSW0D0HSFR地址地址SFR名稱名稱第第4章章 MCS-51 指令系統(tǒng)指令系統(tǒng)146區(qū)別區(qū)別: MOV C, 20H MOV A, 20H說明說明: 源操作數(shù)和目的操作數(shù)各有自己的尋址方式。源操作數(shù)和目的操作數(shù)各有自己的尋址方式。MOV 50H, R1源操作數(shù):寄存器尋址方式,源操作數(shù):寄存器尋址方式,目的操

36、作數(shù):直接尋址方式,目的操作數(shù):直接尋址方式,第第4章章 MCS-51 指令系統(tǒng)指令系統(tǒng)47小結(jié):小結(jié): 操作數(shù)尋址方式和有關(guān)的尋址空間操作數(shù)尋址方式和有關(guān)的尋址空間尋尋 址址 方方 式式尋尋 址址 空空 間間立即數(shù)尋址立即數(shù)尋址ROM(匯編后數(shù)據(jù)直接存放在匯編后數(shù)據(jù)直接存放在ROM中中)直接尋址直接尋址片內(nèi)低片內(nèi)低128字節(jié)和字節(jié)和SFR寄存器尋址寄存器尋址通用寄存器通用寄存器R0R7某些某些SFR,如,如A、B(乘除指令中乘除指令中)、DPTR寄存器間接尋址寄存器間接尋址片內(nèi)片內(nèi)RAM低低128B Ri片外片外RAM(Ri,DPTR)變址尋址變址尋址(基址基址+變址尋址變址尋址)ROM:

37、(A + PC,A + DPTR)相對(duì)尋址相對(duì)尋址ROM : 256B范圍范圍位尋址位尋址片內(nèi)片內(nèi)RAM 20H2FH單元的位單元的位(128位位)部分部分SFR中的可尋址位中的可尋址位第第4章章 MCS-51 指令系統(tǒng)指令系統(tǒng)48 4.3 指令系統(tǒng)指令系統(tǒng)五大類:五大類:數(shù)據(jù)傳送類指令、數(shù)據(jù)傳送類指令、算術(shù)運(yùn)算類指令、算術(shù)運(yùn)算類指令、邏輯運(yùn)算及移位類指令、邏輯運(yùn)算及移位類指令、控制轉(zhuǎn)移類指令控制轉(zhuǎn)移類指令位操作類指令位操作類指令。 共計(jì)共計(jì)111條指令條指令第第4章章 MCS-51 指令系統(tǒng)指令系統(tǒng)149 4.3.1 數(shù)據(jù)傳送類指令數(shù)據(jù)傳送類指令指令功能:指令功能:一般是把源操作數(shù)傳輸?shù)侥康?/p>

38、操作數(shù),指令一般是把源操作數(shù)傳輸?shù)侥康牟僮鲾?shù),指令執(zhí)行后,源操作數(shù)不變,而目的操作數(shù)修改為源操作數(shù)。執(zhí)行后,源操作數(shù)不變,而目的操作數(shù)修改為源操作數(shù)。 第第4章章 MCS-51 指令系統(tǒng)指令系統(tǒng)1501) 內(nèi)部?jī)?nèi)部 RAM數(shù)據(jù)傳送指令組數(shù)據(jù)傳送指令組 單片機(jī)芯片內(nèi)部數(shù)據(jù)傳送范圍:?jiǎn)纹瑱C(jī)芯片內(nèi)部數(shù)據(jù)傳送范圍:寄存器、累加器、專用寄存器、累加器、專用寄存器以及寄存器以及RAM單元。單元。分類介紹:分類介紹:(1) 以累加器以累加器A為目的操作數(shù)的指令:為目的操作數(shù)的指令:MOV A,Rn ;A(Rn),), RnR0R7MOV A,direct ;A(direct)MOV A,Ri ;A(Ri),

39、), RiR0,R1MOV A,#data ;A data功能:將源操作數(shù)所指定的內(nèi)容送入累加器功能:將源操作數(shù)所指定的內(nèi)容送入累加器A。第第4章章 MCS-51 指令系統(tǒng)指令系統(tǒng)51(2) 以通用寄存器以通用寄存器Rn為目的操作數(shù)的指令:為目的操作數(shù)的指令:MOV Rn,A ;Rn(A),), RnR0R7MOV Rn,direct ;Rn(direct)MOV Rn,#data ;Rndata功能:將源操作數(shù)所指定的內(nèi)容送到當(dāng)前工作寄存器組功能:將源操作數(shù)所指定的內(nèi)容送到當(dāng)前工作寄存器組R0R7中的某個(gè)寄存器中。中的某個(gè)寄存器中。第第4章章 MCS-51 指令系統(tǒng)指令系統(tǒng)52例如:例如:

40、(A)78H,(,(R5)47H,(,(70H)0F2H, 執(zhí)行指令:執(zhí)行指令:MOV R5,A ;R5(A),), (R5)78HMOV R5,70H;R5(70H),(),(R5)0F2HMOV R5,#0A3H ;R50A3H, (R5)0A3H注意:注意: 8051指令系統(tǒng)中無(wú)指令系統(tǒng)中無(wú) MOV Rn,Rn 第第4章章 MCS-51 指令系統(tǒng)指令系統(tǒng)53(3) 以直接地址為目的操作數(shù)的指令:以直接地址為目的操作數(shù)的指令:MOV direct,A;direct(A)MOV direct,Rn;direct(Rn)MOV direct,direct;direct(direct)MOV d

41、irect,Ri;direct(Ri)MOV direct, #data;direct data功能:將源操作數(shù)所指定的內(nèi)容送入由直接地址功能:將源操作數(shù)所指定的內(nèi)容送入由直接地址direct所指定所指定的片內(nèi)存儲(chǔ)器中。的片內(nèi)存儲(chǔ)器中。第第4章章 MCS-51 指令系統(tǒng)指令系統(tǒng)154(4) 以間接地址為目的地址操作數(shù)的指令:以間接地址為目的地址操作數(shù)的指令:MOV Ri,A;(;(Ri)(A)MOV Ri,direct;(;(Ri)(direct)MOV Ri,#data;(;(Ri)data功能:將源操作數(shù)所指定的內(nèi)容送入以功能:將源操作數(shù)所指定的內(nèi)容送入以R0或或R1為地址指針為地址指針的

42、片內(nèi)存儲(chǔ)器單元中。的片內(nèi)存儲(chǔ)器單元中。第第4章章 MCS-51 指令系統(tǒng)指令系統(tǒng)155(5)十六位數(shù)據(jù)傳送指令:)十六位數(shù)據(jù)傳送指令:MOV DPTR, #data16 ;DPHdataH, DPLdataL 唯一的唯一的16位立即數(shù)傳送指令。位立即數(shù)傳送指令。第第4章章 MCS-51 指令系統(tǒng)指令系統(tǒng)156RidirectRnACC#data傳送指令在片內(nèi)的操作功能第第4章章 MCS-51 指令系統(tǒng)指令系統(tǒng)572) 外部外部RAM數(shù)據(jù)傳送指令組數(shù)據(jù)傳送指令組尋址方式:尋址方式:寄存器間接尋址方式寄存器間接尋址方式,使用使用DPTR、Ri作間址寄作間址寄存器。存器。(1) 使用使用DPTR進(jìn)行

43、間接尋址進(jìn)行間接尋址MOVX A,DPTR ;A(DPTR)MOVX DPTR,A ;(;(DPTR)(A)指令的尋址范圍:指令的尋址范圍:64KB。指令執(zhí)行時(shí),指令執(zhí)行時(shí),DPH中存放的高中存放的高8位地址送位地址送P2口輸出,口輸出,DPL中存放的低中存放的低8位地址由位地址由P0口分時(shí)輸出??诜謺r(shí)輸出。第第4章章 MCS-51 指令系統(tǒng)指令系統(tǒng)158例例4-2 編寫匯編語(yǔ)言源程序,將外部編寫匯編語(yǔ)言源程序,將外部RAM 1000H單元的內(nèi)容清單元的內(nèi)容清零。零。 ORG 0 ENDMOVXDPTR,A ;寫入;寫入0給給1000H單元單元 MOVA,#0START: MOV DPTR,#

44、1000H;(;(DPTR)=1000H第第4章章 MCS-51 指令系統(tǒng)指令系統(tǒng)159(2) 使用使用Ri進(jìn)行間接尋址進(jìn)行間接尋址 MOVX A,Ri;A(Ri)MOVX Ri,A ;(;(Ri)(A) i=0或或1。指令的尋址范圍:指令的尋址范圍:只限于外部只限于外部RAM的低的低256單元。單元。此時(shí):(此時(shí):(Ri)的值送)的值送P0,默認(rèn)的高,默認(rèn)的高8位地址位地址P2為為0。第第4章章 MCS-51 指令系統(tǒng)指令系統(tǒng)160對(duì)外部對(duì)外部RAM數(shù)據(jù)傳送指令作如下數(shù)據(jù)傳送指令作如下說明說明: 外部數(shù)據(jù)存儲(chǔ)器數(shù)據(jù)傳送指令就是外部外部數(shù)據(jù)存儲(chǔ)器數(shù)據(jù)傳送指令就是外部RAM的讀寫指令。的讀寫指令

45、。 外部外部RAM數(shù)據(jù)傳送指令與內(nèi)部數(shù)據(jù)傳送指令與內(nèi)部RAM數(shù)據(jù)傳送指令的助記數(shù)據(jù)傳送指令的助記符不同。符不同。內(nèi)部?jī)?nèi)部RAM:MOV,外部外部RAM:MOVX。 增加的增加的“X”表示外部之意表示外部之意(External) 外部外部RAM傳送,只能通過累加器傳送,只能通過累加器A進(jìn)行。進(jìn)行。 第第4章章 MCS-51 指令系統(tǒng)指令系統(tǒng)161A寄存器寄存器寄存器間接尋址寄存器間接尋址R1、R0(外部(外部RAM 低低256B)寄存器間接尋址寄存器間接尋址DPTR(外部(外部RAM 64KB)外部數(shù)據(jù)存儲(chǔ)器傳送操作示意圖外部數(shù)據(jù)存儲(chǔ)器傳送操作示意圖第第4章章 MCS-51 指令系統(tǒng)指令系統(tǒng)16

46、23) 程序存儲(chǔ)器數(shù)據(jù)傳送指令組(查表指令):程序存儲(chǔ)器數(shù)據(jù)傳送指令組(查表指令):ROM: 內(nèi)部?jī)?nèi)部ROM, 外部外部ROM。 對(duì)對(duì)ROM的操作:只能讀,不能寫。的操作:只能讀,不能寫。 說明說明: 累加器累加器A內(nèi)內(nèi)8位無(wú)符號(hào)數(shù)。位無(wú)符號(hào)數(shù)。 1字節(jié)指令。字節(jié)指令。僅有兩條僅有兩條 : MOVC A,A+PC ;PC(PC)+1,A(A)+(PC) MOVC A,A+DPTR ;A(A)+(DPTR)第第4章章 MCS-51 指令系統(tǒng)指令系統(tǒng)163作用:常用于查表操作,又稱作用:常用于查表操作,又稱查表專用指令查表專用指令。二者的區(qū)別:二者的區(qū)別:MOVC A,A+PC;PC的查表范圍在的

47、查表范圍在256B內(nèi),內(nèi), 稱近程查表。稱近程查表。MOVC A,A+DPTR ;DPTR可指向可指向64KB空間,空間, 稱遠(yuǎn)程查表稱遠(yuǎn)程查表。第第4章章 MCS-51 指令系統(tǒng)指令系統(tǒng)164例例4-3 在外部在外部ROM從從3000H單元開始存放了一個(gè)字節(jié)型數(shù)組,該單元開始存放了一個(gè)字節(jié)型數(shù)組,該數(shù)組中的數(shù)據(jù)依次是數(shù)組中的數(shù)據(jù)依次是09之間整數(shù)的平方,編程采用查表的方之間整數(shù)的平方,編程采用查表的方法求出法求出5的平方的平方。 3009H40H3008H31H3007H24H3006H19H3005H10H3004H09H3003H04H3002H01H3001H00H3000H2FFFH

48、ROM中的內(nèi)容中的內(nèi)容單元地址單元地址51H第第4章章 MCS-51 指令系統(tǒng)指令系統(tǒng)165ORG 0000HMOV DPTR,#3000H;DPTR指向表頭指向表頭MOV A,#5 MOVC A,A+DPTR;查表并將結(jié)果存于;查表并將結(jié)果存于A中中MOV 50H,A ;存平方值;存平方值NOP ORG 3000HDB 0,1,4,9,16,25,36,49,64,81END第第4章章 MCS-51 指令系統(tǒng)指令系統(tǒng)166ORG 0000HMOV DPTR,#TABLE;DPTR指向表頭指向表頭MOV A,#5 MOVC A,A+DPTRMOV 50H,A NOPTABLE: DB 0,1,

49、4,9,16,25,36,49,64,81END第第4章章 MCS-51 指令系統(tǒng)指令系統(tǒng)167例例4-4: 以近程查表指令實(shí)現(xiàn)例以近程查表指令實(shí)現(xiàn)例4-3的功能。的功能。 MOVCA,A+PC ;機(jī)器碼;機(jī)器碼83HSTART: MOV A, #5;機(jī)器碼為;機(jī)器碼為7405H ORG 0 ENDTABLE:DB 0,1,4,9,16,25,36,49,64,81單元地址單元地址ROM中的內(nèi)容中的內(nèi)容00H74H01H05H02H83H03H0H04H1H05H4H06H9H07H10H08H16H09H24H0AH31H200BH40H200CH51H200DH圖圖4-10 數(shù)據(jù)存放示意圖

50、數(shù)據(jù)存放示意圖第第4章章 MCS-51 指令系統(tǒng)指令系統(tǒng)168 ORG 0 START: MOV A, #5;機(jī)器碼為;機(jī)器碼為7405H MOVCA,A+PC ;機(jī)器碼;機(jī)器碼83H NOP ;1字節(jié)字節(jié)TABLE:DB 0,1,4,9,16,25,36,49,64,81 END 如果加一個(gè)如果加一個(gè)NOP,程序該如何變化?,程序該如何變化?INC A第第4章章 MCS-51 指令系統(tǒng)指令系統(tǒng)單片機(jī)內(nèi)部空間的數(shù)據(jù)傳送指令(單片機(jī)內(nèi)部空間的數(shù)據(jù)傳送指令(16條)條)RidirectRnACC#dataDPTR第第4章章 MCS-51 指令系統(tǒng)指令系統(tǒng)70單片機(jī)對(duì)外部數(shù)據(jù)存儲(chǔ)器的讀、寫指令單片機(jī)

51、對(duì)外部數(shù)據(jù)存儲(chǔ)器的讀、寫指令MOVX(4條)條)單片機(jī)訪問程序空間指令(查表指令)單片機(jī)訪問程序空間指令(查表指令) (2條)條)第第4章章 MCS-51 指令系統(tǒng)指令系統(tǒng)1714)數(shù)據(jù)交換指令組)數(shù)據(jù)交換指令組 數(shù)據(jù)交換主要是在數(shù)據(jù)交換主要是在內(nèi)部?jī)?nèi)部RAM單元單元與與累加器累加器A之間進(jìn)行。之間進(jìn)行。有有整字節(jié)整字節(jié)和和半字節(jié)半字節(jié)交換指令兩種。交換指令兩種。(1) 整字節(jié)交換指令整字節(jié)交換指令XCHA,Rn ;(;(A)(Rn)XCH A,direct;(;(A)(direct)XCH A,Ri;(;(A)(Ri)第第4章章 MCS-51 指令系統(tǒng)指令系統(tǒng)172(2)低半字節(jié)交換指令:)

52、低半字節(jié)交換指令:XCHDA,Ri ;(;(A)30 (Ri)30(3)累加器高低半字節(jié)交換指令:)累加器高低半字節(jié)交換指令:SWAP A ;(;(A)30 (A)74例如:例如:若(若(R0)5BH,(,(5BH)6 DH,(,(A)0 0H,指令:指令: XCHD A,R0結(jié)果:結(jié)果:(A)0DH, (5BH)60H。第第4章章 MCS-51 指令系統(tǒng)指令系統(tǒng)1735)堆棧操作指令組:)堆棧操作指令組:進(jìn)棧、出棧兩種操作。進(jìn)棧、出棧兩種操作。 PUSH direct ;SP(SP)+1,(,(SP)(direct)POP direct ;direct(SP),SP(SP)1注意:注意:使用

53、堆棧前,需設(shè)定使用堆棧前,需設(shè)定SP的初始值。的初始值。尋址方式:尋址方式: 以以SP為間址寄存器的間接尋址方式為間址寄存器的間接尋址方式。第第4章章 MCS-51 指令系統(tǒng)指令系統(tǒng)74例例: 已知片內(nèi)已知片內(nèi)RAM 40H單元中存放數(shù)據(jù)為單元中存放數(shù)據(jù)為80H,設(shè)堆棧指針為,設(shè)堆棧指針為30H,把此,把此數(shù)值壓入堆棧,然后再?gòu)棾龅綌?shù)值壓入堆棧,然后再?gòu)棾龅?1H單元中。單元中。MOVSP,#30H;SP30HPUSH40H;SP(SP)+1,(,(31H)(40H) POP41H;41H(31),),(SP)(SP)1 FF80805641H40H31H30HSP壓入壓入8080805641

54、H40H31H30HSP彈出彈出第第4章章 MCS-51 指令系統(tǒng)指令系統(tǒng)175堆棧操作應(yīng)堆棧操作應(yīng)遵循遵循“先進(jìn)后出先進(jìn)后出”的原則的原則。例如:例如:PUSHAPUSHPSW POPPSWPOPA若若改為:改為:PUSHAPUSHPSWPOPAPOPPSW 結(jié)果?結(jié)果?第第4章章 MCS-51 指令系統(tǒng)指令系統(tǒng)176數(shù)據(jù)傳送類指令說明數(shù)據(jù)傳送類指令說明(1)同樣的數(shù)據(jù)傳送,可以使用不同尋址方式的指令來實(shí)同樣的數(shù)據(jù)傳送,可以使用不同尋址方式的指令來實(shí)現(xiàn)?,F(xiàn)。例如:把累加器例如:把累加器A的內(nèi)容送內(nèi)部的內(nèi)容送內(nèi)部RAM 26H單元單元,可由以下,可由以下不同的指令完成:不同的指令完成: MOV

55、 26H,A MOV R0,26H MOV R0,A MOV 26H,0E0H第第4章章 MCS-51 指令系統(tǒng)指令系統(tǒng)177(2)數(shù)據(jù)傳送類指令一般不影響程序狀態(tài)字)數(shù)據(jù)傳送類指令一般不影響程序狀態(tài)字PSW。 個(gè)別影響個(gè)別影響P位,如位,如 :A累加器原值為累加器原值為1,指令,指令MOV A,#0 但堆棧指令(但堆棧指令(PUSH和和POP)可以直接修改狀態(tài)字)可以直接修改狀態(tài)字PSW。例如:例如: PUSH 40HPOP PSW第第4章章 MCS-51 指令系統(tǒng)指令系統(tǒng)17824條指令,完成加、減、乘、除等算術(shù)運(yùn)算。條指令,完成加、減、乘、除等算術(shù)運(yùn)算。1)加法指令組()加法指令組(AD

56、D)ADD A, Rn ;A(A)+(Rn)ADD A, direct ;A(A)+(direct)ADD A, Ri ;A(A)+((Ri))ADD A, #data ;A(A)+data4.3.2 算術(shù)運(yùn)算類指令算術(shù)運(yùn)算類指令第第4章章 MCS-51 指令系統(tǒng)指令系統(tǒng)179加法運(yùn)算影響加法運(yùn)算影響PSW位的狀態(tài)。位的狀態(tài)。如果位如果位3有進(jìn)位,則輔助位標(biāo)志有進(jìn)位,則輔助位標(biāo)志AC置置1,否則,否則AC清清0;如果位如果位7有進(jìn)位,則進(jìn)位標(biāo)志有進(jìn)位,則進(jìn)位標(biāo)志CY置置1,否則,否則CY清清0。兩個(gè)帶符號(hào)數(shù)相加,還有溢出的問題。如果運(yùn)算結(jié)果使溢兩個(gè)帶符號(hào)數(shù)相加,還有溢出的問題。如果運(yùn)算結(jié)果使溢

57、出標(biāo)志出標(biāo)志OV置置1,則表示有溢出出現(xiàn)。,則表示有溢出出現(xiàn)。OV溢出判斷方法:溢出判斷方法:(1)根據(jù)帶符號(hào)數(shù)的性質(zhì)判斷:兩個(gè)正數(shù)相加變負(fù)數(shù),)根據(jù)帶符號(hào)數(shù)的性質(zhì)判斷:兩個(gè)正數(shù)相加變負(fù)數(shù),或兩個(gè)負(fù)數(shù)相減變正數(shù)或兩個(gè)負(fù)數(shù)相減變正數(shù)(2)雙高位法:第六位的進(jìn)位位與第七位的進(jìn)位位異或)雙高位法:第六位的進(jìn)位位與第七位的進(jìn)位位異或結(jié)果判斷,結(jié)果判斷,67VCCO第第4章章 MCS-51 指令系統(tǒng)指令系統(tǒng)1801 1 0 0, 0 0 1 1 B 1 0 1 0, 1 0 1 0 B 1 0 1 1 0 1 1 0 1 B C60 C71 1, 所以有溢出。所以有溢出。結(jié)果:(結(jié)果:(A)=6DH,(

58、,(AC)0,(,(CY)1,(,(OV)=1,P1, PSW85H67VCCOCyACF0RS1RS0OVP1000010085H第第4章章 MCS-51 指令系統(tǒng)指令系統(tǒng)812)帶進(jìn)位加法指令組:)帶進(jìn)位加法指令組:三個(gè)數(shù)參加運(yùn)算:累加器三個(gè)數(shù)參加運(yùn)算:累加器A,不同尋址方式的加數(shù),以及進(jìn),不同尋址方式的加數(shù),以及進(jìn)位標(biāo)志位位標(biāo)志位CY,運(yùn)算結(jié)果送累加器,運(yùn)算結(jié)果送累加器A。 ADDC A, Rn ;A(A)+(Rn)+(CY)ADDC A, direct ;A(A)+(direct)+(CY)ADDC A, Ri ;A(A)+(Ri)+(CY)ADDC A, #data ;A(A)+da

59、ta+(CY)帶進(jìn)位加法運(yùn)算指令常用于帶進(jìn)位加法運(yùn)算指令常用于多字節(jié)數(shù)的加法運(yùn)算多字節(jié)數(shù)的加法運(yùn)算。第第4章章 MCS-51 指令系統(tǒng)指令系統(tǒng)82例例4-5 利用利用ADDC指令編寫計(jì)算指令編寫計(jì)算9878H8934H的匯編語(yǔ)言的匯編語(yǔ)言源程序。源程序。 假設(shè):被加數(shù)放在內(nèi)部假設(shè):被加數(shù)放在內(nèi)部RAM: 31H、32H單元單元 (低位在前),(低位在前), 加數(shù)放在內(nèi)部加數(shù)放在內(nèi)部RAM: 33H、34H單元(低位在前),單元(低位在前), 和存于和存于 :35、36H 單元,單元, 進(jìn)位位:進(jìn)位位: :37H 單元。單元。第第4章章 MCS-51 指令系統(tǒng)指令系統(tǒng)83 ORG 0START:

60、MOV 31H,#78H MOV 32H,#98HMOV 33H,#34HMOV 34H,#89HMOV A,33HADDA,31HMOV 35H,AMOV A,34HADDCA,32HMOV 36H,AMOV A,#0ADDC A,#0MOV 37H,AEND第第4章章 MCS-51 指令系統(tǒng)指令系統(tǒng)843)帶借位減法指令組:)帶借位減法指令組:帶帶借借位減法指令也有四條:位減法指令也有四條:SUBB A,Rn ; A(A)()(Rn)()(CY)SUBB A,direct ; A(A)()(direct)()(CY)SUBB A,Ri ; A(A)((Ri))(CY)SUBB A,#dat

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論