《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 解決方案 > 匯編基礎:順序、分支與循環程序設計

匯編基礎:順序、分支與循環程序設計

2017-06-10
關鍵詞: 匯編

一個算法用程序設計語言的語句有序地組合在一起加以描述,其組合方式稱為程序的控制結構或簡稱為程序結構。程序的基本結構形式有順序結構、分支結構和循環結構。

一、順序結構

順序結構是最簡單的,也是最基本的程序結構形式,這種結構形式的程序的最大特點就是程序運行時從開始到結尾一直是按照編寫指令的順序執行,且每條指令僅執行一次,具有順序結構的程序或者程序段,成為順序程序。

我們拿一個簡單的程序來說明匯編的順序程序設計。

例:設兩個字存儲變量X和Y, 編程實現這兩個變量的交換。

分析:由于存儲單元之間不能夠直接進行數據交換,所以利用通用寄存器AX來作為交換的中介。我在這里給出一個代碼范例:

DATA    SEGMENT    
   X   DW  1032H    
   Y   DW  2043H    
DATA    ENDS    
STACK1  SEGMENT PARA STACK    
   DW   20H   DUP (0)    
STACK1  ENDS    
CODE    SEGMENT    
ASSUME CS:CODE, DS:DATA, SS:STACK1    
BEGIN:  MOV     AX, DATA    
   MOV     DS, AX    
   MOV AX, X    
   XCHG    AX, Y    
   MOV X, AX    
   MOV AH, 4CH    
   INT 21H    
CODE    ENDS    
   END

代碼分析:前面一部分是對數據以及堆棧的定義,這里我就不再多說了,我們從BEGIN開始,因為對于MOV來說,不能夠直接將DATA作為源操作數,DS作為目的操作數,所以要通過一個通用寄存器來實現兩者之間的賦值,MOV   AX, X意為將X的值先保存在AX中,而后執行XCHG AX, Y將AX與Y的值進行交換,此時Y里面存儲的便是X的值,AX中存儲的Y的值。緊接著MOV X, AX再將AX中存儲的Y的值賦予X,即實現X與Y值得交換。

二、分支程序設計

