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

下載本文檔

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

文檔簡介

1、 第三章 匯編語言程序設(shè)計(三)Assembly Language Programming(3)格式# 偽指令# DOS/BIOS調(diào)用 (簡單了解) 重點(diǎn):數(shù)據(jù)結(jié)構(gòu)表示 變量、指針 程序結(jié)構(gòu) 程序流控制(條件、分支、循環(huán)) 程序設(shè)計方法-程序設(shè)計舉例匯編語言程序舉例(1)分塊傳送DATASEGMENTSTRGDB256 DUP(1,2,3)STG1EQU STRG+7STG2EQU STRG+27STRSEEQU 50;串長DATAENDSSSTACKSEGMENTSTACKDB256DUP(?)SSTACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,ES:DAT

2、AMAIN:.MOVAX,DATAMOVDS,AXMS-DOS程序程序舉例(1)分塊傳送(續(xù)一) MOVES,AXMOVCX,STRSE;MOV SI,OFFSET STG1; 源串首址MOV DI,OFFSET STG2;目標(biāo)首址CLD ;增量方式PUSH SI ADD SI,STRSE-1 ;SI=源串末址 CMP SI,DI POP SI JL OK;不重疊 STD;重疊,按減量 ADD SI,STRSE-1 ;指向串末 ADD DI,STRSE-1OK:REP MOVSBSTAG1STAG2STRSESTAG1+STRSE程序舉例(1)分塊傳送(續(xù)二) MOV AX,4C00H ;返回

3、DOS,AH=4CH INT 21HCODE ENDS END MAIN 數(shù)據(jù)塊傳送:一般情況 P170程序舉例(1)分塊傳送(通用子程序)通用子程序結(jié)構(gòu) 功能=串移動ENTRY: DS:SI=源串首址 ES:DI=目標(biāo)首址 CX=串長 -考慮物理地址關(guān)系 數(shù)據(jù)塊傳送:一般情況,P170BLKMOV PROC PUSH DS PUSH ES PUSH AX PUSH BXPUSH DXPUSH CX MOV AX,SIMOVCL,4SARAX,CL ;右移4位MOVDX,DSADD AX,DXMOVDS,AX ANDSI,0FH ;高位清零程序舉例(1)分塊傳送(通用子程序)MOVBX,DIS

4、ARBX,CL ;右移4位MOVDX,ESADD BX,DXMOVES,BXANDDI,0FHCMP AX,BX(源和目標(biāo)物理地址高16位);比較SRC/DST起始地址高位(比較源串和目標(biāo)串的物理地址,先比較高16位,再比較低4位)JAMOVDOWN;從低往高JBMOVUPCMP SI,DI;高位相等,比低位JA MOVDOWNJBMOVUP程序舉例(1)分塊傳送(通用子程序)POPCX ;相等,不移動 JMP MOVEXITMOVUP: STDPOP CXMOVAX,CXDEC AXADD SI,AXADD DI,AXJMPDOMOVMOVDOWN: CLDPOPCXDOMOV:REP MO

5、VSBMOVEXIT: POP . ; RETBLKMOV ENDP程序舉例(1)分塊傳送(通用子程序)多重循環(huán):例軟件延時(nT,T=210ns)SOFTDLY PROC MOV BL,10 ; 4TDELAY0: MOV CX,2801; 4TDELAY1: LOOP DELAY1; 17T/5T DEC BL ;3T JNZ DELAY0 ;16T/4T RET ;20TSOFTDLY ENDPn=4+10*(4+2801*17-12)+3+16)-12 +20 -10ms內(nèi)循環(huán)程序設(shè)計舉例(2)循環(huán)軟件延時DAINDEX DB 0; 波形發(fā)生DOTNUM DB DATIME-$-1DA

6、VALUE DB 0,40H,80H,0C0H DB 255,0C0H,80H,40H;三角波DATIME DW 100DACTRL PROC FAR PUSH DS PUSH 0000 MOV AX,SEG DAVALUE MOV DS,AX MOV BX,DOTNUMLEA SI,DAVALUE INC SI程序設(shè)計舉例(三)查表波形發(fā)生MOV DAINDEX,0DALOOP: MOV AL, DAINDEX CMP AL, BX ;BX中為采樣個數(shù) JC DACYCLEXOR AL, AL MOV DAINDEX, AL; 復(fù)位計數(shù)DACYCLE: CALL DAOUT INC SI I

