版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024至2030年中國軟件加密系統(tǒng)行業(yè)投資前景及策略咨詢研究報告
- 2024至2030年中國液控緩閉止回蝶閥行業(yè)投資前景及策略咨詢研究報告
- 2024至2030年中國推進(jìn)式攪拌機(jī)行業(yè)投資前景及策略咨詢研究報告
- 2024至2030年透光阻燃樹脂項目投資價值分析報告
- 2024至2030年中國三濾紙行業(yè)投資前景及策略咨詢研究報告
- 2024至2030年木雕擺件項目投資價值分析報告
- 2024至2030年中型熱熔機(jī)項目投資價值分析報告
- 工業(yè)自動化設(shè)備采購與安裝服務(wù)合同
- 板材買賣合同
- 江南地區(qū)建筑工程項目施工合同
- 《論語》中英對照(理雅各譯)
- 2023年南京銀行招聘人員筆試歷年難、易錯考點(diǎn)試題含答案附詳解
- 2023年生態(tài)環(huán)境綜合行政執(zhí)法考試參考題庫(400題)
- 化學(xué)中考模擬試題雙向細(xì)目表
- 喬木、灌木種植專項施工方案
- 中職園林專業(yè)實(shí)訓(xùn)(校編)教案
- 繼承法智慧樹知到答案章節(jié)測試2023年中南財經(jīng)政法大學(xué)
- 基礎(chǔ)心電圖診斷與應(yīng)用智慧樹知到答案章節(jié)測試2023年中山大學(xué)
- GB/T 37136-2018電力用戶供配電設(shè)施運(yùn)行維護(hù)規(guī)范
- GB/T 22412-2016普通裝飾用鋁塑復(fù)合板
- GB 7681-2008鍘草機(jī)安全技術(shù)要求
評論
0/150
提交評論