第4章-3微機原理_第1頁
第4章-3微機原理_第2頁
第4章-3微機原理_第3頁
第4章-3微機原理_第4頁
第4章-3微機原理_第5頁
已閱讀5頁,還剩19頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第4章匯編語言程序結構4.1初步涉及匯編語言程序

4.2匯編語言偽指令

4.3匯編語言程序的上機過程

4.4DOS系統功能調用

4.5匯編語言程序設計

14.5匯編語言程序設計一、概述二、順序程序設計三、分支程序設計四、循環程序設計五、中斷功能調用的程序設計六、子程序設計匯編語言同高級語言一樣,源程序的設計也有4大基本結構形式(順序結構、分支結構、循環結構和子程序)。在實際的匯編程序設計中,單純的一種結構程序并不多見,大多數都是多種結構的組合

24.5匯編語言程序設計一、順序結構程序設計

順序程序完全按指令書寫的前后順序執行每一條指令,是最基本、最常見的程序結構主要用到數據傳送類指令、算術運算類指令、邏輯運算和移位類指令

3例1實驗3順序程序設計4.5匯編語言程序設計一、實驗目的學習數據傳送和算術運算指令的用法熟悉建立、匯編、連接、調試匯編程序的過程二、實驗內容調試參考程序,指出程序運行后BUF2、BUF3、BUF4定義開始的單元存放的數據。三、實驗步驟:1、進入EDIT,輸入源程序,存盤退出2、編譯:MASM*.ASM3、連接:LINK*.OBJ4、進入DEBUG對程序進行單步調試,觀察運行結果DEBUG*.EXE4STACKSEGMENTDB200DUP(0)STACKENDSDATASEGMENTBUF1DB1,2,3,4,5,6,7,8,9BUF2DB10DUP(0)BUF3DB10DUP(0)BUF4DB10DUP(0)DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACK5START:MOVAX,DATAMOVDS,AX MOVSI,OFFSETBUF1 MOVDI,OFFSETBUF2MOVBX,OFFSETBUF3MOVBP,OFFSETBUF4MOVCX,106AGAIN:MOVAL,[SI]MOV[DI],ALINCALMOV[BX],AL ADDAL,3MOVDS:[BP],ALINCDIINCSIINCBXINCBPLOOPAGAINMOVAH,4CHINT21HCODEENDSENDSTART74.5匯編語言程序設計二、分支結構程序設計

分支程序根據條件是真或假決定執行與否,判斷的條件是各種指令,如CMP、TEST等執行后形成的狀態標志與條件轉移指令Jcc聯合可以實現分支控制用無條件轉移指令JMP也可以實現分支控制。匯編語言中的分支通常有三種形式:

IF-THEN型:也稱單分支結構IF-THEN-ELSE型:也稱雙分支結構DO-CASE型:也稱多分支結構

84.5匯編語言程序設計掌握:分支程序設計要領

91、例4.13分支程序設計例子。編程求|X-Y|,結果存于RESULT單元中,設X和Y都為16位數。DATASEGMENTX

DW-10Y

DW20RESULTDW?DATAENDSSTACKSEGMENTSTACK

DB100DUP(?)STACKENDSCODESEGMENT

ASSUMECS:CODE,DS:DATA,SS:STACKSTART:

MOVAX,DATA

MOVDS,AX

MOVAX,X

SUBAX,YJNSNONNEGNEGAXNONNEG:MOVRESULT,AXMOVAH,4CHINT21HCODEENDS

END

START104.5匯編語言程序設計三、循環程序設計1、循環程序的結構形式根據循環的層次不同,匯編循環程序分為單重循環和多重循環根據循環次數是否已知,常用的循環控制方式通常有計數控制與條件控制114.5匯編語言程序設計2、循環結構程序設計舉例dataSEGMENTRESULTDW?dataENDScodeSEGMENTASSUMECS:code,DS:dataSTART: MOVAX,data MOVDS,AX (1)計數控制舉例。編程計算1+2+3+…+50的和,結果送

RESULT單元

MOVAX,1 MOVRESULT,0 MOVCX,50CLCNEXT: ADCRESULT,AX INCAX

LOOPNEXT MOVAH,4CH INT21HcodeENDS ENDSTART12DATA SEGMENTPOSITION DW ?STRING DB “Thisisastringforexample.”,0DATA ENDSCODE SEGMENTASSUME DS:DATA,CS:CODESTART: MOV AX,DATA MOV DS,AX[例4-9]查找字母’a’在字符串STRING中第一次出現的位置,

