68精品久久久久久欧美,最近中文字幕完整在线看一,久久亚洲男人天堂,最近中文字幕完整视频高清1

你好!歡迎來(lái)到深圳市穎特新科技有限公司!
語(yǔ)言
當(dāng)前位置:首頁(yè) >> 技術(shù)中心 >> 單片機(jī)入門 >> 單片機(jī)的匯編指令

單片機(jī)的匯編指令

作者:admin 來(lái)源:不詳 發(fā)布時(shí)間:2018-05-08  瀏覽:3

學(xué)習(xí)了指令系統(tǒng)后就可以編寫一些簡(jiǎn)單的匯編程序。

一、匯編程序功能

匯編語(yǔ)言編寫的程序不能直接被機(jī)器執(zhí)行,需要翻譯成機(jī)器碼組成的目標(biāo)程序,這個(gè)過(guò)程就是匯編。目標(biāo)文件雖然已經(jīng)是二進(jìn)制文件,但它還不能直接運(yùn)行,需要通過(guò)連接程序把目標(biāo)文件和其他目標(biāo)文件連接在一起形成可執(zhí)行文件。這個(gè)文件才能在機(jī)器上運(yùn)行。因此,要在計(jì)算機(jī)上運(yùn)行匯編語(yǔ)言程序的步驟是:

(1) 用編輯程序建立源文件ASM;

(2) 用匯編程序把ASM文件轉(zhuǎn)換成OBJ文件;

(3) 用連接程序LINK把OBJ文件轉(zhuǎn)換成EXE文件;

(4) 執(zhí)行該程序。

二、匯編語(yǔ)言源程序的格式

匯編語(yǔ)言源程序有一定的書(shū)寫格式。一般由左到右按序至少包括下列四項(xiàng)內(nèi)容:

[名字] 操作 操作數(shù) [ ;注釋]

名字項(xiàng)是指一個(gè)標(biāo)號(hào)或變量。

操作項(xiàng)是一個(gè)操作碼的助記符,它可以是指令、偽指令或宏指令名。

操作數(shù)項(xiàng)由一個(gè)或多個(gè)表達(dá)式組成,它提供為執(zhí)行所要求的操作而需要的信息。操作數(shù)項(xiàng)可以是常數(shù)、寄存器、標(biāo)號(hào)、變量或由表達(dá)式組成。

注釋項(xiàng)用來(lái)說(shuō)明程序或語(yǔ)句的功能!埃弧睘樽R(shí)別注釋項(xiàng)的開(kāi)始!埃弧币部梢詮囊恍械牡谝粋(gè)字符開(kāi)始,此時(shí)整行都是注釋,常用來(lái)說(shuō)明下面一段程序的功能。

上面四項(xiàng)中帶方括號(hào)的兩項(xiàng)是可選項(xiàng)。各項(xiàng)之間必須用“空格”(space)或“水平制表”(Tab)符隔開(kāi)。

三、匯編程序設(shè)計(jì)的步驟與方法

1.匯編語(yǔ)言程序設(shè)計(jì)的基本步驟

對(duì)于一個(gè)單片機(jī)應(yīng)用系統(tǒng),在經(jīng)過(guò)系統(tǒng)總體方案論證、硬件組成設(shè)計(jì)基本定型的基礎(chǔ)上,即可著手應(yīng)用軟件的設(shè)計(jì)。一個(gè)完整的程序大致可以分為以下幾個(gè)步驟:

(1) 設(shè)計(jì)任務(wù)的分析、確定有關(guān)算法或思路

(2) 程序總體設(shè)計(jì)

(3) 編寫匯編程序

(4) 源程序的匯編與調(diào)試

以上所述的程序設(shè)計(jì)步驟僅僅為程序設(shè)計(jì)者建立一個(gè)完整的概念和過(guò)程。在實(shí)際的工作中應(yīng)視應(yīng)用軟件的實(shí)際需求、程序量的大小和復(fù)雜程度等,選擇合適的設(shè)計(jì)步驟和調(diào)試方法。

2.匯編語(yǔ)言程序設(shè)計(jì)方法

單片機(jī)匯編語(yǔ)言應(yīng)用程序的設(shè)計(jì)方法可以說(shuō)不拘一格,靈活多樣。不僅與功能要求、規(guī)模、復(fù)雜程度有關(guān),同時(shí)也與開(kāi)發(fā)人員的經(jīng)驗(yàn)和習(xí)慣相關(guān)。

3.匯編語(yǔ)言源程序的基本結(jié)構(gòu)

