MOV DPTR,E000H MOVX A,DPTR與MOVX AE000H有什麼區別

時間 2021-05-05 19:06:07

1樓:胖大海君

嘿嘿mov dptr,#e000h;movx a,@dptr與movx a, #e000h有什麼區別?

最大的區別就是乙個是51微控制器的合法指令,另乙個是51微控制器的非法指令

你是想訪問片外資料儲存器,將片外資料儲存器位址為e000h單元的內容傳送給累加器a。

訪問片外資料儲存器必須要使用資料指標dptr做間接暫存器來訪問

mov dptr,#e000h; 首先將要訪問的位址送給指標 即要確定資料指標的指向(e000h的單元)

movx a;使用片外資料儲存器的傳送指令,將指標所指的單元的內容送給累加器a。

因此 以上指令時正確的。

而movx a, #e000h 在8051微控制器的指令表中時不存在的,

movx指令 只能採用暫存器間接定址 即如,@dptr ,@r0; 而不能採用其它定址方式

如: #e000h 立即數定址 e000h 直接定址 都是不對的 ,即違法的。

呵呵 滿意 就選滿意回答啊

2樓:做而論道

mov dptr,#0e000h;

movx a,@dptr

這兩條是正確的寫法。

movx a, #0e000h

這一條,是非法指令。

編寫程式,必須使用指令系統中存在的指令。

自己創造的指令,就是非法指令。

movx a,@dptr和mov a ,@dptr有什麼區別?

3樓:做而論道

movx a,@dptr

mov a,@dptr

有什麼區別?

前者,正確;後者,是非法指令。

4樓:匿名使用者

前者是從片外儲存區(dptr指向的單元)將資料讀到a暫存器;後者是從片內儲存區(dptr指向的單元)將資料讀到a暫存器。具體片內片外的位址範圍,書上或手冊上會有介紹。

movx a,@r0和movx a,@dptr有何區別

5樓:做而論道

主要的區別在於對外輸出位址的方式上。

movx a,@r0

movx a,@r1

只是占用p0口,輸出r0或r1中的8位位址。

而:movx a,@dptr

要占用p0、p2口,輸出dptr中的16位位址。