微機(jī)系統(tǒng)與接口課件:CH3_2第三章匯編語言程序設(shè)計(jì)(二)_第1頁
微機(jī)系統(tǒng)與接口課件:CH3_2第三章匯編語言程序設(shè)計(jì)(二)_第2頁
微機(jī)系統(tǒng)與接口課件:CH3_2第三章匯編語言程序設(shè)計(jì)(二)_第3頁
微機(jī)系統(tǒng)與接口課件:CH3_2第三章匯編語言程序設(shè)計(jì)(二)_第4頁
微機(jī)系統(tǒng)與接口課件:CH3_2第三章匯編語言程序設(shè)計(jì)(二)_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第三章 匯編語言程序設(shè)計(jì)(二) 格式# 偽指令# DOS/BIOS調(diào)用 (簡(jiǎn)單了解) 重點(diǎn):數(shù)據(jù)結(jié)構(gòu)表示 變量、指針 程序結(jié)構(gòu) 程序流控制(條件、分支、循環(huán)) 程序設(shè)計(jì)方法 Assembly Language Programming(2)1 匯編語言源程序格式(例) STACK1 SEGMENT PARA STACK STACK DB 512 dup(?) ;定義堆棧段STACK1 512字節(jié)STACK1 ENDS DATA SEGMENT ;定義數(shù)據(jù)段DATA MESSAGE DB This A Sample Program, LFCR$ DB 0DH,0AH,$ AnyDATA DW 10

2、0,. DATA ENDS ;數(shù)據(jù)段DATA結(jié)束 CODE SEGMENT ;定義代碼段CODE ASSUME CS:CODE,DS:DATA; 說明匯編程序活動(dòng)段范圍段名段說明保留字標(biāo)號(hào).2862匯編語言例程 (續(xù)1 )MAIN PROC FAR ;MS-DOS 模板語句START:PUSH DS XOR AX,AX PUSH AX ;保存返回指針 DS:0START1:MOV AX,DATA MOV DS,AX LEA BX,MESSAGELOOP1:CMP BYTE PTR BX,$ ; 24H JZ NEXT ;是結(jié)束符 CALL PRINT_A CHAR ;輸出該字符 INC BX

3、JMP SHORT LOOP1 ; 繼續(xù)3匯編語言例程 (續(xù)2 )NEXT: RET ;返回OSMAIN ENDPPRINT_A_CHAR PROC MOV AH,5 DOS功能調(diào)用5=打印機(jī)輸出 MOV DL,BX DL中為打印輸出的字符; INT 21H 打印輸出一字符 RETPRINT_A_CHAR ENDP .CODE ENDS END START;匯編結(jié)束,運(yùn)行從START開始子程序 NEAR4偽操作命令-合理設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)BV1 DB 30, 20H, 111110BBV2 DB 3 DUP(?) BV3 DB This is a exampleBV4 DB .WV1 DW BV1,

4、BV2,BV3 ;近指針變量WV2 DD BV4,. ;遠(yuǎn)指針變量DWV1 DD WV1,WV2,. DP1 DD PRC1,PRC2 ;PRC1,PRC2為過程名BV2L EQU BV4-BV3 MOV BX,WV1+4 MOV AL, BX ; AL=? JMP FAR PTR DP1+4; ;執(zhí)行?5偽操作命令例1分析MYDATA SEGMENT AT 8A00HBV1 DB 30,20H,111110BBV2 DB 3 DUP(20H) DB ?,?BV3 DB This is a example$ BV4 DB It is a Problem$ WV1 DW BV1,BV2,BV3

5、WV2 DW BV4DWV1 DD WV1,WV2DW2 DD .MYDATA ENDSBV2的地址=?DW2的地址=?8A00:0003H8A00:003AH;- 0000;- 0003H;- 0006H;- 0008H;- 001AH;- 002AH;- 0030H;- 0032H;- 003AH6偽操作命令例2分析CODE SEGMENT PRC1 PROC FAR ;8B00:0000:PRC1 ENDPPRC2 PROC FAR ;8B00:2C20:PRC2 ENDPDP1 DD PRC1,PRC2 ;8B00:3000 ASSUME CS:CODE, DS:DATAJMP FAR

6、 PTR DP1+4; 00,00,00,8B,20,2C,00,8B8B00:2C20=JMP FAR PTR CS:3004H;DP1 內(nèi)容=?目標(biāo)地址=?7匯編語言程序設(shè)計(jì)方法回顧 步驟:分析、建模-算法 -單任務(wù)同其它語言:判斷框 條件?終止框過程/執(zhí)行框起始/準(zhǔn)備框 流程圖各框的表示法編程-調(diào)試(DEBUG版)-運(yùn)行/發(fā)行(Release)版 設(shè)計(jì)方法:自頂向下,逐步細(xì)化,層層分解具體小任務(wù); 模塊化程序設(shè)計(jì):相對(duì)獨(dú)立、功能單一、I/O關(guān)系明確8匯編語言程序設(shè)計(jì)結(jié)構(gòu)質(zhì)量評(píng)估 內(nèi)存容量(效率)、速度、源代碼(復(fù)雜性)、可維護(hù)性、可靠性基本結(jié)構(gòu) (單任務(wù)):順序、分支、循環(huán)語句1語句2語

