基礎(chǔ)篇:關(guān)于51單片機(jī)尋址方式介紹
計(jì)算機(jī)的指令系統(tǒng)是表征計(jì)算機(jī)性能的重要指標(biāo),每種類型計(jì)算機(jī)都有自己的指令系統(tǒng)。MCS 51單片機(jī)的指令系統(tǒng)是一個(gè)具有 255 種代碼的集合,絕大多數(shù)指令包含兩個(gè)基本部分:操作碼和操作數(shù)。操作碼表明指令要執(zhí)行的操作性質(zhì);操作數(shù)說明參與操作的數(shù)據(jù)或數(shù)據(jù)所存放的地址。MCS 51 指令系統(tǒng)中所有指令若以機(jī)器語言形式表示,可分為單字節(jié)、雙字節(jié)、三字 節(jié) 3 種格式。
所謂尋址方式,就是尋找操作數(shù)地址的方式,在用匯編語言編程時(shí),數(shù)據(jù)的存放 、傳送、運(yùn)算都要通過指令來完成。編程者必須自始至終都要十分清楚操作數(shù)的位置 ,以及如何將它們傳送到適當(dāng)?shù)募拇嫫魅⑴c運(yùn)算。每一種計(jì)算機(jī)都具有多種尋址方式 。尋址方式的多少是反映指令系統(tǒng)優(yōu)劣的主要指標(biāo)之一。尋址方式是匯編語言程序設(shè)計(jì)最基本的內(nèi)容之一,必須要十分熟悉。
在 MCS 51 單片機(jī)指令系統(tǒng)中,有以下 7 種尋址方式:
(1) 立即尋址;
(2) 直接尋址;
(3) 寄存器尋址;
(4) 寄存器間接尋址;
(5) 基址寄存器加變址寄存器間接尋址;
(6) 相對(duì)尋址;
(7) 位尋址。
以下逐一介紹各種尋址方式。
1.立即尋址
立即尋址方式是指操作數(shù)包含在指令字節(jié)中。跟在指令操作碼后面的數(shù)就是參加運(yùn)算的數(shù),該操作數(shù)稱為立即數(shù)。立即數(shù)有 1 字節(jié)和 2 字節(jié)兩種可能,例如指令:
MOV A ,# 3AH
MOV DPTR ,# 0DFFFH
上述兩條指令均為立即尋址方式 ,第一條指令的功能是將立即數(shù) 3AH 送 累加器 A中,第二條指令的功能是將立即數(shù) 0DFFFH 送數(shù)據(jù)指針 DPTR 中(0DFH→ DPH ,0FFH → DPL)。
2.直接尋址
在指令中直接給出操作數(shù)的地址 ,這種尋址方式就屬于直接尋址方式 。在這種方式中,指令的操作數(shù)部分直接是操作數(shù)的地址。
在 MCS 51 單片機(jī)指令系統(tǒng)中,直接尋址方式中可以訪問兩種存儲(chǔ)器空間:
(1) 內(nèi)部數(shù)據(jù)存儲(chǔ)器的低 128 個(gè)字節(jié)單元(00H~7FH)。
(2) 特殊功能寄存器。特殊功能寄存器只能用直接尋址方式進(jìn)行訪問。例如: MOV A,3AH
3.寄存器尋址
在該尋址方式中,參加操作的數(shù)存放在寄存器里。寄存器包括 8 個(gè)工作寄存器 R0~R7 、 累加器 A 、寄存器 B、數(shù)據(jù)指針 DPTR 和布爾處理器的位累加器 C 。例如:
INCR0
4.寄存器間接尋址
在這種尋址方式中,寄存器的內(nèi)容為操作數(shù) 的地址 。寄存器間接尋址只能使用寄存器 R0 、R1 作為地址指針,尋址內(nèi)部 RAM 區(qū) 的數(shù)據(jù) ;當(dāng)訪問外部 RAM 時(shí),可使用 R0 、R1 及 DPTR 作為地址指針。寄存器間接尋址符號(hào)為“@”,例如:
5.基址寄存器加變址寄存器間接尋址
這種尋址方式用于訪問程序存儲(chǔ)器中的數(shù)據(jù)表格,它以基址寄存器 DPTR 或 PC 的 內(nèi) 容為基本地址,加上變址寄存器 A 的內(nèi)容作為操作數(shù)的地址,例如:
MOVC A,@A+DPTR
JMP @A+DPTR
MOVC A,@A+PC
6.相對(duì)尋址
在 MCS 51 指令系統(tǒng)中設(shè)有轉(zhuǎn)移指令,分為直接轉(zhuǎn)移和相對(duì)轉(zhuǎn)移指令,在相對(duì)轉(zhuǎn)移指令中采用相對(duì)尋址方式。這種尋址方式是 以 PC 的 內(nèi)容為基本地址,加上指令中給定的偏移量作為轉(zhuǎn)移地址。指令中給出的偏移量是一個(gè) 8 位帶符號(hào)的常數(shù),可正可負(fù),其范 圍 為-128~+127 。例如:
JC80H
7.位尋址
該種尋址方式中,操作數(shù)是內(nèi)部 RAM 單元中某一位的信息。例如:
CLRC
MOV C,30H