7、NC DAINDEX CALL DELAY CALL KBINPUT ;讀鍵盤 CMP AL,1BH; ESC鍵按下,結(jié)束 JNZ DALOOPRET DACTRL ENDP程序設(shè)計舉例(三)查表波形發(fā)生(續(xù)一)DAOUT PROC;查表輸出 LEA SI,DAVLUE XOR AH,AH ; AL= DAINDEX ADD SI,AX MOV AL,SI MOV DX, DAPORT; DAC端口 OUT DX,AL RETDAOUT ENDP程序設(shè)計舉例(三)查表波形發(fā)生(續(xù)二) 程序設(shè)計舉例四模塊化:過程/子程序調(diào)用與參數(shù)傳遞術(shù)語嵌套遞歸參數(shù)傳遞、寄存器、數(shù)據(jù)單元變量(內(nèi)存,含指針變量)

8、(全局)、堆棧匯編語言程序設(shè)計結(jié)構(gòu)過程(子程序,函數(shù), 方法)參數(shù)傳遞寄存器傳遞;內(nèi)存單元(全局)傳遞;速度快,但結(jié)構(gòu)差,難維護(hù)MOV SI, OFFSET SBuf_head MOV DI, OFFSET Dbuf_head MOV CX,COUNT CALL BLKCHEK堆棧傳遞-POP取/BP?。ㄗ覴ET n)舍棄的字節(jié)數(shù)n一般是調(diào)用前通過堆棧向過程傳遞的參數(shù)程序設(shè)計舉例過程調(diào)用與參數(shù)傳遞START: MOV AX,DATA MOV DS, AX LEA BX,ARRAY PUSH BX LEA BX,COUNT PUSH BX LEA BX,SUM PUSH BXCALL PRO_A

9、DD :OFFSET ARRAYOFFSET COUNTOFFSET SUM 斷點(diǎn)CS 斷點(diǎn)IP調(diào)用后SP運(yùn)行前SP堆棧段+8PRO_ADD PROC FAR PUSH AX PUSH BX PUSH CX PUSH BP MOV BP, SP MOV BX, BP+14;MOV CX, BX ;count MOV SI,BP+16; OFFSET ARRAY指針MOV BX,BP+12;SUM指針MOV AX,0 斷點(diǎn)AX 斷點(diǎn)CX 斷點(diǎn)BX 斷點(diǎn)BP +8程序設(shè)計舉例過程調(diào)用與參數(shù)傳遞(續(xù))LP: ADD AX,SI INC SI INC SI LOOP LP MOV BX, AX POP

10、 BP POP CX POP BX POP AX RET 6 斷點(diǎn)AX 斷點(diǎn)CX 斷點(diǎn)BX 斷點(diǎn)BP +8程序設(shè)計舉例過程調(diào)用與參數(shù)傳遞(續(xù)) 過程/子程序模塊化:調(diào)用與參數(shù)傳遞計算?。∟=8 WORD; N=2 ? 過程/子程序調(diào)用-遞歸計算?。∟=8 WORD; N12如何處理MOV AX, N ;計算 CALL PCALC MOV RESULT,AX RETRESULT DW ?課外選做:觀察堆棧變化數(shù)據(jù)流和程序流 遞歸調(diào)用(續(xù))PCALC:CMP AX,1 ;遞歸函數(shù)JNZ PCALC1 ; N=1, 結(jié)束RETPCALC1:PUSH AXDEC AX CALL PCALC ;遞歸調(diào)用POP BX MUL BX RET程序1 hello.c #include int main()printf(Hello, worldn);return 0;TCC -B -ms -Iinclude -Llib hello.c C語言函數(shù) Hello World 與系統(tǒng)調(diào)用DATASEGMENTszHelloDBHello,World!,0dh,0ah,$DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,ES:DATASTART

溫馨提示

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

評論

0/150

提交評論