久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > 6502單片機編程

6502單片機編程

作者: 時間:2016-11-24 來源:網絡 收藏
6502寄存器

1.累加寄存器A

本文引用地址:http://cqxgywz.com/article/201611/320816.htm

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

在6502匯編中,這個寄存器應該算是用的最多的

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

2.變址寄存器X

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

3.變址寄存器Y

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

4.程序計數器PC

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

5.堆棧指針S

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

6.標志寄存器P

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

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

76543210

NV BDIZC

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

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

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

V--溢出標志.指令執行后若產生溢出,則次標志位被置1

N--負數標志.指令執行完畢后,若結果最高位為1,則該位置1

下面我們舉例來說明:

例:兩個正數61,4A相加

01100001

+01001010

----------

=10101011

兩個正數相加,為什么結果變為負數呢?這是也61+4A=AB,超過了八位寄存器所能表示的最大正數7F,而產生了溢出,那么這時V=1,結果不是0,那么Z=0,結果最高位為1,那么N=1,結果最高位沒有進位,那么C=0

標志位常常在執行條件轉移指令時做為條件判斷的依據.這在后面的指令系統中會講到.



關鍵詞: 6502單片機編

評論


技術專區

關閉