亚洲国产成人,色呦呦内射午夜,无码一级片,无码人妻少妇色欲AV一区二区

<samp id="jg8hh"></samp>

<p id="jg8hh"></p><delect id="jg8hh"><em id="jg8hh"><blockquote id="jg8hh"></blockquote></em></delect><acronym id="jg8hh"><dd id="jg8hh"></dd></acronym><button id="jg8hh"><dd id="jg8hh"><acronym id="jg8hh"></acronym></dd></button><samp id="jg8hh"><em id="jg8hh"><blockquote id="jg8hh"></blockquote></em></samp>

<p id="jg8hh"></p>

<samp id="jg8hh"><legend id="jg8hh"></legend></samp>
<samp id="jg8hh"><legend id="jg8hh"><samp id="jg8hh"></samp></legend></samp>

<samp id="jg8hh"></samp>

<p id="jg8hh"></p><acronym id="jg8hh"></acronym><p id="jg8hh"><dd id="jg8hh"><acronym id="jg8hh"></acronym></dd></p><p id="jg8hh"></p>

<p id="jg8hh"></p><delect id="jg8hh"><legend id="jg8hh"><var id="jg8hh"></var></legend></delect><button id="jg8hh"><listing id="jg8hh"><i id="jg8hh"></i></listing></button>
<delect id="jg8hh"><legend id="jg8hh"><var id="jg8hh"></var></legend></delect>

單片機的匯編指令