實現分支程序需要有相應的轉移指令的支持,而轉移指令又分為無條件轉移指令與有條件轉移指令兩類,在有條件轉移指令中,不同的條件往往是通過標志寄存器中條件標志的不同狀態反映的。因而,分支程序設計中一個至關重要的問題是如何根據標志寄存器中標志位的不同狀態,配合使用合適的轉移指令實現程序的轉移。關于轉移指令請看我的另一篇文(http://yiluohuanghun.blog.51cto.com/3407300/940123)。

還是拿例子來說吧:X為存儲單元中的有符號字數據,編寫程序實現計算其絕對值,并保存到原處。

分析:當X>=0時,X的絕對值就是它本身,否則利用求負指令將X變號,并放回要原處,下面我給出了一個程序,大家可以參考下:

DATA    SEGMENT    
   X   DW  0F874H    
DATA    ENDS    
STACK1  SEGMENT PARA    STACK    
   DW  20H DUP  (0)    
STACK1  ENDS    
CODE    SEGMENT    
ASSUME  CS:CODE, DS:DATA, SS:STACK1    
BEGIN:  MOV AX, DATA    
   MOV DS, AX    
   MOV AX, X    
   TEST    AX, AX      
   JNS DONE    
   NEG X   ;負指令NEG對X取反    
DONE:   MOV AH, 4CH    
   INT 21H    
CODE    ENDS    
   END BEGIN

程序分析:TESTAX, AX;此處目的是為了重置標志寄存器各位的值,以便于下一條指令JNS使用標志寄存器

三、循環程序設計

在進行循環程序設計之前同分支程序設計一樣,都要先知道一個基本控制指令,對于循環控制指令有如下4大類:

1、LOOPTARGET

執行的操作:先將CX<-(CX)-1,如果(CX)不等于0,則將IP指向TARGET的偏移量

2、LOOPZ/LOOPETARGET

執行操作:先將CX<-(CX)-1,如果(CX)不等于0并且ZF=1,則將IP指向TARGET的偏移量

3、LOOPNZ/LOOPNE   TARGET

執行操作:先將CX<-(CX)-1,如果(CX)不等于0并且ZF不等于1,則將IP指向TARGET的偏移

4、JCXZTARGET

執行操作:測試(CX)是否0,但不對CX寄存器進行修改,如果(CX)=0,那么IP指向TARGET的偏移量

下面還是以實例來說明問題:數據段的ARY數組中存放有10個無符號數,試找出其中最大者送入MAX單元。

分析:首先將數組中的第一個數取出放入AL,然后依次與數組中的其他元素進行比較,將較大者放入AL中,遍歷數組后,AL中存放的就是最大的數。具體實現過成功如下:

DATA    SEGMENT    
   ARY DB  17, 5, 40, 0, 67, 12, 34, 78, 32, 10    
   MAX DB  ?    
DATA    ENDS    
STACK1  SEGMENT PARA    STACK    
   DW  20H DUP  (0)    
STACK1  ENDS    
CODE    SEGMENT    
ASSUME  CS:CODE, SS:STACK1, DS:DATA    
BEGIN:  MOV AX, DATA    
   MOV DS, AX    
   MOV SI, OFFSET  ARY ;SI指向ARY的第一個元素    
   MOV CX, 9       ;CX作循環次數計數    
   MOV AL, [SI]        ;取第一個元素到AL    
LOP:    INC SI      ;SI指向后一個元素    
   CMP AL, [SI]        ;比較兩個數    
   JAE BIGER       ;前一個元素大于后一個元素時轉移    
   MOV AL, [SI]        ;取較大數到AL    
BIGER:  LOOP    LOP     ;(CX)不等于0 則轉移    
   MOV MAX, AL    
   MOV AH, 4CH    
   INT 21H    
CODE    ENDS    
   END BEGIN

以上就介紹著三種程序設計方式。


本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
欧美日韩免费精品| 国产精品欧美激情| 91久久久精品| 亚洲一区在线播放| 亚洲视频精品| 亚洲人成免费| 亚洲国产婷婷香蕉久久久久久| 欧美亚洲自偷自偷| 亚洲欧美日韩国产另类专区| 亚洲视频欧美视频| 一区二区高清视频在线观看| 99视频超级精品| 9久re热视频在线精品| 日韩视频中午一区| 亚洲乱码国产乱码精品精天堂| 91久久亚洲| 亚洲欧洲综合| 亚洲日韩成人| 9久re热视频在线精品| 日韩一区二区高清| 一区二区精品在线观看| 亚洲小说欧美另类社区| 亚洲综合社区| 欧美一级欧美一级在线播放| 久久成人国产| 亚洲激情影视| 日韩小视频在线观看专区| 一本色道久久综合亚洲精品小说| 一本在线高清不卡dvd| 亚洲欧洲一区二区三区| 夜夜狂射影院欧美极品| 亚洲一区免费观看| 欧美与欧洲交xxxx免费观看| 久久久精品999| 欧美成人高清视频| 欧美伦理在线观看| 国产精品久久久久aaaa九色| 国产欧亚日韩视频| 狠狠色丁香久久婷婷综合丁香| 激情91久久| 亚洲精品国产欧美| 一本色道久久综合狠狠躁篇怎么玩 | 久久gogo国模裸体人体| 亚洲视频在线播放| 欧美一区二区三区视频免费| 亚洲国产欧美在线人成| 亚洲最新在线| 久久精品国产一区二区电影 | 久久久久久久一区二区三区| 欧美成人国产| 国产精品久久久久久久久免费| 国产日本欧美视频| 亚洲国产老妈| 亚洲一卡久久| 亚洲国产精品小视频| 亚洲视频1区| 久久天堂精品| 欧美日精品一区视频| 国产香蕉久久精品综合网| 亚洲激情av| 午夜精品网站| 一本久道久久久| 久久国产毛片| 欧美日韩免费精品| 狠狠色丁香久久婷婷综合丁香| 99国产精品久久久久久久成人热| 欧美一区在线看| 一区二区三区www| 久久免费视频这里只有精品| 欧美少妇一区二区| 极品裸体白嫩激情啪啪国产精品| 999在线观看精品免费不卡网站| 久久www成人_看片免费不卡| 一区二区三区精密机械公司 | 老司机精品视频网站| 欧美亚洲第一页| 黑人一区二区三区四区五区| 99视频在线精品国自产拍免费观看| 欧美在线播放高清精品| 亚洲一区二区三区视频| 欧美成人高清视频| 国产日韩欧美二区| 99精品欧美一区| 亚洲国产日本| 欧美在线网址| 国产精品vip| 亚洲欧洲一区二区三区在线观看| 欧美一区视频| 性做久久久久久久免费看| 欧美另类一区二区三区| 黄网动漫久久久| 欧美一区二视频| 午夜一区二区三区在线观看 | 国产有码一区二区| 亚洲少妇诱惑| 一本一本久久a久久精品综合麻豆 一本一本久久a久久精品牛牛影视 | 欧美国产一区二区| 樱桃成人精品视频在线播放| 欧美一区二区三区视频在线观看| 亚洲一区二区三| 欧美黄色免费网站| 亚洲电影av| 亚洲黄色成人| 久久综合色88| 韩国三级电影一区二区| 欧美一级视频| 久久国产精品久久国产精品| 国产精品中文字幕在线观看| 中文高清一区| 亚洲小说欧美另类婷婷| 欧美日韩精品免费观看视频| 亚洲黄色三级| 亚洲靠逼com| 欧美区二区三区| 亚洲人午夜精品免费| 亚洲精品美女免费| 欧美成人有码| 亚洲国产精品成人一区二区| 亚洲欧洲一二三| 免费观看一区| 亚洲国产精品精华液网站| 91久久精品日日躁夜夜躁欧美| 麻豆精品在线视频| 在线色欧美三级视频| 亚洲精品久久7777| 欧美极品在线播放| 亚洲美洲欧洲综合国产一区| 一区二区三区 在线观看视频| 欧美日韩免费高清| 在线亚洲欧美| 午夜亚洲伦理| 国产一区二区三区在线观看免费| 久久国内精品视频| 欧美.日韩.国产.一区.二区| 亚洲精品久久久蜜桃| 亚洲视频在线播放| 国产精品对白刺激久久久| 亚洲制服欧美中文字幕中文字幕| 久久福利电影| 一区二区在线视频播放| 亚洲美女视频在线观看| 欧美日韩国产另类不卡| 亚洲视频在线观看网站| 久久av在线看| 精品成人乱色一区二区| 日韩亚洲欧美高清| 国产精品久久久久久久电影| 亚洲欧美日韩国产一区二区| 久久久久久久综合狠狠综合| 亚洲国产毛片完整版| 亚洲深夜av| 国产香蕉97碰碰久久人人| 亚洲国产精品久久久久秋霞蜜臀 | 欧美午夜一区二区| 午夜亚洲性色视频| 久久亚洲欧美| 亚洲精品日韩激情在线电影| 亚洲欧美日韩一区二区在线| 国产自产高清不卡| 亚洲免费久久| 国产精品日韩欧美| 亚洲韩国青草视频| 欧美色欧美亚洲另类七区| 午夜精品福利在线| 欧美激情精品| 亚洲欧美电影在线观看| 牛牛影视久久网| 国产精品99久久不卡二区| 久久久久久久网| 日韩系列欧美系列| 久久精品免费看| 亚洲精品中文在线| 欧美一站二站| 亚洲欧洲精品一区二区| 欧美一区1区三区3区公司| 亚洲黄色大片| 久久国产黑丝| 99精品久久| 美女91精品| 亚洲一区二区三区激情| 欧美大片一区| 欧美一区二区私人影院日本 | 亚洲视频香蕉人妖| 免费欧美网站| 亚洲欧美中文日韩在线| 欧美激情精品久久久久久蜜臀| 亚洲免费在线观看视频| 欧美国产精品劲爆| 羞羞色国产精品| 欧美日韩一区二区三区在线观看免| 亚洲电影在线| 国产精品视频免费在线观看| 99re亚洲国产精品| 国内精品美女av在线播放| 亚洲在线成人| 亚洲精品一区二区三区蜜桃久 | 亚洲欧洲一区二区三区| 国产欧美精品xxxx另类| 宅男在线国产精品| 亚洲国产精品女人久久久|