80C51單片機指令系統的7種尋址方式

發(fā)布時間:2024-03-08
尋址方式就是尋找操作數或指令地址的方式。尋址方式包含兩方面的內容:一是操作數的尋址,二是指令地址的尋址(如轉移指令、調用指令)。尋址方式是計算機性能的具體體現,也是編寫匯編語言程序的基礎,必須非常熟悉并靈活運用。
對于兩操作數指令,源操作數有尋址方式,目的操作數也有尋址方式。若不特別聲明,后面提到的尋址方式均指源操作數的尋址方式。
80c51單片機指令系統共有7種尋址方式,包括:立即尋址、寄存器尋址、直接尋址、寄存器間接尋址、變址尋址、相對尋址和位尋址。現以7條指令為例說明這7種尋址方式。
(1)立即尋址:將操作數直接寫在指令中。
如指令①: mov a,#3ah 執(zhí)行的操作是將立即數3ah送到累加器a中,因為指令中有立即數3ah,所以稱此尋址方式為立即尋址。注意,立即數前面必須加“#”號,以區(qū)別立即數和直接尋址。該指令的執(zhí)行過程如圖1所示。
圖1 立即數尋址示意圖
(2)寄存器尋址:是指將指令操作數存放于寄存器中,寄存器包括工作寄存器r0~r7、累加器a、通用寄存器b、地址寄存器dptr等。
如指令②: mov a,r0 ;(a)←(r0)
該指令將寄存器r0中的數送入累加器a中,因為指令源操作數為寄存器r0,所以稱此尋址方式為寄存器尋址。
如果程序狀態(tài)寄存器psw的rs1rs0=00(選中第0組工作寄存器,對應地址為(00h~07h),設ram區(qū)00h的內容為20h,則執(zhí)行mov a,r0指令后,累加器a中的內容變?yōu)?0h。該指令執(zhí)行過程如圖2所示。
圖2 寄存器尋址示意圖
(3)直接尋址 :是指把存放操作數的內存單元的地址直接寫在指令中。在80c51單片機中可以直接尋址的存儲器主要有內部ram區(qū)和特殊功能寄存器sfr區(qū)。
如指令③:mov a,30h ;(a)←(30h)
該指令將地址為30h的存儲單元的內容送入累加器a,因為指令源操作數為地址直接給出的存儲單元,故稱此尋址方式為直接尋址。若(30h)=3ah,指令③執(zhí)行后,(a)=3ah,該指令的執(zhí)行過程如圖3所示。
圖3 直接尋址示意圖
(4)寄存器間接尋址:將存放操作數的存儲單元的地址放在寄存器中,指令中只給出該寄存器。執(zhí)行指令時,首先根據寄存器的內容,找到所需要的操作數地址,再由該地址找到操作數并完成相應操作。在80c51指令系統中,用于寄存器間接尋址的寄存器有r0、r1和dptr,稱為寄存器間接尋址寄存器。
注意:間接尋址寄存器前面必須加上符號“@”。
如指令④:mov a,@r0 ;(a)←((r0))
該指令將以r0中內容為地址的存儲單元的內容送入累加器a中,因為指令操作數是存儲單元,其地址由寄存器r0間接給出,所以稱此尋址方式為寄存器間接尋址。
設r0=3ah,內部ram 3ah中的值是65h,則指令mov a,@r0的執(zhí)行結果是累加器a的值為65h,該指令的執(zhí)行過程如圖4所示。
圖4 寄存器間接尋址示意圖
(5)變址尋址 :是指將基址寄存器與變址寄存器的內容相加,結果作為操作數的地址。dptr或pc是基址寄存器,累加器a是變址寄存器。這種尋址方式稱為變址尋址。該尋址方式主要用于查表操作。
當執(zhí)行指令⑤時,設(a)=50h ,(dptr)=2007h,(2057h)=60h ,指令⑤執(zhí)行后movc a,@a+dptr ;(a)←((a)+(dptr))=(50h+2007h)=(2057h)=60h。
該指令將dptr中的基地址2007h與a中的偏移地址50h相加,形成實際地址2057h,再將地址為2057h的存儲單元中的內容60h送入累加器a中。顯然這種尋址方式稱為變址尋址。該指令執(zhí)行過程如圖5所示。
圖5 變址尋址示意圖
(6)相對尋址 :是指程序計數器pc的當前內容與指令中的操作數相加,其結果作為跳轉指令的轉移地址(也稱目的地址)。這種尋址方式稱為相對尋址。該類尋址方式主要用于跳轉指令。
如指令⑥:sjmp rel ;(pc)←(pc)+rel
當執(zhí)行指令⑥時,設當前(pc)=2009h,而相對偏移量rel=02h,則執(zhí)行該指令后,(pc)=2009h+02h=200bh,即程序由地址為2009h處跳轉到200bh處執(zhí)行,其跳轉的距離為相對偏移量rel=02h。由于指令中的操作數為相對偏移量rel ,所以稱這種尋址方式為相對尋址。該指令的執(zhí)行過程如圖6所示。
圖6 相對尋址示意圖
(7)位尋址 :指令中操作數為8位二進制數某一位,稱為位尋址。80c51單片機中,操作數不僅可以按字節(jié)為單位進行操作,也可以按位進行操作。當我們把某一位作為操作數時,這個操作數的地址稱為位地址。
位尋址區(qū)包括專門安排在內部ram中的兩個區(qū)域:一是內部ram的位尋址區(qū),地址范圍是20h~2fh,共16個ram單元,位地址為00h~7fh;二是特殊功能寄存器sfr中有11個寄存器可以位尋址。參見位地址的定義。
例如:setb acc.0 ;(acc.0)←1 該指令將累加器的最低位acc.0置1,由于指令中的操作數為一位二進數,故稱此尋址方式為位尋址。該指令的執(zhí)行過程如圖7所示。
圖7 位尋址示意圖
由尋址方式的討論可知,操作數按類型可分為:立即數、寄存器、存儲單元、位操作數、相對偏移量。而存儲單元地址又可有直接尋址,寄存器間接尋址,變址尋址三種。
各種尋址方式對應操作數的指令符號規(guī)定如下。
(1)#data:表示8位立即數,如#3ah。
(2)#data16:表示16位立即數,即0000h~ffffh。
(2)rn:表示寄存器r0~r7。
(3)direct:表示片內存儲單元的直接地址, 如30h。
(4)addr16,addr11:表示指令中的16位或11位轉移地址。
(5)rel:表示相對偏移量,如 02h。
(6)bit:表示位地址,如acc.0。
(7)( ):表示存儲單元的內容,如(30h)=40h。
(8)(( )):表示間接尋址的存儲單元內容,((r0))=(7fh)=50h。
上一個:導線測量現場踏勘要了解哪些工作內容?
下一個:acer進入bios,宏基電腦進入bios應該怎么操作

小米手機怎么設置手動更新軟件(小米手機怎么打開手動更新)
適制顯毫類綠茶的品種
windows10激活密鑰專業(yè)版(最新w10專業(yè)版激活密鑰工具)
意大利sirai電磁閥l134
高精度超聲波風向風速儀-一款便于安裝的超聲波風向風速儀
什么云服務器便宜又快
mbi5353gfn-b_(mbi(臺灣聚積))mbi5353gfn-b中文資料_價格_
手持GPS使用方法
放大電路靜態(tài)工作點對波形失真的影響
如何每天定時發(fā)送微信群消息(如何每天定時發(fā)送微信信息)
十八禁 网站在线观看免费视频_2020av天堂网_一 级 黄 色 片免费网站_绝顶高潮合集Videos