MCS-51單片機(jī)尋址方式小結(jié)
MCS-51單片機(jī)尋址方式小結(jié)201*-08-2920:34:02|分類(lèi):エ程|標(biāo)簽:|字號(hào)大中小訂閱MCS-51單片機(jī)指令系統(tǒng)共使用7中尋址方式,包括寄存器尋址、直接尋址、立即數(shù)尋址、寄存器間接尋址、變址尋址、相對(duì)尋址、位尋址等。尋址方式定義操作數(shù)存放(1)通用寄存器R0~R7;寄存器于寄存器中,(2)部分專(zhuān)用寄存器,例如累加器A、寄存器B以尋址指令中給出數(shù)據(jù)指針DPTR等名寄存器存放操作數(shù)的(1)內(nèi)部RAM中的低128地址單元,地址范圍為內(nèi)存單元地址00H~FFH;直接尋址直接寫(xiě)在指令中立即數(shù)操作數(shù)直接尋址寫(xiě)在指令中(2)專(zhuān)用寄存器。專(zhuān)用寄存器除以單元地址形式給出外,還可以以寄存器符號(hào)形式給出。源操作數(shù)為立即數(shù),立即數(shù)前面必須加“#”號(hào),以區(qū)別立即數(shù)和直接地址(1)內(nèi)部RAM的低128字節(jié)。對(duì)內(nèi)部RAM的低128字節(jié)單元的間接尋址,只能使用R0或R1做間將存放操作接尋址寄存器,其通過(guò)形式為@Ri(i=0或1);MOVP1,#55HMOVDPTR,#201*HMOVR1,20HMOVA,P1CLRAMOVP1,R4MOVA,R1尋址區(qū)域指令舉例數(shù)的內(nèi)存單元(2)外部RAM的64K字節(jié)。對(duì)外部RAM的64KMOVA,@R0寄存器的地址放在寄字節(jié)的間接尋址,使用DPTR作間接尋址寄存器,MOVXA,@DPTR間接尋址存器中,指令其形式為@DPTR;MOVXA,@R0中只給出該寄(3)外部RAM的低256字節(jié)。外部RAM的低256存器字節(jié)是一個(gè)特殊的尋址區(qū),除了可以使用DPTR作間接尋址寄存器外,還可以使用R0或R1作間接尋址寄存器將基寄存器變址尋址與變址寄存器的內(nèi)容相(1)變址尋址是專(zhuān)門(mén)針對(duì)程序存儲(chǔ)器的尋址方式,所以只能對(duì)程序存儲(chǔ)器進(jìn)行尋址,尋址范圍為64K字節(jié);MOVCA,@A+PC加,結(jié)果作為操作數(shù)的地址(2)變址尋址指令只有2條:MOVCA,@A+PCMOVCA,@A+DPTR將程序計(jì)數(shù)器PC的當(dāng)前內(nèi)容與指令相對(duì)尋址中的操作數(shù)相加,其結(jié)果作為跳轉(zhuǎn)指令的轉(zhuǎn)移地址(1)內(nèi)部RAM的位尋址區(qū),地址范圍是20H~2FH,共16個(gè)RAM單元,每個(gè)單元包括8個(gè)位,共按位進(jìn)行的位尋址操作(2)特殊功能寄存器SFR中的11個(gè)寄存器可以位尋址,包括83個(gè)位計(jì)128個(gè)位,位地址為00H~7FH;MOVC,0D0HMOVC,0DOH.0MOVC,PMOVC,PSW.0專(zhuān)門(mén)為改變程序執(zhí)行方向而設(shè)置的SJMP54H
擴(kuò)展閱讀:課題MCS-51型單片機(jī)的尋址方式
廣告燈設(shè)計(jì)軟件部分
課題MCS-51型單片機(jī)的尋址方式
授課方式:講授教學(xué)目的:
1.讓學(xué)生了解匯編語(yǔ)言指令的格式;2.讓學(xué)生掌握單片機(jī)指令的7種尋址方式。重點(diǎn)、難點(diǎn):
1.單片機(jī)的格式和指令中的常用符號(hào);2.單片機(jī)指令7種尋址方式的特點(diǎn)和區(qū)別。教學(xué)過(guò)程:一、導(dǎo)入
前段時(shí)間我們學(xué)習(xí)了單片機(jī)的硬件方面的內(nèi)容,這次課開(kāi)始我們就要開(kāi)始接觸軟件方面的內(nèi)容。試想舞臺(tái)燈光的控制,不同燈的點(diǎn)亮來(lái)實(shí)現(xiàn)不同的場(chǎng)景需求,如果我們從分析8個(gè)指示燈全部電亮為切入點(diǎn),那么要實(shí)現(xiàn)這個(gè)要求,我們首先要學(xué)習(xí)的8051單片機(jī)的軟件語(yǔ)言形式。所以這次課我們的主要內(nèi)容學(xué)習(xí)什么是指令以及它的一些表示形式以及單片機(jī)的7種尋址方式,為我們后續(xù)的控制目標(biāo)打下基礎(chǔ)。二、概述
指令:是指示計(jì)算機(jī)執(zhí)行某種操作的命令。
指令系統(tǒng):一臺(tái)計(jì)算機(jī)所具有的全部指令的集合,稱(chēng)為指令系統(tǒng)。程序:是各種指令的有序組合。三、指令的表示形式及匯編1.指令的表示形式
指令可以用匯編語(yǔ)言和機(jī)器語(yǔ)言?xún)煞N形式表示。設(shè)計(jì)者編寫(xiě)、閱讀和修改程序時(shí),采用匯編語(yǔ)言格式。當(dāng)計(jì)算機(jī)執(zhí)行程序時(shí),則采用機(jī)器語(yǔ)言形式。
指令的匯編語(yǔ)言形式是用助記符表示各條指令,用助記符編寫(xiě)的程序稱(chēng)為匯編語(yǔ)言程序(或稱(chēng)源程序)。2.匯編
匯編語(yǔ)言編寫(xiě)的程序要轉(zhuǎn)換成計(jì)算機(jī)能執(zhí)行的機(jī)器碼表示的程序,這種轉(zhuǎn)換稱(chēng)為匯編。反之,稱(chēng)為反匯編。常用的匯編方法有兩種:一是手工匯編,二是機(jī)器匯編。
四、指令的格式及編碼
廣告燈設(shè)計(jì)軟件部分
1.匯編語(yǔ)言的語(yǔ)句格式
匯編語(yǔ)言的語(yǔ)句即所用指令的格式如下:
[標(biāo)號(hào):]操作碼[目的操作數(shù)][,源操作數(shù)][;注釋]
其中,帶方括號(hào)[]的部分可以根據(jù)實(shí)際情況取舍。標(biāo)號(hào)與操作碼之間用“:”作分隔符,也可以加上若干空格。操作碼和操作數(shù)之間可以用空格作分隔符。操作數(shù)與操作數(shù)之間以“,”分隔。注釋之前用“;”作分隔符。
(1)標(biāo)號(hào)標(biāo)號(hào)是表示該指令位置的符號(hào)地址,標(biāo)號(hào)后必須加“:”。(2)操作碼操作碼表示指令所實(shí)現(xiàn)的操作功能,操作碼助記符由表示指令操作功能的英文縮寫(xiě)組成。
(3)操作數(shù)操作數(shù)指出了參加操作的數(shù)據(jù)來(lái)源和操作結(jié)果存放的位置。(4)注釋注釋是對(duì)語(yǔ)句的解釋說(shuō)明,必須以“;”為開(kāi)始。2.指令編碼格式
令編碼格式即機(jī)器語(yǔ)言指令格式。指令按編碼長(zhǎng)短可以分為如下3種編碼格式:
(1)單字節(jié)指令(2)雙字節(jié)指令(3)三字節(jié)指令五、常用符號(hào)
為了便于學(xué)習(xí)和閱讀指令,MCS-51的指令系統(tǒng)中,采用了以下符號(hào):1.Rn(n=1~7):指當(dāng)前選中的工作寄存器組R0~R7中之一。
2.Ri(i=0~1):指當(dāng)前選中的工作寄存器組中能用作間址寄存器的R0、R1。3.#data:8位立即數(shù)。4.#data16:16位立即數(shù)。
5.direct:片內(nèi)RAM單元(包括SFR)的直接地址。6.addr11:11位目的地址。7.addr16:16位目的地址。
8.rel:補(bǔ)碼形式表示的8位地址偏移量。以下一條指令第一字節(jié)地址為基址,地址偏移量范圍為-128~+127。
9.bit:片內(nèi)RAM或SFR的直接尋址位地址。10.@:間接尋址方式中,表示間址寄存器的符號(hào)。
11./:位操作指令中,表示對(duì)該位先求反再參與操作,但不影響該位原值。
廣告燈設(shè)計(jì)軟件部分
12.C:最高位進(jìn)位或借位標(biāo)志位或布爾處理器的累加器13.(×):表示由×所指地址單元或寄存器中的內(nèi)容。
14.((×)):表示以×所指地址單元或寄存器中的內(nèi)容為地址的存儲(chǔ)單元中的內(nèi)容。
15.→:數(shù)據(jù)傳送方向。六、尋址方式
MCS-51單片機(jī)指令主要有以下7種尋址方式:1.立即尋址
在這種尋址方式中,操作數(shù)為立即數(shù),即操作數(shù)直接出現(xiàn)在指令中。操作數(shù)為8位或16位數(shù)據(jù),用符號(hào)“#”表示標(biāo)識(shí),以區(qū)別直接地址。例1MOVA,#3AH;3AH→A
這條指令是把3AH這個(gè)數(shù)送入累加器A中。
ROM
A操作碼74H操作數(shù)3AH3AH3AH圖1
2.直接尋址
直接尋址就是在指令中直接給出了操作數(shù)的地址。例2MOVA,70H;(70H)→A
這條指令把70H單元內(nèi)容3AH送入累加器A中
圖2
3.寄存器尋址
ROM
內(nèi)部RAM操作碼E5H操作數(shù)70H70HA3AH3AH廣告燈設(shè)計(jì)軟件部分
寄存器尋址是指定某一可尋址的寄存器的內(nèi)容為操作數(shù)。例3MOVA,R5;(R5)→A
ROM
低三位為101R561HA操作碼EDH61H圖3
4.寄存器間接尋址
寄存器間接尋址是把指令中指定的寄存器的內(nèi)容作為操作數(shù)的地址。例4MOVA,@R1;((R1))→A
ROM
內(nèi)部RAM
最低位為1R175H3FHA操作碼E7H75H圖43FH5.變址間接尋址
變址間接尋址是以某個(gè)寄存器的內(nèi)容為基地址,然后在這個(gè)基地址的基礎(chǔ)上加上地址偏移量形成真正的操作數(shù)地址。
例5MOVCA,@A+PC;((A)+(PC))→A
MOVCA,@A+DPTR;((A)+(DPTR))→A
ADPTRROM
02F1H+
0302H1AHA1AH
11H圖5
6.相對(duì)尋址
相對(duì)尋址是將程序計(jì)數(shù)器PC的當(dāng)前值(是指執(zhí)行完這條相對(duì)轉(zhuǎn)移指令后的下一條指令的地址)為基準(zhǔn),與指令中的偏移量相加,其結(jié)果作為指令的轉(zhuǎn)移地
廣告燈設(shè)計(jì)軟件部分
址。指令給出的偏移量有正負(fù)號(hào),它在指令中以補(bǔ)碼形式給出,所轉(zhuǎn)移的范圍為-128~+127。
例6JCrel
這條指令表示若(C)=0,則不跳轉(zhuǎn),程序繼續(xù)向下執(zhí)行;若(C)=1,則以PC中的當(dāng)前值為基地址,加上偏移量rel后所得到的結(jié)果為該轉(zhuǎn)移指令的目的地址。
+2+30HPC0100HROM
源地址
0100H40H
0101H30H0102H
PC0132H0132H目的地址
圖6
正向跳轉(zhuǎn)時(shí):
rel=目的地址-源地址-2=地址差-2
反向跳轉(zhuǎn)時(shí),目的地址小于源地址,rel用負(fù)數(shù)的補(bǔ)碼表示:
rel=(目的地址-(源地址+2))補(bǔ)=FFH-(源地址+2-目的地址)+1
=FEH-│地址差│7.位尋址
位尋址是指對(duì)片內(nèi)RAM的位尋址區(qū)和某些有位地址的特殊功能寄存器進(jìn)行位操作時(shí)的尋址方式。
例7MOVC,07H
CLRACC.0
第一條指令功能是把內(nèi)部RAM20H單元的D7位(位地址為07H)的內(nèi)容傳到位累加器C中,第二條指令功能是將累加器A的D0位(位地址為E0H)清0。
廣告燈設(shè)計(jì)軟件部分
內(nèi)部RAM
20H10000000(07H)=1C1圖7
小結(jié):
1.編程者閱讀、編輯、修改用匯編語(yǔ)言源程序,單片機(jī)直接運(yùn)行機(jī)器語(yǔ)言程序,F(xiàn)一般采用匯編軟件將匯編語(yǔ)言源程序轉(zhuǎn)化為機(jī)器語(yǔ)言。2.51系列單片機(jī)7種尋址方式的特點(diǎn)和區(qū)別。
友情提示:本文中關(guān)于《MCS-51單片機(jī)尋址方式小結(jié)》給出的范例僅供您參考拓展思維使用,MCS-51單片機(jī)尋址方式小結(jié):該篇文章建議您自主創(chuàng)作。
來(lái)源:網(wǎng)絡(luò)整理 免責(zé)聲明:本文僅限學(xué)習(xí)分享,如產(chǎn)生版權(quán)問(wèn)題,請(qǐng)聯(lián)系我們及時(shí)刪除。