關於8051的定址問題 |
答題得分者是:mymj
|
fond147
一般會員 發表:11 回覆:4 積分:3 註冊:2004-07-07 發送簡訊給我 |
|
mymj
版主 發表:132 回覆:486 積分:608 註冊:2002-10-25 發送簡訊給我 |
這麼簡單的問題應該找任何一本8051有關的書籍都會告訴你,還是多看一下書吧
8051有5種定址方式:直接定址,間接定址,暫存器定址,立即定址,索引定址
直接定址:在運算元欄中直接指定資料所在位址
例如38H記憶位址內容為68H
mov a,38H 將38H所指位址的內容載入ACC本指令執行後A=68H 間接定址:在運算元欄中使用到R0,R1,SP,DPTR等暫存器,而要存取記憶體內容在指定記憶位址如用到R0,R1,SP,DPTR等暫存器其字首加上@,這些暫存器得內容就是運算元的位址
例如38H記憶位址內容為68H,2238H內容為77H(2238H是外部記憶體)
MOV R0,#38H 立即定址
MOV A,@R0 間接定址 執行後A=68H CLR A
MOV DPTR,#2238H
MOVX A,@DPTR 間接定址 執行後A=77H 暫存器定址:在運算元欄中使用到暫存器庫(BANK0~BANK3)中的暫存器(R0~R7)就是暫存器定址
MOV A,R2
MOV A,R0 立即定址:在運算元欄中使用的資料放在指令中的定址方式.所有立即資料需加#字頭 MOV A,#33H
MOV R0,#28H 索引定址:將基底暫存器(PC,DPTR)的內容加上索引暫存器(ACC)2的內容得到1個新的值,此值就是運算元所在的位址 例2238H內容為77H(2238H是外部記憶體) MOV A,#38H
MOV DPTR,#2230H
MOVC A,@A DPTR 執行後A=77H MYMJ
|
kidspjjuly
一般會員 發表:12 回覆:10 積分:4 註冊:2004-05-06 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |