嵌入式(十九) 指令集

2021-10-06 15:13:06 字數 2986 閱讀 2259

mov a,ri

e8-ef:e8=>把r0給a

1位元組1週期

mov ri,a

f8-ff

1位元組1週期

mov a,@rj

e6/e7:e6=>r0為位址給a

1位元組1週期

mov @rj,a

f6/f7

1位元組1週期

mov a,direct

e5 direct:位址的值給a

2位元組1週期

mov direct,a

f5 direct

2位元組1週期

ri表示r0-r7,rj表示r0或r1。間接定址只能是r0或r1。

direct表示乙個8位位址

②、不以a為一方

mov direct,ri

88-8f direct

2位元組2週期

mov ri,direct

a8-af direct

2位元組2週期

mov direct,@rj

86-87 direct

2位元組2週期

mov @rj,direct

a6-a7 direct

2位元組2週期

mov direct1,direct2

85 direct2 direct1

3位元組2週期

③、以立即數為一方,傳送數字

mov a,#data

74 data

2位元組1週期

mov ri,#data

78-7f data

2位元組1週期

mov @rj,#data

76、77 data

2位元組1週期

mov direct,#data

75 direct data

3位元組2週期

mov dptr,#data16

90 datah datal:給dptr

3位元組2週期

data為8bit數,data16為16bit數

④、訪問片外ram/io

movx a,@rj

e2、e3

1位元組2週期

movx @rj,a

f2、f3

1位元組2週期

movx a,@dptr

e01位元組2週期

movx @dptr,a

f01位元組2週期

⑤、訪問程式儲存器rom

movc a,@a+dptr

931位元組2週期

movc a,@a+pc

831位元組2週期

pc是唯一沒有位址的暫存器

⑥、資料交換

xch a,ri

c8-cf

1位元組1週期

xch a,@rj

c6、c7

1位元組1週期

xch a,direct

c5direct 2位元組1週期

xchd a,@rj

d6、d7

1位元組1週期

swap a

d41位元組1週期

xchd只對低半位元組交換

swap是a的高、低半位元組交換

⑦、堆疊操作

push direct

c0 direct

2位元組2週期

pop direct

d0 direct

2位元組2週期

push進棧:(sp)+1->(sp);(direct)->((sp))

先把sp的值+1,再把direct的值給以sp為位址所指向的空間

pop出棧:((sp))->(direct);(sp)-1->(sp)

先把以sp為位址所指向的空間給direct的值,再把sp的值-1

g、常用偽指令:

實際上就是假指令,不會產生機器**,不會占用rom空間,只用於彙編過程中為匯程式設計序提供彙編資訊,在彙編之後就消失了,是給編譯器的。

①、起始偽指令,標號org nn,定義程式或資料塊的起始位址,指示此語句後面的程式或資料塊以nn為起始位址連續存放在程式儲存器中。

②、位元組定義偽指令,標號db(位元組常數或字元或表示式),指示在程式儲存器中以標號為起始位址的單元裡存放的數為位元組資料(8位二進位制數)。

③、字定義偽指令,標號dw(字常數或表示式),指示在程式儲存器中以標號為起始位址的單元裡存放的數為字資料(16位的二進位制數)。

④、保留位元組偽指令,標號ds (數值表示式),指示在程式儲存器中保留以標號為起始位址的若干位元組單元,其單元個數由數值表示式指定。

⑤、等值偽指令,(名字)標號equ(數值表示式),表示 equ 兩邊的量等值,用於為標號或識別符號賦值。

⑥、位定義偽指令,(名字)標號bit(位位址),同 equ 指令,不過定義的是位操作位址。

⑦、片內位址賦予位指令,(名字)標號data(表示式),把片內的資料位址賦予所給定的符號名,如ts data 70h,把ts定義到位置70h

⑧、片外位址賦予指令,(名字)標號xdata(表示式),把片外的資料位址賦予所給定的符號名

⑨、間接內部位址賦予指令,(名字)標號idata(表示式),把間接的內部資料位址賦予所給定的符號名

⑨、彙編結束偽指令,標號end,指示源程式段結束。 end 指令放在程式的最後。若將 end 放在程式中間,那麼對於 end 後面的指令,匯程式設計序將不對其進行彙編。乙個組合語言源程式僅允許使用乙個end 偽指令。

h、其他常用知識點:

①、djnz跳轉指令與迴圈

②、條件跳轉指令cjne,不相等則跳轉

③、位移運算:rr、rl、rrc、rlc

④、其他邏輯運算:orl、anl、xor與清零、置位、取反

⑤、call、ret與子程式、堆疊、sp暫存器

⑥、macro、endm與巨集,巨集與子程式。巨集是一種批量處理的稱謂,電腦科學裡的巨集是一種抽象,它根據一系列預定義的規則替換一定的文字模式。直譯器或編譯器在遇到巨集時會自動進行這一模式替換。對於編譯語言,巨集展開在編譯時發生,進行巨集展開的工具常被稱為巨集展開器。巨集就是一些命令組織在一起,作為乙個單獨命令完成乙個特定任務。

⑦、包含檔案include

嵌入式開發之 ARM和THUMB指令集

我在這道題上糾結了很久,因為始終無法看到arm指令的條件執行指令。我看到的始終是下圖中普通cpu的 並沒有arm特有的所有指令都能條件執行的語句出現。一度以為是交叉編譯選項的問題,沒有指定板子的型號,後來在板子上直接執行,結果依舊是沒發現條件執行的語句。仍然是cmp指令,然後跳轉到不同的 段執行不同...

mysql bin指令集 mysql指令集

一 連線mysql。1 連線到本機上的mysql。首先開啟dos視窗,然後進入目錄mysql bin,再鍵入命令mysql u root p,回車後提示你輸密碼.注意使用者名稱前可以有空格也可以沒有空格,但是密碼前必須沒有空格,否則讓你重新輸入密碼.如果剛安裝好mysql,超級使用者root是沒有密...

gbip指令集 GB CPU 指令與指令集

gb cpu 指令與指令集 到目前為止,雖然 cpu 已經擁有了算術邏輯單元 alu 進行算術邏輯運算和使用暫存器儲存資料,但它仍然缺少一些正常工作時需要的資訊.就像建築工人無法僅僅依靠材料和工具憑空造出一棟高樓大廈,除非建築師能為其提供詳細的建築圖紙.cpu 也是一樣的,開發者需要通過某種方式告訴...