HC89S003F4開發板 10彙編指令

2022-09-06 13:27:14 字數 1589 閱讀 6406

mov、movc、movx

movx a,@ri

movx @ri,a

movx a,@dptr

movx @dptr, a

movc a,@a+dptr
push、pop

進出棧,棧是filo(first in last out),先進後出

也就是把暫存器裡的資料臨時儲存一下,相當與乙個倉庫。

需要注意,使用命令時,確認棧的位置,保證不溢位、不覆蓋變數。

xch、xchd

xch 交換雙方的全部 8 位數。

xchd 交換雙方的低 4 位數。

inc、dec、mul、div

inc a 相當於 add a,1

dec a 相當於 sub a,1

優點 速度比sub或add指令快,占用空間小

這條指令執行結果影響af、of、pf、sf、zf標誌位,但不影響cf進製標誌位。

mul 累加器acc*暫存器b,儲存在acc

div 累加器acc/暫存器b,儲存在acc

在c庫里還有16位乘除的方法

extrn	code (?c?imul) ;公式r4r5*r6r7,儲存在r6r7,調庫16位元組

extrn code (?c?uidiv) ;無符號,公式r4r5/r6r7,商儲存在r6r7,餘數在r4r5

extrn code (?c?sidiv) ;有符號,公式r4r5/r6r7,商儲存在r6r7,餘數在r4r5

lcall ?c?imul ;跳轉3位元組

add、addc、subb

add a, r0 相當於a=a+r0

addc a, r0 相當於a=a+r0+cy

subb a, r0 相當於a=a-r0-cy,如果a小於r0,則cy置位

anl、orl、xrl

與、或、異或

rl、rlc、rr、rrc

rl左移,rr右移,c帶進/借位

swap

高四位和低四位交換

sjmp、ajmp、ljmp

無條件轉移

sjmp -126—+129範圍內轉移

ajmp 2k範圍內轉移

ljmp 64k範圍內轉移

ret、reti

reti 是中斷返回指令 

ret 是子程式返回指令

acall、lcall

轉移到子程式,子程式執行後配合ret、reti返回

cjne、djnz、jnz、jz

cjne 比較兩值,不相等轉移

djnz 減 1,不為 0 則轉移

jnz jump if not zero 累加器為 1 則轉移

jz jump if zero 累加器為 0 則轉移

jc、jnc、jb、jnb、jbc

jc jump if cy (有進製、即cy=1,則跳轉)

jnc jump if not cy (有進製、即cy=0,則跳轉)

jbc jump if bit and clear

jb jump if bit (為1則跳轉)

jnb jump if not bit (為0於則跳轉)

HC89S003F4開發板 1環境搭建

芯聖電子做活動,乙個hc89s003f4開發板只用一塊錢,買過來玩玩。作為增強型的51微控制器,那得要安裝個keil c51先。開啟hc driver 3.0.1.0 exe,一路確定安裝 實際安裝的是stlink和ch431驅動 其實資料裡安裝流程都有 1 開啟資料報裡工程exampleproje...

HC89S003F4開發板 8c轉義成彙編工程

define allocate extern include hc89s003f4.h void delay ms unsigned int fui i void main 選中main.c,然後然後右擊選擇options for file,在跳出的選項框中將generate assembler s...

STM32F4開發板學習筆記一

stm32f4是由st 意法半導體 開發的一種高效能微控制器,之前學習過51微控制器的相關知識,現在看stm32f4的晶元,不得不說它強大的外設功能,還有就是韌體庫。對於stm32這樣龐大的晶元,內部暫存器實在太多,如果操作的外設比較多,那麼就需要花很多時間查詢底層暫存器內容,而且即使程式寫好,如果...