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位位址。