一個(gè)單片機(jī)匯編語(yǔ)言應(yīng)用程序,無(wú)論其簡(jiǎn)單還是復(fù)雜,總是由簡(jiǎn)單程序、分支程序、循環(huán)程序、查表程序、子程序(包括中段服務(wù)程序)等結(jié)構(gòu)化的程序段有機(jī)的組合而成。這是程序設(shè)計(jì)的基礎(chǔ)。

4.劃分功能模塊

對(duì)于一個(gè)功能單一的簡(jiǎn)單程序,一般按其功能要求及操作順序,合理的選擇上述結(jié)構(gòu)化程序塊,自始至終的由上而下一氣呵成。

一個(gè)具有多種功能而較復(fù)雜的程序,則通常采用模塊化設(shè)計(jì)方法。即按不同功能劃分成若干功能相對(duì)獨(dú)立程序模塊,分別進(jìn)行獨(dú)立的設(shè)計(jì)和測(cè)試,最終裝配成程序的整體,通過(guò)聯(lián)調(diào),完成程序的整體設(shè)計(jì)。

5.自頂而下逐步求精

自頂而下逐步求精的程序設(shè)計(jì)方法是首先設(shè)計(jì)主干程序,將從屬的或者子程序等用程序標(biāo)志或過(guò)渡程序代替,在主干程序完成的前提下再逐個(gè)充實(shí)從屬程序段或子程序,使程序的生成逐步展開(kāi),逐步深化、求精,最后完成程序的設(shè)計(jì)。

6.子程序方式

近年來(lái)采用子程序的匯編語(yǔ)言程序設(shè)計(jì)較為普遍。這種設(shè)計(jì)方法的主導(dǎo)思想是將應(yīng)用系統(tǒng)的多個(gè)主要功能,或者一個(gè)大的功能劃分為若干個(gè)子程序。主程序完成對(duì)系統(tǒng)的初始化、各功能模塊的子程序的調(diào)用等。

四、偽指令

匯編程序?qū)τ脜R編語(yǔ)言寫的源程序進(jìn)行匯編時(shí),還要提供一些匯編用的控制指令。這些指令在匯編時(shí)并不產(chǎn)生目標(biāo)代碼,不影響程序的執(zhí)行,所以稱為偽指令。常用的偽指令有:

1.ORG指令

ORG指令的語(yǔ)法為:ORG  expression

這條指令用在一段源程序或數(shù)據(jù)塊的前面,說(shuō)明緊隨在后面的程序段或數(shù)據(jù)塊的起始地址。指令中的16位地址便是該起始地址值。

2.DATA指令

DATA指令的語(yǔ)法為:Symbol  DATA  address

這條指令用于分配一個(gè)地址(范圍為00H~0FFH)給某個(gè)特定的標(biāo)識(shí)符。這個(gè)標(biāo)識(shí)符不能被重定義。與DATA指令相近的還有BIT、CODE、DSEG、IDATA、XDATA它們的作用都是定義一個(gè)標(biāo)識(shí)符,使用的方式也與DATA類似,只是它們分配的地址范圍與DATA不一樣。

3.DB指令

DB指令的語(yǔ)法為:[ label: ]  DB   expression [, expression ... ]

這條指令用于通知匯編程序用expression中的內(nèi)容來(lái)初始化label開(kāi)始的存儲(chǔ)器單元。expression可以是單個(gè)字節(jié)數(shù)字、用逗號(hào)分隔開(kāi)的字節(jié)串或用雙引號(hào)所指示的字符串。方括號(hào)表示括號(hào)中的內(nèi)容是可選的。

與DB指令相近的還有DW、DD、DS,它們的作用都是用來(lái)定義代碼段或者常數(shù)段內(nèi)的數(shù)據(jù),只是定義數(shù)據(jù)的大小不同。DB是定義一個(gè)字節(jié),DW、DD分別用來(lái)定義一個(gè)字以及雙字,DS是在待存放的一定數(shù)量的存儲(chǔ)單元前面定義應(yīng)保留的存儲(chǔ)器單元數(shù)

4.EQU指令

EQU指令的語(yǔ)法為:標(biāo)號(hào) EQU  操作數(shù)

EQU  偽指令的功能是將操作數(shù)賦值于標(biāo)號(hào),使兩邊的兩個(gè)量等值。

5.END指令 

END指令的語(yǔ)法為:END

這條指令用在源程序的最后,表明源程序文件的結(jié)束,END指令后的指令將不會(huì)被匯編程序處理。在匯編源文件中這條指令是必須的并且應(yīng)當(dāng)是原文件的最后一條指令。

五、匯編程序設(shè)計(jì)

1. 簡(jiǎn)單程序設(shè)計(jì)

