單片機嘗試編譯一個程序到外部數(shù)據(jù)存儲器2100h 單元中高4,位置1,剩余位...MOVPTR,編寫如何實現(xiàn)一個以1000H 單元開頭的程序?將A放入2100H 單元,即2100h 單元中高位4,其余位清零。
2、單片機題(求詳細解答
movp2,# 20h movr0的高位地址,# 00h movxa的低位地址,@ r0取80H的地址內容。執(zhí)行前兩條指令是將地址放入寄存器;P2是高8位地址,R0是低8位地址。@R0用R0中的地址表示內存單元的內容,即80H;第三條指令是將片外2000H中的內容80H放入累加器A..
同意樓上的故事,單片機書里有詳細講解。你可以用keil51調試一下,就知道了。A中的內容是原00H中的內容。用過:MOVXA,@R0,表示外部數(shù)據(jù)存儲器以“三總線”的形式與單片機相連?!叭偩€”的形式是用P2輸出高8位地址,P0通過74373輸出低8位地址,P0輸入輸出數(shù)據(jù)。所以MOVXA,@R0就是把2000H 單元的內容拿出來換80H。
movdptr,#2100hmova,#0f0hmovx@dptr,a .直接給他值ff00h就行了。MOVDPTR,# 2100H將2100h地址放入DPTR寄存器MOVA,# 0F0H將A的高四位清為1,低四位清為MOV@DPTR,A;將A放入2100H 單元,即2100h 單元中高位4,其余位清零。
別這么復雜;org 0000 hsjmpmainorg 0030h main:movdptr,# 1000h定義單元 MOVR1的第一個地址,# 2000H定義被傳輸?shù)牡谝粋€地址單元 MOVR2,# 64h100 單元 data,十六進制表示為loop: movxa,@ dptrmovx @ R1,aincdptrincr1djnzr2,loops JMP $。
org 0000 hsjmpmainorg 0100h main:mov r0,# 1000H定義單元 MOVR1的第一個地址,# 2000H定義被傳輸?shù)牡谝粋€地址單元 MOVR3,# 64h100條數(shù)據(jù)單元,十六進制表示為loop: movptr,r0movxa,@ dptrmovptr,r1movx @ dptr,a inc r0inc r1djnzr3。