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

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > 6502單片機編程--偽指令2

6502單片機編程--偽指令2

作者: 時間:2016-11-24 來源:網絡 收藏
**宏指令**
令我感到極度興奮的是 6502_Macroassembler &Simulator有強大的宏功能.這無疑使程序
的編寫又簡單方便許多了.
我們先說說宏的格式
宏名:.MACRO 宏虛參數1,宏虛參數2,宏虛參數3.....
宏體
.ENDM
這里.MACRO.ENDM必須成對出現
宏調用的格式:
宏名宏實參數1,宏實參數2,宏參數3
具有宏調用的源程序被編譯時,每個宏調用將被編譯程序展開,宏展開實際上是宏定義時設計的宏體去代替相應的宏指令名,并且用實際參數去取代虛參數,以形成符合功能并可以被執行的實際代碼
我們舉例說明:
實現中斷指令 INT
大家知道,現在的6502編譯器都不支持INT指令,給書寫造成不便,不過現在我們可以用宏來實現
.ORG $0000
INT:.MACRO INT_PARAM
.DB $00
.DW INT_PARAM
.ENDM
說明,這里 INT 是宏名,注意后面要接 : ,INT_PARAM 是虛參數,由于INT的機器碼是 00,所以我們在宏體中 .DB $00,比如 INT $C008,機器碼是 00 08 C0,所以我們 .DW INT_PARAM.這樣,我們實現 INT 指令,例如我們在程序里輸入 INT $C008,就和文曲星里的 INT $C008是一樣的功能.
我再舉個例子,6502中沒有寄存器X直接入堆棧和彈出堆棧功能的指令,這里我們用宏實現
.ORG $0000
PHX:.MACRO
TXA
PHA
.ENDM
PLX:.MACRO
PLA
TAX
.ENDM
MAIN:PHX
...
PLX
RTS
看到了吧,我們在程序中就可以用 PHX,PLX
雖然宏的功能比較大,但是我們不可以亂用,因為宏和子程序是不一樣的,子程序由 JSR 調用,RTS 返回,所以匯編后子程序的機器碼只占有一個程序段,不管調用多少次都是如此,比較節省內存.宏指令每調用一次都要占一個程序段,調用次數越多,占用內存就越多,所以從開銷來說,子程序優于宏指令,但從程序的執行時間來分析,每調用一次子程序都要保護和恢復返回地址,要消耗一些時間宏指令調用不需要這個過程,執行時間較短,所以從執行時間來看,宏指令又優于子程序.
所以說,當某一需要多次訪問的程序段較長,訪問次數又不是太多時,選用子程序比較好;當某一需要多次訪問程序段較短,訪問次數又很頻繁時,選用宏指令比較好.


評論


技術專區

關閉