1樓:匿名使用者
mov 60h, 40h 是直接定址方式方式mov a, #58hmov ro, #0b0hmov @ro, amov 0b0h, #28h結果是:(0b0h)=28h;p3=58h(這個不太確定)內部ram七種方法都可以的啊,外部資料儲存器只能和a累加器進行資料傳送
2樓:匿名使用者
微控制器有七種定址方式分別是:1.暫存器定址例如:
mov a,r0;2.直接定址例如: mov a,4fh;3.
暫存器間接定址 mov a,@r04.立即數定址 mov a,#0ffh5.變址定址(典型的是查表指令) mov a,@a+dptr6.
相對定址 sjmp $7.位定址 setb p0.0; mov 60h,40h;是屬於直接定址;(直接用記憶體單元的位址來尋找對應的內容) mov a, #58hmov ro, #0b0hmov @ro, amov 0b0h, #28h而執行完以上指令後結果是:
(0b0h)=p3=28h;因為在8051微控制器中p3口是特殊功能暫存器(也佔一記憶體)它的位址剛好是0b0h;程式的最後給0b0h賦了立即數28h;
51系列微控制器定址方式的定址方式
3樓:浪子菜刀47鑑
立即數定址又稱立即定址,即指令中直接給出運算元的定址方式稱為立即數定址。在51系列微控制器指令系統中,立即數用前面加「#」號的8位數表示(#data,如#30h)或16位數(#data16,如#2052h)表示。舉例說明立即數定址方式,以傳送指令為例。
例:mov a, #80h ;80h——>a
mov dptr, #2000h ;2000h——>dptr 指令中直接給出運算元位址(dir)的定址方式稱為直接定址。定址物件為:1 內部資料儲存器,在指令中以直接位址表示;2特殊功能暫存器sfr,在指令中用暫存器名稱表示。
下面舉例說明。
例:mov a, 25h ;內部ram的(25h)——>a
mov p0, #45h ;45h——>p0 ,p0為直接定址的sfr
mov 30h,20h ;內部ram的(20h)——>(30h) 以通用暫存器的內容為運算元的定址方式稱為暫存器定址。通用暫存器包括:a、b、dptr、r0~r7。
其中b暫存器僅在乘法、除法指令中為暫存器定址,在其它指令中為直接定址。a暫存器可以暫存器定址,又可以直接定址(此時寫作acc)。直接定址和暫存器定址的差別在於,直接定址是運算元所在的位元組位址(佔乙個位元組),暫存器定址是暫存器編碼出現在指令碼中。
暫存器定址速度比直接定址要快。除上面所指的幾個暫存器外,其它特殊功能暫存器一律為直接定址。
例:mov a, r0 ;r0——>a,r0為暫存器定址
mul ab ;a×b——>ba,a,b為暫存器定址
mov b, r0 ;r0——>b,r0為暫存器定址,b為直接定址
push acc ;a的內容入棧,a為直接定址
add a, acc ;a為暫存器定址,acc為直接定址 以暫存器中的內容為位址,該位址的內容為運算元的定址方式稱為暫存器間接定址。能夠進行暫存器間接定址的暫存器有:r0、r1、dptr,用前面加@表示,如@r0、@r1、@dptr。
暫存器間接定址的儲存空間包括內部資料儲存器和外部資料儲存器。由於內部資料儲存器共有128位元組,因此用一位元組的r0和r1可間接定址整個空間。而外部資料儲存器最大可達64k,僅r0或r1無法定址整個空間,為此需要由p2埠提供外部ram高8位位址,由r0或r1提供低8位位址,由此共同定址64k位元組範圍。
也可用16位的dptr暫存器間接定址64k位元組儲存空間。
在指令中,是對內部ram還是對外部ram定址,區別在於對外部ram的操作僅有資料傳送指令,並且用movx作為操作助記符。
例:mov @r0, a ;a——>以r0內容為位址的內部ram中
movx @dptr, a ;a——>以dptr內容為位址的外部ram中 由暫存器dptr或pc中的內容加上a累加器內容之和而形成運算元位址的定址方式稱為變址定址。變址定址只能對程式儲存器中的資料進行定址操作。由於程式儲存器是唯讀存貯器,因此變址定址只有讀操作而無寫操作。
在指令符號上採用movc的形式。
例:movc a, @a+dptr ;(a+dptr)——>a
movc a, @a+pc ; (pc)+1——pc ((a)+(pc))——>a
圖4 movc a, @a+dptr
圖5 movc a, @a+pc 對位位址中的內容進行位操作的定址方式稱為位定址。由於微控制器中只有內部ram和特殊功能暫存器的部分單元有位位址,因此位定址只能對有位位址的這兩個空間進行定址操作。位定址是一種直接定址方式,由指令給出直接位位址。
與直接定址不同的是,位定址只給出位位址,而不是位元組位址。
例:setb 20h ;1——>20h位
mov 32h, c ;進製cy(即指令中的c)——>32h位 以當前程式計數器pc的內容為基址,加上指令給出的一位元組補碼數(偏移量)形成新的pc值的定址方式稱為相對定址。相對定址方式只修改pc值,故主要用於實現程式的分支轉移。
例:sjmp 08h ;pc+2+08h——>pc (該指令為兩位元組,所以有pc+2)
4樓:
立即定址:mov a, #10h ;直接把10h給a直接定址:mov a,10h ;把位址10h裡的內容給a暫存器定址:
mov a, r1 ;把暫存器r1中的內容給a暫存器相對定址: mov a ;@r1 ,把r1中的內容作為位址,再把位址中的內容給a
相對定址: djnz a , rel ;a=0時,轉向pc+2+rel為相對定址
變址定址: movc a, @a+dptr ;只能用movc位定址: jb acc.
0, rel ; acc.0 = 1時轉向pc+3+rel,判斷一位如acc.0屬於位定址
51微控制器裡TMOD設定問題,51微控制器裡TMOD設定問題
問題1 工作方式0 0x00 工作方式1 0x01 工作方式2 0x02 工作方式3 0x03 問題2 當你選擇好工作方式後,接下來就是設定初始值,方式0 16位加法計數器用了13位,也就是說,可以計算2 13 要想計數更大,使用迴圈即可。同理方式1 16位加法計數器用了16位,方式2是8位的。以上...
51微控制器SBUF什麼意思,51微控制器中SBUF中讀出的資料型別
define 巨集定義 unsigned乙個資料型別 還有就是signed 乙個是有符號 乙個是無符號 int資料型別 sbuf是串列埠接送或者傳送資料暫存器 define 是定義乙個常量 unsigned char 定義乙個字元型變數,unsigned int 定義乙個整數型變數購買sea wol...
51微控制器控制繼電器,51微控制器如何驅動12V繼電器 用三極體實現的電路引數怎麼求?
你的 圖有問題,繼電器是不會吸合的。發光二極和串聯的電阻阻值也大,led不能亮。應該如下圖這樣畫 彙編程式 relay bit p2.0 繼電器控制位reset ljmp main org 000bh mov th0,3ch mov tl0,0b0h djnz r2 back mov r2 20 中...