版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第3章 匯編語言12022-5-9淘寶店鋪:淘寶店鋪:淘課件淘課件-教學(xué)配套課件教學(xué)配套課件教材其余課件及動(dòng)畫素材請(qǐng)?jiān)谔詫毦W(wǎng)搜索教材其余課件及動(dòng)畫素材請(qǐng)?jiān)谔詫毦W(wǎng)搜索或者直接輸入下面地址:或者直接輸入下面地址:http:/2022-5-9第3章 匯編語言2第3章 匯編語言第3章 匯編語言32022-5-9本章要點(diǎn):n51系列單片機(jī)指令系統(tǒng)的尋址方式系列單片機(jī)指令系統(tǒng)的尋址方式n51系列單片機(jī)指令系統(tǒng)的使用要點(diǎn)系列單片機(jī)指令系統(tǒng)的使用要點(diǎn)n51系列單片機(jī)匯編語言程序設(shè)計(jì)的方法及系列單片機(jī)匯編語言程序設(shè)計(jì)的方法及應(yīng)用實(shí)例應(yīng)用實(shí)例 第3章 匯編語言42022-5-9n計(jì)算機(jī)是高度自動(dòng)化的機(jī)器,它能自動(dòng)
2、進(jìn)行計(jì)算機(jī)是高度自動(dòng)化的機(jī)器,它能自動(dòng)進(jìn)行運(yùn)算和處理事務(wù)。整個(gè)自動(dòng)操作過程是由運(yùn)算和處理事務(wù)。整個(gè)自動(dòng)操作過程是由CPU中的控制器控制的??刂破髯詣?dòng)執(zhí)行存中的控制器控制的??刂破髯詣?dòng)執(zhí)行存放在存儲(chǔ)器中的指令,而每一條指令規(guī)定計(jì)放在存儲(chǔ)器中的指令,而每一條指令規(guī)定計(jì)算機(jī)完成某種操作。算機(jī)完成某種操作。nCPU所能執(zhí)行的所有指令的集合就稱為所能執(zhí)行的所有指令的集合就稱為指令指令系統(tǒng)。系統(tǒng)。第3章 匯編語言52022-5-9n計(jì)算機(jī)的計(jì)算機(jī)的CPU只能認(rèn)識(shí)和識(shí)別二進(jìn)制代碼,這種只能認(rèn)識(shí)和識(shí)別二進(jìn)制代碼,這種代碼稱為機(jī)器碼,通常用十六進(jìn)制書寫。代碼稱為機(jī)器碼,通常用十六進(jìn)制書寫。n機(jī)器碼雖然能被計(jì)算機(jī)
3、識(shí)別,但不便于記憶和閱機(jī)器碼雖然能被計(jì)算機(jī)識(shí)別,但不便于記憶和閱讀,所以制造廠家對(duì)指令系統(tǒng)中的每一條指令都讀,所以制造廠家對(duì)指令系統(tǒng)中的每一條指令都給出了符號(hào)作指令助記符。這些助記符都一定的給出了符號(hào)作指令助記符。這些助記符都一定的含義含義(一般為英文縮寫一般為英文縮寫),便于記憶、理解和閱讀。,便于記憶、理解和閱讀。n這種用助記符這種用助記符(操作碼操作碼)、操作數(shù)、操作數(shù)(或其地址或其地址)、標(biāo)號(hào)、標(biāo)號(hào)編寫的程序稱為匯編編寫的程序稱為匯編(符號(hào)符號(hào))語言程序。語言程序。第3章 匯編語言62022-5-9n匯編語言程序必須由翻譯成機(jī)器能識(shí)別的機(jī)器碼匯編語言程序必須由翻譯成機(jī)器能識(shí)別的機(jī)器碼(
4、目目標(biāo)代碼標(biāo)代碼)才能在計(jì)算機(jī)上運(yùn)行。翻譯的方法有兩種:才能在計(jì)算機(jī)上運(yùn)行。翻譯的方法有兩種:人工匯編和自動(dòng)匯編。人工匯編和自動(dòng)匯編。n人工匯編就是由人工將指令翻譯成機(jī)器代碼,而自動(dòng)人工匯編就是由人工將指令翻譯成機(jī)器代碼,而自動(dòng)匯編是由計(jì)算機(jī)用匯編程序進(jìn)行翻譯。匯編是由計(jì)算機(jī)用匯編程序進(jìn)行翻譯。n為了剖析現(xiàn)成產(chǎn)品的程序,有時(shí)還需要把機(jī)器碼翻譯為了剖析現(xiàn)成產(chǎn)品的程序,有時(shí)還需要把機(jī)器碼翻譯成匯編語言,這個(gè)過程稱為反匯編。成匯編語言,這個(gè)過程稱為反匯編。匯編程序匯編程序反匯編反匯編匯編語言匯編語言源程序源程序機(jī)器語言機(jī)器語言第3章 匯編語言72022-5-9nMCS-51的指令系統(tǒng)共有的指令系統(tǒng)共
5、有111條指令,分為條指令,分為5種類種類型、有型、有7種尋址方式,共種尋址方式,共255種操作代碼、使用了種操作代碼、使用了42種助詞符。種助詞符。n從指令占用的存儲(chǔ)空間看,單字節(jié)指令有從指令占用的存儲(chǔ)空間看,單字節(jié)指令有49條,條,雙字節(jié)指令有雙字節(jié)指令有45條,三字節(jié)指令有條,三字節(jié)指令有17條;條;n從指令執(zhí)行的時(shí)間看,單周期指令占從指令執(zhí)行的時(shí)間看,單周期指令占64條,雙周條,雙周期指令占期指令占45條,四周期指令條,四周期指令2條(乘法和除法指條(乘法和除法指令)。令)。nMCS-51單片機(jī)的指令系統(tǒng)占用的存儲(chǔ)空間少、單片機(jī)的指令系統(tǒng)占用的存儲(chǔ)空間少、執(zhí)行速度快,有較強(qiáng)的實(shí)時(shí)處理能
6、力,特別適合執(zhí)行速度快,有較強(qiáng)的實(shí)時(shí)處理能力,特別適合于控制系統(tǒng)。于控制系統(tǒng)。第3章 匯編語言82022-5-93.1 MCS-51系列單片機(jī)的指令系列單片機(jī)的指令格式及標(biāo)識(shí)格式及標(biāo)識(shí)nMCS-51單片機(jī)匯編語言的指令由操作碼和單片機(jī)匯編語言的指令由操作碼和操作數(shù)兩部分組成,操作碼表明指令要執(zhí)操作數(shù)兩部分組成,操作碼表明指令要執(zhí)行的操作,而操作數(shù)則說明參與操作的數(shù)行的操作,而操作數(shù)則說明參與操作的數(shù)據(jù)或數(shù)據(jù)存放的位置。據(jù)或數(shù)據(jù)存放的位置。標(biāo)號(hào):標(biāo)號(hào):操作碼操作碼 操作數(shù)操作數(shù) ;注釋;注釋第3章 匯編語言92022-5-9標(biāo)號(hào):標(biāo)號(hào):n是該指令語句的符號(hào)地址,匯編時(shí)將該符是該指令語句的符號(hào)地址
7、,匯編時(shí)將該符號(hào)地址還原為該指令所在的實(shí)際地址。號(hào)地址還原為該指令所在的實(shí)際地址。n使用標(biāo)號(hào)主要是便于編程和查詢標(biāo)號(hào),可使用標(biāo)號(hào)主要是便于編程和查詢標(biāo)號(hào),可根據(jù)需要設(shè)置。根據(jù)需要設(shè)置。n標(biāo)號(hào)一般由標(biāo)號(hào)一般由16個(gè)字符組成,第一個(gè)字符必個(gè)字符組成,第一個(gè)字符必須是字母,其余可以是數(shù)字、字母或下劃須是字母,其余可以是數(shù)字、字母或下劃線等。線等。n標(biāo)號(hào)與操作碼之間用冒號(hào)標(biāo)號(hào)與操作碼之間用冒號(hào)“:”分隔。分隔。 第3章 匯編語言102022-5-9操作碼:操作碼:n用于指明指令的功能。在匯編語言中用助用于指明指令的功能。在匯編語言中用助詞符表示。詞符表示。 第3章 匯編語言112022-5-9操作數(shù):
8、操作數(shù):n根據(jù)指令的不同,操作數(shù)可以為根據(jù)指令的不同,操作數(shù)可以為1個(gè)、個(gè)、2個(gè)、個(gè)、3個(gè)或沒個(gè)或沒有。操作數(shù)之間用逗號(hào)有。操作數(shù)之間用逗號(hào)“,”分隔。分隔。n“操作數(shù)操作數(shù)1”通常是執(zhí)行操作的目的單元,稱目的操通常是執(zhí)行操作的目的單元,稱目的操作數(shù),如寄存器、標(biāo)號(hào)等;作數(shù),如寄存器、標(biāo)號(hào)等;n“操作數(shù)操作數(shù)2”通常是執(zhí)行操作的數(shù)據(jù)來源,稱源操作通常是執(zhí)行操作的數(shù)據(jù)來源,稱源操作數(shù),可以是寄存器、常量、標(biāo)號(hào)等;數(shù),可以是寄存器、常量、標(biāo)號(hào)等;n“操作數(shù)操作數(shù)3”通常是執(zhí)行操作的目的地址或相對(duì)偏移通常是執(zhí)行操作的目的地址或相對(duì)偏移量,在匯編程序中常用標(biāo)號(hào)來表示。量,在匯編程序中常用標(biāo)號(hào)來表示。n
9、如果操作數(shù)為數(shù)值,可以采用:如果操作數(shù)為數(shù)值,可以采用:二進(jìn)制,以B(Binary)結(jié)尾;十進(jìn)制,以D(Decimal)結(jié)尾或省略;十六進(jìn)制,以H(Hexadecimal)結(jié)尾,若第一個(gè)數(shù)字大于9,前要加0。第3章 匯編語言122022-5-9注釋:注釋:n是對(duì)該語句或程序段的簡要說明,通常對(duì)程是對(duì)該語句或程序段的簡要說明,通常對(duì)程序的作用、主要內(nèi)容、進(jìn)入和退出子程序的序的作用、主要內(nèi)容、進(jìn)入和退出子程序的條件等關(guān)鍵性內(nèi)容進(jìn)行注釋,以提高程序的條件等關(guān)鍵性內(nèi)容進(jìn)行注釋,以提高程序的可讀性。可讀性。n注釋和源程序一起存儲(chǔ)、打印,但匯編時(shí)不注釋和源程序一起存儲(chǔ)、打印,但匯編時(shí)不會(huì)被翻譯,因而在機(jī)器
10、代碼的目的程序中并會(huì)被翻譯,因而在機(jī)器代碼的目的程序中并不出現(xiàn),不會(huì)影響程序的執(zhí)行。不出現(xiàn),不會(huì)影響程序的執(zhí)行。n注釋必須以分號(hào)注釋必須以分號(hào)“;”開始,當(dāng)注釋較長占開始,當(dāng)注釋較長占用多行時(shí),每一行都必須以用多行時(shí),每一行都必須以“;”開始。開始。 第3章 匯編語言132022-5-9指令中使用的符號(hào)naddr11-11位目標(biāo)地址。用于位目標(biāo)地址。用于ACALL和和AJMP指令,轉(zhuǎn)向下一條指令中的第一個(gè)字節(jié)所指令,轉(zhuǎn)向下一條指令中的第一個(gè)字節(jié)所在的同一個(gè)在的同一個(gè)2K字節(jié)程序存儲(chǔ)器地址空間內(nèi)的任字節(jié)程序存儲(chǔ)器地址空間內(nèi)的任何地方。何地方。naddr16-16位目標(biāo)地址。用于位目標(biāo)地址。用于L
11、CALL和和LJMP指令,可以指向指令,可以指向64K字節(jié)程序存儲(chǔ)器地址字節(jié)程序存儲(chǔ)器地址空間的任何地方??臻g的任何地方。nbit-可直接位尋址的位地址可直接位尋址的位地址n#-立即數(shù)前綴立即數(shù)前綴ndirect-直接尋址時(shí)數(shù)據(jù)單元地址直接尋址時(shí)數(shù)據(jù)單元地址第3章 匯編語言142022-5-9nrel-相對(duì)偏移量相對(duì)偏移量(8位有符號(hào)數(shù),位有符號(hào)數(shù),-128B+127B) 。nRi-工作寄存器,工作寄存器,i=0,1nRn-工作寄存器,工作寄存器,n=07n-寄存器間接尋址前綴寄存器間接尋址前綴如:如:Ri , DPTRn$-當(dāng)前指令的地址當(dāng)前指令的地址n(X)-X單元內(nèi)容單元內(nèi)容n(X)-以
12、以X單元的內(nèi)容為地址的單元中的內(nèi)單元的內(nèi)容為地址的單元中的內(nèi)容容第3章 匯編語言152022-5-93.2 MCS-51系列單片機(jī)的尋址方式n在有操作數(shù)的指令中,參與操作的數(shù)據(jù)可能就在指令在有操作數(shù)的指令中,參與操作的數(shù)據(jù)可能就在指令中,也可能在寄存器、存儲(chǔ)器、中,也可能在寄存器、存儲(chǔ)器、I/O接口中。接口中。n為正確的執(zhí)行操作,對(duì)這些寄存器、存儲(chǔ)器、和為正確的執(zhí)行操作,對(duì)這些寄存器、存儲(chǔ)器、和I/O接接口要進(jìn)行編號(hào)(也稱作地址號(hào))。口要進(jìn)行編號(hào)(也稱作地址號(hào))。n而在指令中對(duì)這些設(shè)備內(nèi)的數(shù)據(jù)要進(jìn)行操作就要指出而在指令中對(duì)這些設(shè)備內(nèi)的數(shù)據(jù)要進(jìn)行操作就要指出地址。地址。n指令中所規(guī)定的尋找操作數(shù)
13、地址的方式稱為尋址方式。指令中所規(guī)定的尋找操作數(shù)地址的方式稱為尋址方式。n每一種計(jì)算機(jī)都具有多種尋址方式。尋址方式的多少每一種計(jì)算機(jī)都具有多種尋址方式。尋址方式的多少即尋址功能是反映指令系統(tǒng)優(yōu)劣的主要因素之一。即尋址功能是反映指令系統(tǒng)優(yōu)劣的主要因素之一。nMCS-51指令系統(tǒng)的尋址方式有指令系統(tǒng)的尋址方式有7種。種。第3章 匯編語言162022-5-9操作數(shù)尋址方式的相關(guān)空間尋址方式尋址方式尋址空間尋址空間寄存器尋址寄存器尋址工作寄存器工作寄存器R0R7A,B,C,DPTR直接尋址直接尋址內(nèi)部內(nèi)部RAM的低的低128B特殊功能寄存器特殊功能寄存器內(nèi)部內(nèi)部RAM中字節(jié)地址為中字節(jié)地址為20H2F
14、H的的128個(gè)位地址空間個(gè)位地址空間特殊功能寄存器中可位尋址的位地址空特殊功能寄存器中可位尋址的位地址空間間第3章 匯編語言172022-5-9操作數(shù)尋址方式的相關(guān)空間立即尋址立即尋址程序存儲(chǔ)器程序存儲(chǔ)器寄存器間寄存器間接尋址接尋址內(nèi)部內(nèi)部RAM外部外部RAM變址尋址變址尋址程序存儲(chǔ)器程序存儲(chǔ)器相對(duì)尋址相對(duì)尋址程序存儲(chǔ)器程序存儲(chǔ)器位尋址位尋址內(nèi)部內(nèi)部RAM中字節(jié)地址為中字節(jié)地址為20H2FH的的128個(gè)位地址空間個(gè)位地址空間特殊功能寄存器中可位尋址的位地址空特殊功能寄存器中可位尋址的位地址空間間第3章 匯編語言182022-5-93.2.1 寄存器尋址寄存器尋址n寄存器尋址就是以通用寄存器中的
15、內(nèi)容作為操寄存器尋址就是以通用寄存器中的內(nèi)容作為操作數(shù)。在指令中直接以寄存器的名字表示操作作數(shù)。在指令中直接以寄存器的名字表示操作數(shù)的地址。數(shù)的地址。n例如:例如:n MOV A,R0n指令的功能是將寄存器指令的功能是將寄存器R0的內(nèi)容送入寄存器的內(nèi)容送入寄存器A。第3章 匯編語言192022-5-93.2.2. 直接尋址直接尋址n指令中直接給出的是操作數(shù)的地址。指令中直接給出的是操作數(shù)的地址。n例:例:MOV A, 70H;(;(70H)A 指令功能是內(nèi)部指令功能是內(nèi)部RAM 70H單元中的內(nèi)容輸入累加器單元中的內(nèi)容輸入累加器A。第3章 匯編語言202022-5-93.2.3 3.2.3 立
16、即尋址立即尋址n立即尋址方式中,操作數(shù)直接寫在指令中,立即尋址方式中,操作數(shù)直接寫在指令中,匯編后操作數(shù)以指令的形式存放在程序存儲(chǔ)匯編后操作數(shù)以指令的形式存放在程序存儲(chǔ)器中。器中。n如:如:ADD A, #70Hn功能:將數(shù)據(jù)功能:將數(shù)據(jù)70H與與A中內(nèi)容相加中內(nèi)容相加n請(qǐng)注意,在請(qǐng)注意,在MCS-51匯編語言指令表中,立即匯編語言指令表中,立即數(shù)通常用數(shù)通常用#data表示,立即數(shù)前面必須有符號(hào)表示,立即數(shù)前面必須有符號(hào)“#”。第3章 匯編語言212022-5-9 3.2.4 寄存器間接尋址寄存器間接尋址n由指令指出某一個(gè)寄存器的內(nèi)容作為操作數(shù)的由指令指出某一個(gè)寄存器的內(nèi)容作為操作數(shù)的地址,
17、這種尋址方式稱為寄存器間接尋址。地址,這種尋址方式稱為寄存器間接尋址。n注意:在寄存器間接尋址方式中,存放在寄存注意:在寄存器間接尋址方式中,存放在寄存器中的內(nèi)容不是操作數(shù),而是操作數(shù)所在的存器中的內(nèi)容不是操作數(shù),而是操作數(shù)所在的存儲(chǔ)器單元地址。儲(chǔ)器單元地址。n寄存器間接尋址只能使用寄存器寄存器間接尋址只能使用寄存器R0和和R1作為指作為指針地址,來尋址內(nèi)部針地址,來尋址內(nèi)部RAM中的數(shù)據(jù);可使用寄中的數(shù)據(jù);可使用寄存器存器R0、R1和和DPTR作為指針地址,來訪問外作為指針地址,來訪問外部部RAM。n寄存器間接尋址用符號(hào)寄存器間接尋址用符號(hào)“”表示。例如:表示。例如:第3章 匯編語言2220
18、22-5-9nMOV R0, A ; A (R0)n假設(shè)(假設(shè)( R0 )=30H,指令功能是把累加器,指令功能是把累加器A的內(nèi)的內(nèi)容寫入內(nèi)部容寫入內(nèi)部RAM的的30H單元中。單元中。nMOVX A,R0;(R0) An指令功能是指令功能是R0所指出的外部所指出的外部RAM單元中的內(nèi)容送單元中的內(nèi)容送累加器累加器A。若。若R0內(nèi)容為內(nèi)容為60H,而外部,而外部RAM 60H單單元中的內(nèi)容是元中的內(nèi)容是3BH,則指令,則指令MOV A,R0的功的功能是將能是將3BH這個(gè)數(shù)送到累加器這個(gè)數(shù)送到累加器A。nMOVX A,DPTR第3章 匯編語言232022-5-93.2.5 變址尋址變址尋址n這種尋
19、址方式是以這種尋址方式是以16位的程序計(jì)數(shù)器位的程序計(jì)數(shù)器PC或或數(shù)據(jù)指針數(shù)據(jù)指針DPTR作為基址寄存器,以累加器作為基址寄存器,以累加器A作為變址寄存器,兩種寄存器中的內(nèi)容相作為變址寄存器,兩種寄存器中的內(nèi)容相加作為操作數(shù)的地址。加作為操作數(shù)的地址。n這種尋址方式用于讀取表格中的數(shù)據(jù)。這種尋址方式用于讀取表格中的數(shù)據(jù)。nMOVC A, A+PC ;將下條指令第一;將下條指令第一個(gè)字節(jié)的地址加上個(gè)字節(jié)的地址加上A中的偏移量作為操作數(shù)中的偏移量作為操作數(shù)的地址的地址nMOVC A, A+DPTR;將;將DPTR的的內(nèi)容與內(nèi)容與A中的偏移量相加作為操作數(shù)的地址中的偏移量相加作為操作數(shù)的地址第3章
20、匯編語言242022-5-93.2.6 相對(duì)尋址相對(duì)尋址n用于程序控制用于程序控制,利用指令修正利用指令修正PC指針的方式指針的方式實(shí)現(xiàn)轉(zhuǎn)移。實(shí)現(xiàn)轉(zhuǎn)移。n這類方式是以當(dāng)前這類方式是以當(dāng)前PC的內(nèi)容作為基地址,的內(nèi)容作為基地址,加上指令中給定的偏移量加上指令中給定的偏移量rel所得的結(jié)果作為所得的結(jié)果作為轉(zhuǎn)移地址。轉(zhuǎn)移地址。n偏移量是帶符號(hào)數(shù),在偏移量是帶符號(hào)數(shù),在+127B-128B范圍內(nèi),范圍內(nèi),用補(bǔ)碼表示。用補(bǔ)碼表示。n例如:例如:第3章 匯編語言252022-5-9nJC rel;C=1跳轉(zhuǎn)到跳轉(zhuǎn)到PC+rel所指定的單元繼所指定的單元繼續(xù)執(zhí)行續(xù)執(zhí)行n第一字節(jié)為操作碼,第二字節(jié)就是相對(duì)程
21、序第一字節(jié)為操作碼,第二字節(jié)就是相對(duì)程序計(jì)數(shù)器計(jì)數(shù)器PC當(dāng)前地址(當(dāng)前地址(PC的當(dāng)前地址是指向的當(dāng)前地址是指向下一條指令的第一字節(jié)的)的偏移量下一條指令的第一字節(jié)的)的偏移量rel。n若轉(zhuǎn)移指令操作碼存放在若轉(zhuǎn)移指令操作碼存放在1000H單元,該指單元,該指令執(zhí)行時(shí)令執(zhí)行時(shí)PC的內(nèi)容已經(jīng)為的內(nèi)容已經(jīng)為1002H。設(shè)偏移。設(shè)偏移量量rel為為05H,則轉(zhuǎn)移地址為,則轉(zhuǎn)移地址為1007H。當(dāng)。當(dāng)C=1時(shí),去時(shí),去1007H執(zhí)行單元中的指令。執(zhí)行單元中的指令。第3章 匯編語言262022-5-93.2.7 位尋址位尋址n從本質(zhì)上說,位尋址不是一種新的尋址方從本質(zhì)上說,位尋址不是一種新的尋址方式,而
22、是前述尋址方式的一種特殊形式。式,而是前述尋址方式的一種特殊形式。位尋址的對(duì)象是可位尋址空間中的一個(gè)位,位尋址的對(duì)象是可位尋址空間中的一個(gè)位,而不是一個(gè)字節(jié)。而不是一個(gè)字節(jié)。 第3章 匯編語言272022-5-9在在MCS-51系統(tǒng)中,位地址的表示可以采用以系統(tǒng)中,位地址的表示可以采用以下幾種方式:下幾種方式:(1) 直接使用位尋址區(qū)直接使用位尋址區(qū)00HFFH范圍內(nèi)的范圍內(nèi)的某一位的位地址表示。某一位的位地址表示。(2) 采用第幾單元第幾位的表示方法,如采用第幾單元第幾位的表示方法,如25H.5表示表示25H單元的單元的D5位。位。(3) 對(duì)于特殊功能寄存器,可直接用寄存對(duì)于特殊功能寄存器,
23、可直接用寄存器名加位數(shù)表示,如器名加位數(shù)表示,如TCON.3,P1.0等。等。第3章 匯編語言282022-5-9n指令對(duì)存儲(chǔ)空間進(jìn)行的操作是由指令的操作碼和指令對(duì)存儲(chǔ)空間進(jìn)行的操作是由指令的操作碼和尋址方式確定的尋址方式確定的n對(duì)于程序存儲(chǔ)器只能采用立即尋址和基址加變址對(duì)于程序存儲(chǔ)器只能采用立即尋址和基址加變址寄存器間接尋址方式寄存器間接尋址方式n特殊功能寄存器只能采用直接尋址方式,不能采特殊功能寄存器只能采用直接尋址方式,不能采用寄存器間接尋址用寄存器間接尋址n對(duì)對(duì)8052/8032等單片機(jī)內(nèi)部的高等單片機(jī)內(nèi)部的高128字節(jié)字節(jié)(80H0FFH)只能采用寄存器間接尋址,不能)只能采用寄存器
24、間接尋址,不能使用直接尋址方式使用直接尋址方式n外部擴(kuò)展的數(shù)據(jù)寄存器只能用寄存器間接尋址外部擴(kuò)展的數(shù)據(jù)寄存器只能用寄存器間接尋址n而內(nèi)部而內(nèi)部RAM的低的低128字節(jié)(字節(jié)(007FH)既可用直接)既可用直接尋址,也可用寄存器間接尋址,操作指令最豐富。尋址,也可用寄存器間接尋址,操作指令最豐富。第3章 匯編語言292022-5-9nMOVR0,#30H;nMOVA,R0;nMOVR1,A;nMOVB,R1;nMOVR1,P1;nMOVP2,P1;nMOV10H,#20H ;例例1:設(shè)片內(nèi)設(shè)片內(nèi)RAM的的30H單元的內(nèi)容為單元的內(nèi)容為40H,40H單元的內(nèi)容單元的內(nèi)容為為10H,10H單元的內(nèi)容
25、為單元的內(nèi)容為00H,端口,端口P1中的內(nèi)容為中的內(nèi)容為0CAH。試分析下列程序,并說明:各條指令是什么尋。試分析下列程序,并說明:各條指令是什么尋址方式?程序執(zhí)行后各單元、寄存器及端口的內(nèi)容。址方式?程序執(zhí)行后各單元、寄存器及端口的內(nèi)容。n程序執(zhí)行后,程序執(zhí)行后,(R0)=30H,(A)=40H,(R1)=40H, (B)=10H,(P2)=0CAH,(P1)=0CAH,(40H)=0CAH,(10H)=20H。寄存器尋址,立即尋址寄存器尋址,立即尋址寄存器尋址,寄存器間接尋址寄存器尋址,寄存器間接尋址寄存器尋址,寄存器尋址寄存器尋址,寄存器尋址寄存器尋址,寄存器間接尋址寄存器尋址,寄存器間
26、接尋址寄存器間接尋址,直接尋址寄存器間接尋址,直接尋址直接尋址,直接尋址直接尋址,直接尋址直接尋址,立即尋址直接尋址,立即尋址第3章 匯編語言302022-5-93.3 MCS-51系列單片機(jī)的指令系統(tǒng)MCS-51指令系統(tǒng)用指令系統(tǒng)用42種助記符表示了種助記符表示了33種指令功能。種指令功能。共有共有111條指令,條指令,256種機(jī)器碼。種機(jī)器碼。按字節(jié)分:按字節(jié)分:n單字節(jié)指令單字節(jié)指令49條條n雙字節(jié)指令雙字節(jié)指令45條條n三字節(jié)指令三字節(jié)指令17條條按執(zhí)行時(shí)間:按執(zhí)行時(shí)間:n單周期指令單周期指令64條條n雙周期指令雙周期指令45條條n四周期指令四周期指令2條條按指令功能:按指令功能:數(shù)據(jù)
27、傳送指令數(shù)據(jù)傳送指令29條條算術(shù)運(yùn)算指令算術(shù)運(yùn)算指令24條條邏輯運(yùn)算指令邏輯運(yùn)算指令24條條控制轉(zhuǎn)移指令控制轉(zhuǎn)移指令17條條布爾處理指令布爾處理指令17條條第3章 匯編語言312022-5-93.3.1 數(shù)據(jù)傳送指令(29條)n數(shù)據(jù)傳送指令一般的操作是把源操作數(shù)傳送到所指定數(shù)據(jù)傳送指令一般的操作是把源操作數(shù)傳送到所指定的目的地址,指令執(zhí)行后,源操作數(shù)不變,目的操作的目的地址,指令執(zhí)行后,源操作數(shù)不變,目的操作數(shù)為源操作數(shù)所代替。數(shù)為源操作數(shù)所代替。n數(shù)據(jù)傳送是一種最基本最主要的操作,它是編制程序數(shù)據(jù)傳送是一種最基本最主要的操作,它是編制程序時(shí)使用最頻繁的一類指令,數(shù)據(jù)傳送是否快速對(duì)整個(gè)時(shí)使用最
28、頻繁的一類指令,數(shù)據(jù)傳送是否快速對(duì)整個(gè)程序的執(zhí)行效率起很大的作用。程序的執(zhí)行效率起很大的作用。n在在MCS-51指令系統(tǒng)中,數(shù)據(jù)傳送指令非常靈活,它指令系統(tǒng)中,數(shù)據(jù)傳送指令非常靈活,它可以把數(shù)據(jù)方便的傳送到數(shù)據(jù)存儲(chǔ)器和可以把數(shù)據(jù)方便的傳送到數(shù)據(jù)存儲(chǔ)器和I/O口???。n數(shù)據(jù)傳送類指令用到的助記符有:數(shù)據(jù)傳送類指令用到的助記符有:MOV、MOVX、MOVC、XCH、XCHD、PUSH、POP。第3章 匯編語言322022-5-9工作組寄存器工作組寄存器R0R7直接地址直接地址direct累加器累加器ACC立即數(shù)立即數(shù)#data間接尋址間接尋址Ri,DPTR直接地址直接地址Direct (bit)數(shù)
29、據(jù)傳送路徑數(shù)據(jù)傳送路徑位累加器位累加器Cy第3章 匯編語言332022-5-9傳送指令歸納起來只有傳送指令歸納起來只有5種:種:n片內(nèi)片內(nèi)RAM傳送:傳送:MOVn片外片外RAM傳送:傳送:MOVXn訪問訪問ROM的傳送(查表):的傳送(查表):MOVCn累加器交換:累加器交換:XCH、XCHD、SWAPn堆棧操作:堆棧操作:PUSH、POP第3章 匯編語言342022-5-91內(nèi)部數(shù)據(jù)傳送指令(1) 以累加器以累加器A為目的操作數(shù)的指令為目的操作數(shù)的指令MOV A, RnMOV A, directMOV A, RiMOV A, #data這組指令的功能是將這組指令的功能是將Rn、direct
30、、Ri單元單元中的內(nèi)容或中的內(nèi)容或#data送入目的單元累加器送入目的單元累加器A中。中。 第3章 匯編語言352022-5-9(2) 以以Rn為目的操作數(shù)的指令為目的操作數(shù)的指令MOV Rn, AMOV Rn, directMOV Rn, #data這組指令的功能是將這組指令的功能是將A、direct單元的內(nèi)容或單元的內(nèi)容或#data送入目的單元工作寄存器送入目的單元工作寄存器Rn中。中。第3章 匯編語言362022-5-9(3) 以直接地址為目的操作數(shù)的指令以直接地址為目的操作數(shù)的指令MOV direct, AMOV direct, RnMOV direct, directMOV dire
31、ct, RiMOV direct, #data這組指令的功能是將這組指令的功能是將A、Rn、direct、Ri單元中的內(nèi)容或單元中的內(nèi)容或#data送入目的單元送入目的單元direct中。中。第3章 匯編語言372022-5-9(4) 以寄存器間接尋址的單元為目的操作以寄存器間接尋址的單元為目的操作數(shù)的指令數(shù)的指令MOV Ri, AMOV Ri, directMOV Ri, #data這組指令的功能是將這組指令的功能是將A、direct單元的內(nèi)容或單元的內(nèi)容或#data送入目的單元送入目的單元Ri中。中。第3章 匯編語言382022-5-9(5) 16位數(shù)據(jù)傳送指令位數(shù)據(jù)傳送指令MOV DPT
32、R, #data16這條指令是將這條指令是將16位的立即數(shù)送入位的立即數(shù)送入DPTR,高,高8位數(shù)據(jù)送入位數(shù)據(jù)送入DPH,低,低8位數(shù)據(jù)送入位數(shù)據(jù)送入DPL。第3章 匯編語言392022-5-9(6) 棧操作指令棧操作指令PUSH directPOP direct在在MCS-51單片機(jī)內(nèi)部單片機(jī)內(nèi)部RAM中可以設(shè)定一個(gè)中可以設(shè)定一個(gè)后進(jìn)先出(后進(jìn)先出(LIFO)的堆棧區(qū),在特殊功能寄)的堆棧區(qū),在特殊功能寄存器中有一個(gè)堆棧指針存器中有一個(gè)堆棧指針SP用于指示棧頂?shù)奈挥糜谥甘緱m數(shù)奈恢?。置。?章 匯編語言402022-5-9進(jìn)棧指令進(jìn)棧指令的執(zhí)行過程為:首先將堆棧指針的執(zhí)行過程為:首先將堆棧指
33、針SP的內(nèi)容加的內(nèi)容加1,然后將直接地址所指出的內(nèi)容送,然后將直接地址所指出的內(nèi)容送入入SP所指向的內(nèi)部所指向的內(nèi)部RAM單元。單元。出棧指令出棧指令的執(zhí)行過程為:首先將的執(zhí)行過程為:首先將SP所指的內(nèi)所指的內(nèi)部部RAM單元的內(nèi)容送入由直接地址所指示的單元的內(nèi)容送入由直接地址所指示的單元,然后將堆棧指針單元,然后將堆棧指針SP的內(nèi)容減的內(nèi)容減1。進(jìn)棧指令用于保護(hù)進(jìn)棧指令用于保護(hù)CPU現(xiàn)場(chǎng),而出棧指令用現(xiàn)場(chǎng),而出棧指令用于恢復(fù)于恢復(fù)CPU現(xiàn)場(chǎng),在編寫程序時(shí)要注意出入現(xiàn)場(chǎng),在編寫程序時(shí)要注意出入棧數(shù)據(jù)的平衡。棧數(shù)據(jù)的平衡。第3章 匯編語言412022-5-9(7) 字節(jié)交換指令字節(jié)交換指令XCH
34、A, RnXCH A, Ri這組指令實(shí)現(xiàn)的將累加器這組指令實(shí)現(xiàn)的將累加器A和源操作數(shù)的內(nèi)和源操作數(shù)的內(nèi)容互換。容互換。(8) 半字節(jié)交換指令半字節(jié)交換指令XCHD A, Ri;將;將A與與Ri所指單元的所指單元的低低4位互換,高位互換,高4位保持不變位保持不變SWAP;將;將A的高的高4位與低位與低4位互換位互換第3章 匯編語言422022-5-92累加器A與外部數(shù)據(jù)存儲(chǔ)器間傳送指令MOVX A, DPTRMOVX A, RiMOVX DPTR, AMOVX Ri, A這組指令的功能是累加器這組指令的功能是累加器A與外部擴(kuò)展的數(shù)與外部擴(kuò)展的數(shù)據(jù)存儲(chǔ)器或據(jù)存儲(chǔ)器或IO端口之間的數(shù)據(jù)傳送。端口之間
35、的數(shù)據(jù)傳送。由于外部由于外部RAM與與IO是統(tǒng)一編址的,共占是統(tǒng)一編址的,共占64KB空間,所以指令本身并不能分辨是對(duì)空間,所以指令本身并不能分辨是對(duì)RAM還是還是IO操作,而是由硬件的地址分配決操作,而是由硬件的地址分配決定的。定的。 第3章 匯編語言432022-5-93查表指令查表指令用于查找存放在程序存儲(chǔ)器中的常查表指令用于查找存放在程序存儲(chǔ)器中的常數(shù)表格。查表指令有兩條。數(shù)表格。查表指令有兩條。(1)MOVC A, A+PCA的內(nèi)容作為無符號(hào)偏移量與的內(nèi)容作為無符號(hào)偏移量與PC的內(nèi)容(下的內(nèi)容(下一條指令的起始地址)相加,得到一個(gè)一條指令的起始地址)相加,得到一個(gè)16位位的地址,將該
36、地址指示的程序存儲(chǔ)器單元的的地址,將該地址指示的程序存儲(chǔ)器單元的內(nèi)容送入累加器內(nèi)容送入累加器A。指令不改變指令不改變PC的值,只要根據(jù)的值,只要根據(jù)A中的內(nèi)容就中的內(nèi)容就可以取出表格中的常數(shù),但表格只能放在該可以取出表格中的常數(shù),但表格只能放在該查表指令后的查表指令后的256個(gè)單元中,表格的大小受個(gè)單元中,表格的大小受到限制,而且表格只能被一段程序使用。到限制,而且表格只能被一段程序使用。第3章 匯編語言442022-5-93查表指令(2)MOVC A, A+DPTRA的內(nèi)容作為無符號(hào)偏移量與的內(nèi)容作為無符號(hào)偏移量與DPTR的內(nèi)容相的內(nèi)容相加,得到一個(gè)加,得到一個(gè)16位的地址,將該地址指示的位
37、的地址,將該地址指示的程序存儲(chǔ)器單元的內(nèi)容送入累加器程序存儲(chǔ)器單元的內(nèi)容送入累加器A。指令的執(zhí)行結(jié)果只與指令的執(zhí)行結(jié)果只與DPTR和累加器和累加器A的內(nèi)容的內(nèi)容有關(guān),而與該指令存放的地址以及常數(shù)表格有關(guān),而與該指令存放的地址以及常數(shù)表格存放的地址無關(guān),因此表格的大小和位置可存放的地址無關(guān),因此表格的大小和位置可以在以在64KB程序存儲(chǔ)器中任意安排,并且一個(gè)程序存儲(chǔ)器中任意安排,并且一個(gè)表格可以被多個(gè)程序塊使用。表格可以被多個(gè)程序塊使用。第3章 匯編語言452022-5-93.3.2 算術(shù)運(yùn)算指令(24條)n算術(shù)運(yùn)算指令主要完成加、減、乘、除四則運(yùn)算,以及算術(shù)運(yùn)算指令主要完成加、減、乘、除四則運(yùn)
38、算,以及加加1、減、減1、BCD碼的運(yùn)算和調(diào)整等。除加碼的運(yùn)算和調(diào)整等。除加1、減、減1運(yùn)算運(yùn)算外,這類指令大多數(shù)要影響到程序狀態(tài)字寄存器外,這類指令大多數(shù)要影響到程序狀態(tài)字寄存器PSW。n雖然算術(shù)邏輯單元雖然算術(shù)邏輯單元ALU僅能對(duì)僅能對(duì)8位無符號(hào)整數(shù)進(jìn)行運(yùn)算,位無符號(hào)整數(shù)進(jìn)行運(yùn)算,但利用進(jìn)位位但利用進(jìn)位位C,可進(jìn)行多字節(jié)無符號(hào)整數(shù)的運(yùn)算。,可進(jìn)行多字節(jié)無符號(hào)整數(shù)的運(yùn)算。n利用溢出標(biāo)志,還可以方便地對(duì)帶符號(hào)數(shù)進(jìn)行補(bǔ)碼運(yùn)算。利用溢出標(biāo)志,還可以方便地對(duì)帶符號(hào)數(shù)進(jìn)行補(bǔ)碼運(yùn)算。n算術(shù)操作類指令可分為加法、帶進(jìn)位加、帶借位減、增算術(shù)操作類指令可分為加法、帶進(jìn)位加、帶借位減、增量、減量及其它運(yùn)算指令共
39、量、減量及其它運(yùn)算指令共6組,每組組,每組4條。除最后一組條。除最后一組外,外,4條指令的源操作數(shù)分別采用寄存器尋址、直接尋條指令的源操作數(shù)分別采用寄存器尋址、直接尋址、寄存器間接尋址以及立即尋址,而目的操作數(shù)都是址、寄存器間接尋址以及立即尋址,而目的操作數(shù)都是累加器累加器A。第3章 匯編語言462022-5-9(1) 不帶進(jìn)位加法指令不帶進(jìn)位加法指令(4條條)nADD A,Rn ;(A)+(Rn) (A)nADD A,direct ;(A)+(direct) (A)nADD A,Ri ;(A)+(Ri) (A)nADD A,#data ;(A)+data(A)n以上指令把立即數(shù)、直接地址、間
40、接地址以及工作以上指令把立即數(shù)、直接地址、間接地址以及工作寄存器內(nèi)容與累加器寄存器內(nèi)容與累加器A中內(nèi)容相加,結(jié)果送入中內(nèi)容相加,結(jié)果送入A中。中。n無論是哪一條加法指令,參加運(yùn)算的都是兩個(gè)無論是哪一條加法指令,參加運(yùn)算的都是兩個(gè)8位二位二進(jìn)制數(shù)。進(jìn)制數(shù)。n對(duì)于指令的使用都來說,這些對(duì)于指令的使用都來說,這些8位二進(jìn)制數(shù)既可以看位二進(jìn)制數(shù)既可以看作是無符號(hào)數(shù)作是無符號(hào)數(shù)(0255),也可以看作是帶符號(hào)數(shù),即,也可以看作是帶符號(hào)數(shù),即補(bǔ)碼數(shù)補(bǔ)碼數(shù)(-128+127),這完全由使用者事先設(shè)計(jì)。,這完全由使用者事先設(shè)計(jì)。n但計(jì)算機(jī)在作加法運(yùn)算時(shí),總是按以下規(guī)定進(jìn)行:但計(jì)算機(jī)在作加法運(yùn)算時(shí),總是按以下規(guī)
41、定進(jìn)行:1. 加法指令第3章 匯編語言472022-5-9n在求和時(shí),都是把操作數(shù)直接相加,而無需作任何在求和時(shí),都是把操作數(shù)直接相加,而無需作任何變換。變換。n在相加過程中,當(dāng)在相加過程中,當(dāng)D6向向D7有進(jìn)位時(shí),而有進(jìn)位時(shí),而D7到到CY無進(jìn)位,或無進(jìn)位,或D6到到D7無進(jìn)位,但無進(jìn)位,但D7到到CY有進(jìn)位,有進(jìn)位,均使溢出標(biāo)志均使溢出標(biāo)志OV=1。 如果使用者處理的是有符號(hào)數(shù),數(shù)據(jù)的溢出由如果使用者處理的是有符號(hào)數(shù),數(shù)據(jù)的溢出由OV表示;若處理的是無符號(hào)數(shù),則運(yùn)算結(jié)果的溢出用表示;若處理的是無符號(hào)數(shù),則運(yùn)算結(jié)果的溢出用CY表示。表示。n加法指令還影響輔助進(jìn)位標(biāo)志加法指令還影響輔助進(jìn)位標(biāo)志
42、AC和奇偶標(biāo)志和奇偶標(biāo)志P。 在相加過程中,當(dāng)在相加過程中,當(dāng)D3位產(chǎn)生對(duì)位產(chǎn)生對(duì)D4位的進(jìn)位時(shí),位的進(jìn)位時(shí),AC=1;若相加后;若相加后A中中1的個(gè)數(shù)為偶數(shù),則的個(gè)數(shù)為偶數(shù),則P=0。第3章 匯編語言482022-5-9例例 :(A)0C3H,(R0)0AAH執(zhí)行指令執(zhí)行指令 ADD A,R0,則操作如下:,則操作如下: 1100 0011 + 1010 1010 1 0110 1101n運(yùn)算后,運(yùn)算后,CY 1,OV1,AC0,P1,A6DH。n若把若把C3H和和AAH看作無符導(dǎo)數(shù)相加,則不考慮溢出,看作無符導(dǎo)數(shù)相加,則不考慮溢出,結(jié)果為結(jié)果為16DH,若把,若把C3H和和AAH看作有符號(hào)
43、數(shù),則得到看作有符號(hào)數(shù),則得到2個(gè)負(fù)數(shù)相加得正數(shù)的錯(cuò)誤結(jié)論,此時(shí),個(gè)負(fù)數(shù)相加得正數(shù)的錯(cuò)誤結(jié)論,此時(shí),OV1,表示,表示出錯(cuò)。出錯(cuò)。nOV溢出標(biāo)志取決于帶符號(hào)數(shù)運(yùn)算時(shí)的第溢出標(biāo)志取決于帶符號(hào)數(shù)運(yùn)算時(shí)的第6、7位中有一位中有一位產(chǎn)生進(jìn)位而另一位不產(chǎn)生進(jìn)位,則使位產(chǎn)生進(jìn)位而另一位不產(chǎn)生進(jìn)位,則使OV1,否則,否則OV0。OV1表示兩正數(shù)相加,和變成負(fù)數(shù),或兩負(fù)表示兩正數(shù)相加,和變成負(fù)數(shù),或兩負(fù)數(shù)相加,和變成正數(shù)的錯(cuò)誤結(jié)果。數(shù)相加,和變成正數(shù)的錯(cuò)誤結(jié)果。n溢出標(biāo)志溢出標(biāo)志OV在在CPU內(nèi)部是靠硬件異或門獲得的。內(nèi)部是靠硬件異或門獲得的。第3章 匯編語言492022-5-9(2) 帶進(jìn)位加法指令帶進(jìn)位加
44、法指令(4條條)nADDC A,Rn ;(A)+(Rn)+(C) (A)nADDC A,direct ;(A)+(direct) +(C) (A) nADDC A,Ri ;(A)+(Ri)+(C) (A)nADDC A,#data ;(A)+ #data +(C) (A)n以上指令除了需考慮進(jìn)位位外,和前面的一般加以上指令除了需考慮進(jìn)位位外,和前面的一般加法指令完全相同。法指令完全相同。第3章 匯編語言502022-5-9例例3:(A)AEH,(R0)81H,(Cy)1,執(zhí)行指令,執(zhí)行指令A(yù)DDC A,R0,則操作如下,則操作如下n 1010 1110n 1000 0001n + 1 1 00
45、11 0000n運(yùn)算后,運(yùn)算后,CY1,OV1,AC1第3章 匯編語言512022-5-9(3) 增量指令增量指令I(lǐng)NC(5條條)nINC A ;(A)+l(A)nINC Rn ;(Rn)+1(Rn)nINC direct ;(direct)+1(direct)nINC Ri ;(Ri)+1(Ri)nINC DPTR ;(DPTR) +1(DPTR) nINC指令把所指的寄存器內(nèi)容加指令把所指的寄存器內(nèi)容加1,結(jié)果仍送回原,結(jié)果仍送回原寄存器,若原來寄存器的內(nèi)容為寄存器,若原來寄存器的內(nèi)容為FFH,則加,則加1后將后將為為00H,運(yùn)算結(jié)果不影響任何標(biāo)志位。,運(yùn)算結(jié)果不影響任何標(biāo)志位。n若直接地
46、址是若直接地址是I/O口,則進(jìn)行口,則進(jìn)行“讀讀改改寫寫”操作。操作。其功能是先讀入端口鎖存器的內(nèi)容,然后在其功能是先讀入端口鎖存器的內(nèi)容,然后在CPU中加中加l,繼而輸出到端口。,繼而輸出到端口。第3章 匯編語言522022-5-9n(4) 十進(jìn)制調(diào)整指令十進(jìn)制調(diào)整指令(1條條)n DA An這條指令是在進(jìn)行這條指令是在進(jìn)行BCD碼運(yùn)算時(shí),跟在碼運(yùn)算時(shí),跟在ADD和和ADDC指令之后,將相加后存放在累加器指令之后,將相加后存放在累加器A中的結(jié)果進(jìn)行修正。中的結(jié)果進(jìn)行修正。n修正的條件和方法為:修正的條件和方法為:n若若(A03)9或或(AC)1,則,則(A03)+06H (A03); n若若
47、(A47)9或或(CY)1,則,則(A47) +60H (A47)。n若以上兩條同時(shí)發(fā)生,或高若以上兩條同時(shí)發(fā)生,或高4位雖等于位雖等于9,但低,但低4位修正位修正后有進(jìn)位,則應(yīng)加后有進(jìn)位,則應(yīng)加66H修正。修正。n以上討論的修正情況是由以上討論的修正情況是由ALU硬件中的十進(jìn)制修正電硬件中的十進(jìn)制修正電路自動(dòng)進(jìn)行的,用戶不必考慮何時(shí)該加路自動(dòng)進(jìn)行的,用戶不必考慮何時(shí)該加6,使用時(shí)只需,使用時(shí)只需在在ADD和和ADDC后面緊跟一條后面緊跟一條DA A指令即可。指令即可。n注意:本指令不能用于注意:本指令不能用于BCD碼減法的調(diào)整碼減法的調(diào)整!第3章 匯編語言532022-5-9(1) 帶借位減
48、法指令帶借位減法指令(4條條)nSUBB A,Rn ;(A)-(Rn)-(C) (A)nSUBB A,direct ;(A)-(direct) -(C) (A) nSUBB A,Ri ;(A)-(Ri)-(C) (A)nSUBB A,#data ;(A)- #data -(C) (A)n這組指令是從累加器這組指令是從累加器A中減去源操作數(shù)和中減去源操作數(shù)和Cy標(biāo)志,標(biāo)志,結(jié)果在累加器中。同樣地,要減的結(jié)果在累加器中。同樣地,要減的Cy標(biāo)志也是該標(biāo)志也是該指令執(zhí)行前的值,因此在第一次做減法時(shí)要先將指令執(zhí)行前的值,因此在第一次做減法時(shí)要先將Cy清零。清零。n減法指令對(duì)標(biāo)志位的影響與加法指令類似。減
49、法指令對(duì)標(biāo)志位的影響與加法指令類似。2.減法指令第3章 匯編語言542022-5-9例:例:AC9H,R354H,CY1執(zhí)行指令執(zhí)行指令SUBB A,R3,則操作如下:,則操作如下:n 1100 1001n - 1n 1100 1000n - 0101 0100n 0111 0100n運(yùn)算后,運(yùn)算后,CY0,AC0,OV1,P0,A74H。n若在進(jìn)行單字節(jié)或多字節(jié)減法運(yùn)算前,不知借位標(biāo)志位若在進(jìn)行單字節(jié)或多字節(jié)減法運(yùn)算前,不知借位標(biāo)志位CY的值,則應(yīng)在進(jìn)行運(yùn)算前對(duì)的值,則應(yīng)在進(jìn)行運(yùn)算前對(duì)CY清清0。第3章 匯編語言552022-5-9(2) 減量指令減量指令(4條條)nDEC A ;(A)-l
50、(A)nDEC Rn ;(Rn)-1(Rn)nDEC direct ;(direct)-1(direct)nDEC Ri ;(Ri)-1(Ri)nDEC指令把所指的寄存器內(nèi)容減指令把所指的寄存器內(nèi)容減1、結(jié)果仍送回、結(jié)果仍送回原寄存器,若原來寄存器的內(nèi)容為原寄存器,若原來寄存器的內(nèi)容為00H,則減,則減1后后將為將為FFH,運(yùn)算結(jié)果不影響任何標(biāo)志位。,運(yùn)算結(jié)果不影響任何標(biāo)志位。n該組指令使用了直接尋址、寄存器尋址和寄存器該組指令使用了直接尋址、寄存器尋址和寄存器間接尋址。間接尋址。n同加同加1指令一樣若直接地址是指令一樣若直接地址是I/O口,則進(jìn)行口,則進(jìn)行“讀讀改改寫寫”操作。操作。第3章
51、匯編語言562022-5-9 MUL AB ; n這條指令的功能是把累加器這條指令的功能是把累加器A和寄存器和寄存器B中的中的8位無位無符號(hào)整數(shù)相乘,所得符號(hào)整數(shù)相乘,所得16位乘積的低位乘積的低8位存放在位存放在A中,中,高高8位存放在位存放在B中。中。n若乘積大于若乘積大于FFH,則溢出標(biāo)志,則溢出標(biāo)志OV置置l,否則清,否則清0,乘法運(yùn)算總是使進(jìn)位標(biāo)志乘法運(yùn)算總是使進(jìn)位標(biāo)志CY0。nA=4DH,B=5DH,執(zhí)行指令,執(zhí)行指令MUL A B,則結(jié)果如,則結(jié)果如下所示:下所示:n (A)1CH , (B)56H ,OV1, CY007815)()()()(ABBA4. 乘法指令(1條)第3章
52、 匯編語言572022-5-9DIV AB ; n這條指令的功能是把累加器這條指令的功能是把累加器A中的中的8位無符號(hào)整數(shù)除位無符號(hào)整數(shù)除以寄存器以寄存器B中中8位無符號(hào)整數(shù)所得商送入位無符號(hào)整數(shù)所得商送入A中,余數(shù)中,余數(shù)送人送人B中。中。n除法運(yùn)算總是使除法運(yùn)算總是使CY和和OV清清0。n若除數(shù)若除數(shù)(B中內(nèi)容中內(nèi)容)為為00H,則執(zhí)行結(jié)果為不確定值,則執(zhí)行結(jié)果為不確定值,此時(shí),此時(shí),OV1,表示除法溢出。,表示除法溢出。n例例5:(A)87H,(B)0CH,執(zhí)行指令,執(zhí)行指令DIV A B,則結(jié)果如下所示:則結(jié)果如下所示:n (A)0BH , (B)03H, OV0, CY0余數(shù)商BAB
53、A)()(5. 除法指令(1條)第3章 匯編語言582022-5-9影響標(biāo)志位的指令:指指 令令有影響的標(biāo)志位有影響的標(biāo)志位CyOVACPADDADDCSUBBMUL0DIV0DA第3章 匯編語言592022-5-93.3.3 邏輯運(yùn)算指令(24條)n邏輯操作類指令共有邏輯操作類指令共有25條,有與、或、異或、條,有與、或、異或、求反、左右移位、清求反、左右移位、清0等邏輯操作。等邏輯操作。n對(duì)應(yīng)的尋址方式有直接尋址、寄存器尋址和對(duì)應(yīng)的尋址方式有直接尋址、寄存器尋址和寄存器間接尋址,該類指令的執(zhí)行一般不影寄存器間接尋址,該類指令的執(zhí)行一般不影響響PSW。第3章 匯編語言602022-5-9(1
54、) 邏輯與指令邏輯與指令(6條條)nANL A,Rn ;(A)(Rn) (A)nANL A, direct ;(A)#data (A)nANL A,Ri ;(A)(Ri) (A)nANL A,#data ;(A)#data (A)nANL direct,A ;(direct)(A) (direct)nANL direct,#data ;(direct)#data (direct)n若直接地址正好是若直接地址正好是I/O口,則是口,則是“讀讀改改寫寫”操作。操作。n邏輯與指令常用于將字節(jié)中的某些位清零。邏輯與指令常用于將字節(jié)中的某些位清零。1.兩個(gè)操作數(shù)的邏輯運(yùn)算指令第3章 匯編語言612022
55、-5-9(2) 邏輯或指令邏輯或指令(6條條)nORL A,Rn ;(A) (Rn) (A)nORL A, direct ;(A) (direct) (A)nORL A,Ri ;(A) (Ri) (A)nORL A,#data ;(A) #data (A)nORL direct,A ;(direct) (A) (direct)nORL direct,#data ;(direct) #data (direct)n若直接地址正好是若直接地址正好是I/O口,則是口,則是“讀讀改改寫寫”操作。操作。n邏輯與指令常用于將字節(jié)中的某些位置邏輯與指令常用于將字節(jié)中的某些位置1。第3章 匯編語言622022-
56、5-9(3) 邏輯異或指令邏輯異或指令(6條條)nXRL A,Rn ;(A) (Rn) (A)nXRL A,direct ;(A) (direct) (A)nXRL A,Ri ;(A) (Ri) (A)nXRL A,#data ;(A) #data (A)nXRL direct,A ;(direct) (A) (direct)nXRL direct,#data ;(direct) #data (direct)n若直接地址正好是若直接地址正好是I/O口,則是口,則是“讀讀改改寫寫”操作。操作。n邏輯與指令常用于將字節(jié)中的某些位取反。邏輯與指令常用于將字節(jié)中的某些位取反。第3章 匯編語言63202
57、2-5-9(1) 累加器累加器A清零指令清零指令(1條條)nCLR A ;將累加器;將累加器A中的內(nèi)容清中的內(nèi)容清0(2) 累加器累加器A取反指令取反指令(1條條)nCPL A ;將累加器;將累加器A中的內(nèi)容按位取反中的內(nèi)容按位取反2.累加器A的邏輯操作指令第3章 匯編語言642022-5-9(3) 移位指令移位指令(4條條)nRL A nRR A nRLC A nRRC A n前兩條指令的功能分別是將累加器前兩條指令的功能分別是將累加器A的內(nèi)容循環(huán)左的內(nèi)容循環(huán)左移或右移一位,后兩條指令的功能分別是將累加器移或右移一位,后兩條指令的功能分別是將累加器A的內(nèi)容連同進(jìn)位位的內(nèi)容連同進(jìn)位位CY一起循
58、環(huán)左移或右移一位。一起循環(huán)左移或右移一位。A7A0A7A0A7A0CyA7A0Cy第3章 匯編語言652022-5-9例例1:利用左移指令對(duì)累加器:利用左移指令對(duì)累加器A中內(nèi)容進(jìn)行乘中內(nèi)容進(jìn)行乘8操作。操作。設(shè)設(shè)(A)01H,編程如下:,編程如下:n RL A ;02H(A)n RL A ;04H(A)n RL A ;08H(A)例例2:利用右移指令對(duì)累加器:利用右移指令對(duì)累加器A中內(nèi)容進(jìn)行除中內(nèi)容進(jìn)行除8操作。操作。設(shè)設(shè)(A)08H,編程如下:,編程如下:n RR A ;04H(A)n RR A ;02H(A)n RR A ;01H(A)第3章 匯編語言662022-5-9例例3:設(shè):設(shè)P1
59、中內(nèi)容為中內(nèi)容為AAH,A中內(nèi)容為中內(nèi)容為15H,執(zhí)行下列程,執(zhí)行下列程序:序:n ANL P1,#0F0H ;(P1)A0Hn ORL P1,#0FH ;(P1)AFHn XRL P1,A ;(P1)BAHn從上例可見,邏輯操作是按位進(jìn)行的,所以,從上例可見,邏輯操作是按位進(jìn)行的,所以,“ANL”常用來屏蔽字節(jié)中的某些位,要保留的位用常用來屏蔽字節(jié)中的某些位,要保留的位用“l(fā)”去去“與與”,要清除的位用,要清除的位用“0”去去“與與”。n“ORL”常用來對(duì)字節(jié)中的某些位置常用來對(duì)字節(jié)中的某些位置“l(fā)”,要保留的位,要保留的位用用“0”去去“或或”,要置,要置1的位用的位用“1”去去“或或”。
60、n“XRL”常用來對(duì)字節(jié)中的某些位求反,要保留的位用常用來對(duì)字節(jié)中的某些位求反,要保留的位用“0”去去“異或異或”,要求反的位用,要求反的位用“1”去去“異或異或”。第3章 匯編語言672022-5-9n MOV DPTR,#2000H ;2000H(DPTR)n ANL A,#0FH ;(A) #0FH(A)n MOVX DPTR,A ;(A) (DPTR)例例4:把累加器:把累加器A中的低中的低4位送到外部位送到外部RAM的的2000H單元中,編程如下單元中,編程如下第3章 匯編語言682022-5-93.3.4 控制轉(zhuǎn)移指令(17條)n控制轉(zhuǎn)移類指令用于控制程序的走向,故其作用控制轉(zhuǎn)移類
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度個(gè)人別墅買賣合同范本11篇
- 2025年度市政公共設(shè)施通風(fēng)排煙系統(tǒng)建設(shè)與運(yùn)營管理合同3篇
- 2025年家具代購居間合同
- 2025年AI情感陪伴機(jī)器人軟件合同
- 2025年度公共建筑內(nèi)墻乳膠漆涂裝及維護(hù)服務(wù)合同4篇
- 2025年度個(gè)人健康體檢與健康管理服務(wù)合同7篇
- 2025年度租賃房屋維修保養(yǎng)服務(wù)合同3篇
- 2025年度個(gè)人置換房屋買賣及產(chǎn)權(quán)登記服務(wù)合同3篇
- 2025年油氣儲(chǔ)罐銷售及維護(hù)保養(yǎng)服務(wù)合同范本3篇
- 2025年度個(gè)人綠色消費(fèi)貸款連帶責(zé)任保證合同3篇
- 勞務(wù)協(xié)議范本模板
- 2024年全國職業(yè)院校技能大賽高職組(生產(chǎn)事故應(yīng)急救援賽項(xiàng))考試題庫(含答案)
- 2025大巴車租車合同范文
- 老年上消化道出血急診診療專家共識(shí)2024
- 人教版(2024)數(shù)學(xué)七年級(jí)上冊(cè)期末測(cè)試卷(含答案)
- 2024年國家保密培訓(xùn)
- 2024年公務(wù)員職務(wù)任命書3篇
- CFM56-3發(fā)動(dòng)機(jī)構(gòu)造課件
- 會(huì)議讀書交流分享匯報(bào)課件-《殺死一只知更鳥》
- 2025屆撫州市高一上數(shù)學(xué)期末綜合測(cè)試試題含解析
- 公司印章管理登記使用臺(tái)賬表
評(píng)論
0/150
提交評(píng)論