PIC彙編入門示例

2021-10-03 01:57:18 字數 2595 閱讀 7286

將20h單元低4位取出存入21h,高四位取出存入22h

要點:andlw和swapf

movf     20h,0      ;將20h單元的內容送人w

andlw 0fh ;w高四位清零低4位保持不變

movwf 21h ;將拆分後的低4位送21h

swapf 20h,0 ;將20h單元內容高、低半位元組換位後送w

andlw 0fh ;再將w高四位清0低四位保持不變

movwf 22h ;將拆分後的高四位送22h單元

ram中20h和21h單元存放2個數,找出大著存入22h單元

要點:兩數做減法,判斷標誌位c的值

status    equ      03h      ;定義status暫存器位址為03h

c equ 0 ;定義進製/借位標誌c在status中得位址為0

movf 20h 0 ;將20h單元的內容送人w

subwf 21h 0 ;用21h單元的內容減去w中的內容,結果存在w中

btfss status,c ;若c=1,沒借位,則21h單元中的數大,跳到f21big

goto f20big ;若c=0,有借位,20h單元中得數較大,則跳至f20big

f21big movf 21h,0 ;將21h中的內容存入w暫存器

movwf 22h ;再將它轉存到22h單元

goto stop ;跳過下面兩條指令到程式末尾

f20big movf 20h,0 ;將20h中的內容存入w暫存器

movwf 22h ;再將它轉存到22h單元

stop goto stop ;任務完成,停機,原地踏步

count   equ      20h        ;指定20h單元作為循壞次數計數器(即迴圈變數)

fsr equ 04h ;定義fsr暫存器位址為04h

indf equ 00h ;設定indf暫存器位址為00h

movlw d50 ;把計數器初值50送入w

movwf count ;再把50轉入計數器(作為迴圈變數的操作值)

movlw 30h ;把30h(起始位址)送入w

movwf fsr ;再把30h轉入暫存器fsr(用作位址指標)

next clrf indf ;把以fsr內容為位址所指定的單元清0

decfsz count,1 ;計數值減1,結果為0就跳過到下一條指令到stop處

goto next ;跳轉回去並執行下一次迴圈

stop goto stop ;迴圈結束之後執行該語句,實現停機

3個數最大者放入40h單元

status    equ        03h

c equ 00h

x equ 20h

y equ 21h

z equ 22h

main    movf    30h,0

movwf x

movf 21h,0

movwf y

call sub

movf z,0

movwf x

movf 32h,0

movwf y

call sub

movf z,0

movwf 40h

stop goto stop

子程式:(入口引數:x和y,出口引數:z)

sub     movf     x,0        ;將x內容送人w

subwf y,0 ;y內容減去w內容,結果存入w

btfss status,c ;若c=1,沒有發生借位,執行下一條,否則跳轉

goto x_big

y_big movf y,0 ;將y中的資料送入w

movwf z ;再將它轉存到z

goto theend ;跳過下面兩條到末尾

x_big movf x,0 ;將x中的資料送入w

movwf z ;再將它轉存到z

theend return ;子程式返回

彙編入門指南

2.介紹 常見概念 3.推薦資源 本教程按照作者親身經歷和 x86組合語言 從實模式到保護模式 寫成 為什麼要學彙編?眾所周知,彙編是比較早期的一種程式語言和低階語言,雖然比不上高階語言的可讀性和效率,但這種語言作為最接近機器碼的語言可以很好的幫助我們了解最底層相關機制。mov指令是資料傳送指令 如...

彙編入門總結(5)

四 串指令 ds si 源串段暫存器 源串變址.es di 目標串段暫存器 目標串變址.cx 重複次數計數器.al ax 掃瞄值.d標誌 0表示重複操作中si和di應自動增量 1表示應自動減量.z標誌 用來控制掃瞄或比較操作的結束.movs 串傳送.movsb 傳送字元.movsw 傳送字.movs...

mips 彙編入門 helloworld

原始碼如下 hello.s vb view plain copy text segment text globl main main execution starts here la a0,str put string address into a0 li v0,4 system call to p...