簡(jiǎn)單程序又稱順序程序。這種程序的形式最簡(jiǎn)單,計(jì)算機(jī)執(zhí)行程序的方式是“從頭到尾”,逐條執(zhí)行指令語(yǔ)句,直到程序結(jié)束,除非用特殊指令讓它跳轉(zhuǎn),不然它會(huì)在PC控制下執(zhí)行。這是程序的最基本形式,任何程序都離不開(kāi)這種形式。

例1:編寫1+2的程序

ORG   0000H

MOV  30H, #02

MOV  A, #01

ADD  A, 30H

END

2.  分支程序設(shè)計(jì)

在處理實(shí)際事務(wù)中,只用簡(jiǎn)單程序設(shè)計(jì)的方法是不夠的。因?yàn)榇蟛糠殖绦蚩偘信袛、比較等情況,這就需要分支程序。分支程序是利用條件轉(zhuǎn)移指令,使程序執(zhí)行到某一指令后,根據(jù)條件(即上面運(yùn)行的情況)是否滿足,來(lái)改變程序執(zhí)行的持續(xù)。下面舉兩個(gè)分支程序的例子。

例2:求單字節(jié)有符號(hào)二進(jìn)制數(shù)的補(bǔ)碼。

       ORG   0000H 

CMPT:JNB  ACC.7,  NCH   ; (A)>0,不需轉(zhuǎn)換。 

CPL    A    

ADD   A, #1  

SETB  ACC.7      ; 保存符號(hào)。

NCH:RET

          END  

3.  循環(huán)程序設(shè)計(jì)

在程序設(shè)計(jì)中,有時(shí)會(huì)遇到多次重復(fù)處理的問(wèn)題,這就需要下面講的循環(huán)程序來(lái)完成。循環(huán)程序是強(qiáng)制CPU重復(fù)執(zhí)行某一指令系列(程序段)的一種程序結(jié)構(gòu)形式,凡是要重復(fù)執(zhí)行的程序段都可以按循環(huán)結(jié)構(gòu)設(shè)計(jì)。

循環(huán)程序一般由五部分組成:

(1)初始化部分:為循環(huán)程序做準(zhǔn)備。如:設(shè)置循環(huán)次數(shù)計(jì)數(shù)器的初值,地址指針置初值,為循環(huán)變量賦初值等。

(2)處理部分:為反復(fù)執(zhí)行的程序段,是循環(huán)程序的實(shí)體。

(3)修改部分:每執(zhí)行一次循環(huán)體后,對(duì)指針作一次修改,使指針指向下一數(shù)據(jù)所在位置,為進(jìn)入下一輪處理做準(zhǔn)備。

(4)控制部分:根據(jù)循環(huán)次數(shù)計(jì)數(shù)器的狀態(tài)或循環(huán)條件,檢查循環(huán)是否能繼續(xù)進(jìn)行,若循環(huán)次數(shù)到或循環(huán)條件不滿足,應(yīng)控制退出循環(huán),否則繼續(xù)循環(huán)。

通常2、3、4部分又稱為循環(huán)體。

(5)結(jié)束部分:分析及存放執(zhí)行結(jié)果。

例如:設(shè)有50個(gè)外部RAM單元要清“0”,即為循環(huán)次數(shù)存放在R2寄存器中,其首址存放在DPTR中,設(shè)為2000H。                  

程序如下:

         ORG   0000H

         MOV   DPTR, #2000H                           

CLEAR: CLR   A

     MOV   R2, #32H      ; 置計(jì)數(shù)值。

LOOP:  MOVX  @DPTR, A

     INC    DPTR           ; 修改地址指針

     DJNZ   R2, LOOP     ; 控制循環(huán)

     END

編輯:admin  最后修改時(shí)間:2018-05-08

聯(lián)系方式

0755-82591179

傳真:0755-82591176

郵箱:vicky@yingtexin.net

地址:深圳市龍華區(qū)民治街道民治大道973萬(wàn)眾潤(rùn)豐創(chuàng)業(yè)園A棟2樓A08

Copyright © 2014-2023 穎特新科技有限公司 All Rights Reserved.  粵ICP備14043402號(hào)-4

常山县| 南汇区| 皮山县| 桃源县| 长武县| 天全县| 宁陵县| 伊春市| 遵化市| 甘孜县| 江陵县| 阳新县| 永和县| 尼玛县| 奎屯市| 斗六市| 新余市| 梁河县| 金平| 永春县| 玉溪市| 台南市| 临清市| 甘洛县| 镇巴县| 秀山| 比如县| 新昌县| 兴仁县| 延长县| 色达县| 大悟县| 芜湖县| 荥阳市| 温州市| 岱山县| 额敏县| 蒲城县| 乐至县| 乌拉特前旗| 冀州市|