如果未出現,置位置值為-1。(字符串長度<30)13

MOV SI,-1 ;SI用作字符串字符指針

MOV CX,30 ;字符串長度30L0: INC SI ;修改指針

CMP STRING[SI],‘a’ ;一個字符與’a’進行比較

LOOPNE L0 ;字符串未結束,未找到,繼續

JNE NOTFOUND ;未找到,轉“NOTFOUND” MOV POSITION,SI ;保存位置值

JMP EXITNOTFOUND:MOV POSITION,-1 ;未找到,置位置值為-1EXIT: MOV AX,4C00H INT 21HCODE ENDS END START14

字符串內找到字符’a’:循環結束時ZF=1,SI內是字符的出

現位置(從0開始);字符串內未找到字符’a’:循環結束時ZF=0,SI內是字符串

的長度減1(30-1=29)。程序使用LOOPNE指令來控制循環,既有計數控制,又有條件控制。循環結束有兩種可能性:

對于LOOPZ/LOOPE,LOOPNZ/LOOPNE控制的循環,一般應在循環結束后用條件轉移指令分開這兩種情況,分別處理。154.5匯編語言程序設計3、多重循環程序設計舉例。

實驗4循環程序設計-排序程序一、實驗目的掌握循環結構的程序設計方法;了解排序程序的設計思路,掌握其編程方法二、實驗內容在地址為ADDR開始的單元中存放著10個無序的無符號數,要求按降序排列,大數在前,小數在后,結果仍放在原處。三、實驗步驟1、進入EDIT編輯狀態,輸入源程序,存盤退出。2、用MASM編譯程序,檢查錯誤3、用LINK連接程序,生成.EXE文件4、進入DEBUG單步調試程序,觀察程序執行過程,內外層循環如何嵌套執行,并檢查程序最終執行結果是否正確。164.5匯編語言程序設計DATASEGMENTADDRDB6,2,9,1,5,0,7,8,3,4DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AX MOVCX,10-1;設置計數初值

LEASI,ADDRLOP1:MOVDX,CX;設置內循環計數器

MOVDI,SI;設置內循環地址指針

MOVAL,[DI];取數送AL 174.5匯編語言程序設計LOP2:INCDICMPAL,[DI]JAENEXT;若AL>[DI]中的數,轉NEXTMOVBL,ALMOVAL,[DI]MOV[DI],BL;否則,AL和[DI]數據交換NEXT:DECDXJNZLOP2;未完轉LOP2MOV[SI],AL;保存比較出的第一個大數

INCSI;調整外循環地址指針

LOOPLOP1MOVAH,4CHINT21HCODEENDSENDSTART184.5匯編語言程序設計4、應用串指令編寫循環程序datasegments1db100dup(66h)s2db100dup(00)dataendscodesegmentassumecs:code,ds:data,es:datastart:movax,datamovds,axmoves,ax

leasi,s1leadi,s2movcx,100cld

repmovsbmovah,4chint21hcodeendsendstart(1)MOVS傳送例子。用帶重復前綴的串操作指令實現194.5匯編語言程序設計六、子程序設計

子程序的設計,是程序設計中被廣泛使用的一種方法。它的使用方式較多,運用十分靈活,涉及面也較廣,需要掌握好基本的子程序設計方法。子程序是程序中功能相對獨立的一段程序。在匯編語言中,子程序又稱過程。程序中使用子程序的好處子程序作為一個功能性模塊,供一個程序甚至多個程序使用:可以簡化源程序結構;提高程序的可讀性與可維護性;有利于代碼復用;提高程序的設計效率。20由子程序定義偽指令PROC和ENDP完成格式:

子程序名

PROC[NEAR/FAR]┆;過程體

子程序名

ENDP解釋:子程序名是子程序入口地址的符號表示。同標號一樣,具有三種屬性,即段屬性、偏移地址屬性以及類型屬性PROC表示子程序定義開始,ENDP表示子程序定義結束

NEAR/FAR1、子程序的定義4.5匯編語言程序設計212、子程序的調用和返回過程定義后,可在主程序中用CALL指令,反復調用。過程結束,由返回指令RET返回主程序。4.5匯編語言程序設計強調:在使用時應注意的問題

SUBPPROCPUSHAX;現場保護PUSHBXPUSHCX

┇;子程序主體POPCX;恢復現場POPBXPOPAX

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論