發(fā)布時間:2023-11-02
學習了指令系統(tǒng)后就可以編寫一些簡單的匯編程序。
一、匯編程序功能 匯編語言編寫的程序不能直接被機器執(zhí)行,需要翻譯成機器碼組成的目標程序,這個過程就是匯編。目標文件雖然已經(jīng)是二進制文件,但它還不能直接運行,需要通過連接程序把目標文件和其他目標文件連接在一起形成可執(zhí)行文件。這個文件才能在機器上運行。因此,要在計算機上運行匯編語言程序的步驟是:
(1)用編輯程序建立源文件asm;
(2)用匯編程序把asm文件轉(zhuǎn)換成obj文件;
(3)用連接程序link把obj文件轉(zhuǎn)換成exe文件;
(4)執(zhí)行該程序。
二、匯編語言源程序的格式 匯編語言源程序有一定的書寫格式。一般由左到右按序至少包括下列四項內(nèi)容:
[名字]操作操作數(shù)[;注釋]
名字項是指一個標號或變量。
操作項是一個操作碼的助記符,它可以是指令、偽指令或宏指令名。
操作數(shù)項由一個或多個表達式組成,它提供為執(zhí)行所要求的操作而需要的信息。操作數(shù)項可以是常數(shù)、寄存器、標號、變量或由表達式組成。
注釋項用來說明程序或語句的功能。“;”為識別注釋項的開始。“;”也可以從一行的第一個字符開始,此時整行都是注釋,常用來說明下面一段程序的功能。
上面四項中帶方括號的兩項是可選項。各項之間必須用“空格”(space)或“水平制表”(tab)符隔開。
三、匯編程序設(shè)計的步驟與方法 1.匯編語言程序設(shè)計的基本步驟
對于一個單片機應(yīng)用系統(tǒng),在經(jīng)過系統(tǒng)總體方案論證、硬件組成設(shè)計基本定型的基礎(chǔ)上,即可著手應(yīng)用軟件的設(shè)計。一個完整的程序大致可以分為以下幾個步驟:
(1)設(shè)計任務(wù)的分析、確定有關(guān)算法或思路
(2)程序總體設(shè)計
(3)編寫匯編程序
(4)源程序的匯編與調(diào)試
以上所述的程序設(shè)計步驟僅僅為程序設(shè)計者建立一個完整的概念和過程。在實際的工作中應(yīng)視應(yīng)用軟件的實際需求、程序量的大小和復雜程度等,選擇合適的設(shè)計步驟和調(diào)試方法。
2.匯編語言程序設(shè)計方法
單片機匯編語言應(yīng)用程序的設(shè)計方法可以說不拘一格,靈活多樣。不僅與功能要求、規(guī)模、復雜程度有關(guān),同時也與開發(fā)人員的經(jīng)驗和習慣相關(guān)。
3.匯編語言源程序的基本結(jié)構(gòu)
一個單片機匯編語言應(yīng)用程序,無論其簡單還是復雜,總是由簡單程序、分支程序、循環(huán)程序、查表程序、子程序(包括中段服務(wù)程序)等結(jié)構(gòu)化的程序段有機的組合而成。這是程序設(shè)計的基礎(chǔ)。
4.劃分功能模塊
對于一個功能單一的簡單程序,一般按其功能要求及操作順序,合理的選擇上述結(jié)構(gòu)化程序塊,自始至終的由上而下一氣呵成。
一個具有多種功能而較復雜的程序,則通常采用模塊化設(shè)計方法。即按不同功能劃分成若干功能相對獨立程序模塊,分別進行獨立的設(shè)計和測試,最終裝配成程序的整體,通過聯(lián)調(diào),完成程序的整體設(shè)計。
5.自頂而下逐步求精
自頂而下逐步求精的程序設(shè)計方法是首先設(shè)計主干程序,將從屬的或者子程序等用程序標志或過渡程序代替,在主干程序完成的前提下再逐個充實從屬程序段或子程序,使程序的生成逐步展開,逐步深化、求精,最后完成程序的設(shè)計。
6.子程序方式
近年來采用子程序的匯編語言程序設(shè)計較為普遍。這種設(shè)計方法的主導思想是將應(yīng)用系統(tǒng)的多個主要功能,或者一個大的功能劃分為若干個子程序。主程序完成對系統(tǒng)的初始化、各功能模塊的子程序的調(diào)用等。
四、偽指令 匯編程序?qū)τ脜R編語言寫的源程序進行匯編時,還要提供一些匯編用的控制指令。這些指令在匯編時并不產(chǎn)生目標代碼,不影響程序的執(zhí)行,所以稱為偽指令。常用的偽指令有:
1.org指令
org指令的語法為:orgexpression
這條指令用在一段源程序或數(shù)據(jù)塊的前面,說明緊隨在后面的程序段或數(shù)據(jù)塊的起始地址。指令中的16位地址便是該起始地址值。
2.data指令
data指令的語法為:symboldataaddress
這條指令用于分配一個地址(范圍為00h~0ffh)給某個特定的標識符。這個標識符不能被重定義。與data指令相近的還有bit、code、dseg、idata、xdata它們的作用都是定義一個標識符,使用的方式也與data類似,只是它們分配的地址范圍與data不一樣。
3.db指令
db指令的語法為:[label:]dbexpression[,expression...]
這條指令用于通知匯編程序用expression中的內(nèi)容來初始化label開始的存儲器單元。expression可以是單個字節(jié)數(shù)字、用逗號分隔開的字節(jié)串或用雙引號所指示的字符串。方括號表示括號中的內(nèi)容是可選的。
與db指令相近的還有dw、dd、ds,它們的作用都是用來定義代碼段或者常數(shù)段內(nèi)的數(shù)據(jù),只是定義數(shù)據(jù)的大小不同。db是定義一個字節(jié),dw、dd分別用來定義一個字以及雙字,ds是在待存放的一定數(shù)量的存儲單元前面定義應(yīng)保留的存儲器單元數(shù)
4.equ指令
equ指令的語法為:標號equ操作數(shù)
equ偽指令的功能是將操作數(shù)賦值于標號,使兩邊的兩個量等值。
5.end指令
end指令的語法為:end
這條指令用在源程序的最后,表明源程序文件的結(jié)束,end指令后的指令將不會被匯編程序處理。在匯編源文件中這條指令是必須的并且應(yīng)當是原文件的最后一條指令。
五、匯編程序設(shè)計 1.簡單程序設(shè)計
簡單程序又稱順序程序。這種程序的形式最簡單,計算機執(zhí)行程序的方式是“從頭到尾”,逐條執(zhí)行指令語句,直到程序結(jié)束,除非用特殊指令讓它跳轉(zhuǎn),不然它會在pc控制下執(zhí)行。這是程序的最基本形式,任何程序都離不開這種形式。
例1:編寫1+2的程序
org0000h
mov30h,#02
mova,#01
adda,30h
end
2.分支程序設(shè)計
在處理實際事務(wù)中,只用簡單程序設(shè)計的方法是不夠的。因為大部分程序總包含有判斷、比較等情況,這就需要分支程序。分支程序是利用條件轉(zhuǎn)移指令,使程序執(zhí)行到某一指令后,根據(jù)條件(即上面運行的情況)是否滿足,來改變程序執(zhí)行的持續(xù)。下面舉兩個分支程序的例子。
例2:求單字節(jié)有符號二進制數(shù)的補碼。
org0000h
cmpt:jnbacc.7,nch;(a)>0,不需轉(zhuǎn)換。
cpla
adda,#1
setbacc.7 ;保存符號。
nch:ret
end
3.循環(huán)程序設(shè)計
在程序設(shè)計中,有時會遇到多次重復處理的問題,這就需要下面講的循環(huán)程序來完成。循環(huán)程序是強制cpu重復執(zhí)行某一指令系列(程序段)的一種程序結(jié)構(gòu)形式,凡是要重復執(zhí)行的程序段都可以按循環(huán)結(jié)構(gòu)設(shè)計。
循環(huán)程序一般由五部分組成:
(1)初始化部分:為循環(huán)程序做準備。如:設(shè)置循環(huán)次數(shù)計數(shù)器的初值,地址指針置初值,為循環(huán)變量賦初值等。
(2)處理部分:為反復執(zhí)行的程序段,是循環(huán)程序的實體。
(3)修改部分:每執(zhí)行一次循環(huán)體后,對指針作一次修改,使指針指向下一數(shù)據(jù)所在位置,為進入下一輪處理做準備。
(4)控制部分:根據(jù)循環(huán)次數(shù)計數(shù)器的狀態(tài)或循環(huán)條件,檢查循環(huán)是否能繼續(xù)進行,若循環(huán)次數(shù)到或循環(huán)條件不滿足,應(yīng)控制退出循環(huán),否則繼續(xù)循環(huán)。
通常2、3、4部分又稱為循環(huán)體。
(5)結(jié)束部分:分析及存放執(zhí)行結(jié)果。
例如:設(shè)有50個外部ram單元要清“0”,即為循環(huán)次數(shù)存放在r2寄存器中,其首址存放在dptr中,設(shè)為2000h。
程序如下:
org0000h
movdptr,#2000h
clear:clra
movr2,#32h ;置計數(shù)值。
loop:movx@dptr,a
incdptr ;修改地址指針
djnzr2,loop ;控制循環(huán)
end
上一個:如何計算鋼筋用量并套用定額及清單?
下一個:戴爾客服人工服務(wù)上班時間,戴爾電腦客服人工服務(wù)

玉蘭花種植與病蟲害防治
RC-02U8R20FT現(xiàn)貨采購,參數(shù)及規(guī)格書
1t的固態(tài)硬盤大概多少錢一個,加裝1t固態(tài)硬盤多少錢
華為1000多元的手機什么手機好(1000元以內(nèi)華為手機哪款比較好)
word提示無法創(chuàng)建工作文件(win7word無法創(chuàng)建工作文件)
龍井茶攤放過程中β—葡萄糖苷酶活性變化
vivoiq00后面的燈怎么設(shè)置(vivoiqoo后面的燈有什么用)
幾種PCB電路板散熱方式,收藏
桃小食心蟲的危害與防治
紫色的茶真的更養(yǎng)生嗎?