新聞中心

6502單片機編程

作者: 時間:2016-11-24 來源:網(wǎng)絡(luò) 收藏
6502寄存器

1.累加寄存器A

本文引用地址:http://m.butianyuan.cn/article/201611/320816.htm

這是個8位寄存器,既然是8位,那么說明該寄存器中只能存儲一個(00-FF)之間的立即數(shù).它與算術(shù)邏輯運算單元一起完成各種算術(shù)邏輯運算,它既可存放操作前的初始數(shù)據(jù),也可存放操作結(jié)果,所以稱為累加器.

在6502匯編中,這個寄存器應(yīng)該算是用的最多的

大家也不要管那么多,只要知道有這個寄存器,該寄存器可以存放一個00-FF之間的立即數(shù)就可以了.

2.變址寄存器X

也是8位寄存器,它在編程中常被當作一個計數(shù)器來使用.它可以由指令控制而被置成一個常數(shù),并能方便的用加1,減1,比較操作來修改和測試其內(nèi)容,以使得程序能夠方便靈活的處理數(shù)據(jù)塊,表格等問題.

3.變址寄存器Y

用法和變址寄存器X一樣,只不過在有些情況下,比如程序中要同時處理兩個以上的數(shù)據(jù)塊時,一個變址寄存器顯得不夠,所以6502中有兩個用于變址的寄存器X和Y.

4.程序計數(shù)器PC

它是6502中唯一的16位寄存器,PC是用來存放指令地址碼的寄存器,由于程序的執(zhí)行一般為順序執(zhí)行方式,每取出一個指令字節(jié)后PC即自動加1,為取下一個指令字節(jié)做好準備,所以程序計數(shù)器PC中的內(nèi)容往往是指向下一個指令字節(jié)地址,但在執(zhí)行轉(zhuǎn)移指令時,PC中將被放進要轉(zhuǎn)移的目標地址.

5.堆棧指針S

它是用來指示堆棧棧頂位置的寄存器,由于6502規(guī)定堆棧設(shè)在第1頁存儲器中,所以堆棧指針S也是8位寄存器只用來指出堆棧位置的低8位地址.S具有數(shù)據(jù)進棧時自動減1,出棧時自動加1的功能.

6.標志寄存器P

這也是8位的寄存器,但是只用了其中的7位,第5位空著不用.

每條指令在執(zhí)行之后往往會發(fā)生進位溢出,結(jié)果為0,或是結(jié)果為負數(shù)(大于7F的數(shù)叫負數(shù))的情況.指令執(zhí)行完后常常要保留這些情況作為條件分支的依據(jù),標志寄存器P就是為了適應(yīng)這需要而設(shè)計的,在寄存器P中有以下7個標志位,不過我這里只介紹其中的5位

76543210

NV BDIZC

C--進位標志.指令執(zhí)行完畢后的最高進位狀態(tài),若最高位有進位則使C=1,若最高位無進位則使C=0

N--零標志.指令執(zhí)行完畢后結(jié)果為0,那么Z=1;否則Z=0.

I--中斷標志.此位置0表示允許中斷,置1表示禁止中斷,但非屏蔽中斷不受次約束

V--溢出標志.指令執(zhí)行后若產(chǎn)生溢出,則次標志位被置1

N--負數(shù)標志.指令執(zhí)行完畢后,若結(jié)果最高位為1,則該位置1

下面我們舉例來說明:

例:兩個正數(shù)61,4A相加

01100001

+01001010

----------

=10101011

兩個正數(shù)相加,為什么結(jié)果變?yōu)樨摂?shù)呢?這是也61+4A=AB,超過了八位寄存器所能表示的最大正數(shù)7F,而產(chǎn)生了溢出,那么這時V=1,結(jié)果不是0,那么Z=0,結(jié)果最高位為1,那么N=1,結(jié)果最高位沒有進位,那么C=0

標志位常常在執(zhí)行條件轉(zhuǎn)移指令時做為條件判斷的依據(jù).這在后面的指令系統(tǒng)中會講到.



關(guān)鍵詞: 6502單片機編

評論


技術(shù)專區(qū)

關(guān)閉