7、句3語句nMOV AX,100MOV BX,200MOV CX,8000ADD BX, CXCMP BX,1000JZ NEXT9匯編語言程序設(shè)計(jì)分支結(jié)構(gòu)基本結(jié)構(gòu) (單任務(wù)):順序、分支、循環(huán)程序段條件?N程序段1程序段2條件?NY CMP AL,100 JZ NEXT MOV CX,2000NEXT: MOV CX,3000 CMP AL,100 JZ NEXT1 JMP NEXT2NEXT1: MOV CX,3000NEXT2:IF C IF C ELSE 10匯編語言程序設(shè)計(jì)循環(huán)結(jié)構(gòu)基本結(jié)構(gòu) (單任務(wù)):順序、分支、循環(huán)N程序段1結(jié)束循環(huán)?Y計(jì)數(shù)循環(huán)條件循環(huán)循環(huán)體結(jié)束?Nfor(i=0;

8、i100;i+)do . while(. )while (.) do . 11匯編語言程序設(shè)計(jì)結(jié)構(gòu)過程(子程序)反復(fù)使用程序段,簡(jiǎn)化設(shè)計(jì)、減少程序空間開銷、易讀、易維護(hù)調(diào)試。-函數(shù), 方法 ENTRY/ EXIT/USED指明傳遞和保護(hù)(變量/寄存器)問題 保護(hù)現(xiàn)場(chǎng)/恢復(fù)現(xiàn)場(chǎng)(主程序(調(diào)用者)/子程序均可);主程序(調(diào)用者)完成 PUSH AX PUSH BX CALL SUBRT;(不保護(hù)) POP BX POP AX .SUBRT PROC子程序完成 SUNRT: PUSH AX PUSH BX . POP BX POP AX RET 12匯編語言程序設(shè)計(jì)處理與判別比較 CMP AL,A;

9、41H,65 JZ/JNZ ; CMP CX,BUFSI JC(JNC) JG/JL 分支結(jié)構(gòu)緩沖區(qū)/指針 初始化 XOR AX,AX; MOV BUF,AX; MOV BUFPT,0 ;OFFSET Buf_head INC BUFPT 修正計(jì)數(shù)(指針) CMP BUFPT, BUFEND ; full? OFFSET Buf_tail13匯編語言程序設(shè)計(jì)處理與判別2判零 AND AL,AL; OR AX,AX, TEST AL,AL ; CMP AL,0 JZ置位 OR AL, 00001000B; OR AL, 8 ;B3=1復(fù)位 AND AL,01110111B; AND AL,77H

10、; B7,B3=0判位0/1:TEST AL, 00001000B; JZ(0)/NZ(1)14順序程序舉例計(jì)算f(x)=5x3+4x2-3x+12=(5x+4)*x-3)*x+12 計(jì)算f(6)FXCALC PROC; ENTRY X=x,EXIT=f(x);Used:AX, DX MOV AX,5 MUL X ADD AX,4; MUL X;() SUB AX,3 ;() MUL X ADD AX,12 MOV RESULT,AX RETFXCALC ENDP ;:XDW 6; MOV X,6 存儲(chǔ)變量傳遞參數(shù)調(diào)用:MOV X,6 ; CALL FXCALC15分支:比較測(cè)試結(jié)構(gòu)跳轉(zhuǎn)結(jié)構(gòu):

11、 根據(jù)X0 給Y賦值-1,0,1 MOV AL, XX MOV AH, 1 CMP AL, 0 JG EXIT;X0, AH=1 JZ ZERO MOV AH, -1;0 JMP EXITZERO: MOV AH, AL; 0EXIT: MOV YY,AH16分支:比較測(cè)試結(jié)構(gòu)(最大值w) MOV BX, OFFSET CMPDAT MOV CX,COUNT MOV AX,BX INC BX INC BXCHECK0: CMP AX,BX JNC CHECK1 MOV AX,BXCHECK1:INC BX INC BX LOOP CHECK0EXIT: 17循環(huán)結(jié)構(gòu)條件控制法先判斷后工作while .do; MOV CX,0; CHECK:CMP CX,100; JNC FINISH; INC CX, JMP CHECK;FINISH: 先工作后判斷條件 do ( )while MOV CX,0; CHECK:. INC CX; CMP CX,100, JC CHECK;FINISH:18循環(huán)結(jié)構(gòu)(續(xù)2

溫馨提示

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

評(píng)論

0/150

提交評(píng)論