微機(jī)原理與應(yīng)用08 MASM_第1頁
微機(jī)原理與應(yīng)用08 MASM_第2頁
微機(jī)原理與應(yīng)用08 MASM_第3頁
微機(jī)原理與應(yīng)用08 MASM_第4頁
微機(jī)原理與應(yīng)用08 MASM_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

微機(jī)原理與應(yīng)用四川化工職業(yè)技術(shù)學(xué)院信息工程系課程資料目標(biāo)知識(shí)目標(biāo)掌握匯編語言程序編寫的基本方法。專業(yè)能力目標(biāo)能設(shè)計(jì)簡(jiǎn)單匯編程序;掌握順序結(jié)構(gòu)、分支結(jié)構(gòu)、循環(huán)結(jié)構(gòu)。方法能力目標(biāo)有自學(xué)能力、獲取新工藝、新技術(shù)的能力;利用網(wǎng)絡(luò)、各種資料獲取信息的能力;自我約束、身心健康與管理能力;制定工作計(jì)劃、評(píng)價(jià)工作結(jié)果的能力。社會(huì)能力目標(biāo)交流、合作能力;決策和執(zhí)行能力;語言、文字表達(dá)能力;社會(huì)責(zé)任心和環(huán)境保護(hù)意識(shí);尊紀(jì)守法、良好職業(yè)道德和敬業(yè)精神。匯編語言程序1.匯編語言的基本概念指令MOVAX,1234H對(duì)應(yīng)的機(jī)器代碼B83412。使用助記符號(hào)來表示二進(jìn)制格式的指令代碼和變量地址的指令稱為符號(hào)指令。匯編語言程序運(yùn)行之前要將其轉(zhuǎn)換成機(jī)器代碼,轉(zhuǎn)換的過程是由編譯程序完成。匯編語言程序2.匯編語言源程序的格式匯編語言源程序采用分段式結(jié)構(gòu),一個(gè)匯編語言源程序由若干個(gè)邏輯段組成。每個(gè)邏輯段以SEGMENT語句開始,以ENDS語句結(jié)束。整個(gè)源程序以END語句結(jié)束(表示結(jié)束匯編)。簡(jiǎn)單的匯編語言源程序DATASEGMENT;定義一個(gè)名字為DATA的段DATDB1,2,0;在DATA段內(nèi)定義3字節(jié)數(shù)據(jù)DATAENDS

;DATA段結(jié)束;---------------------------------------------------------STACK

SEGMENTPARASTACK;定義名字為STACK的堆棧段DW20DUP(0);堆棧段大小為20個(gè)字STACKENDS

;堆棧段結(jié)束;---------------------------------------------------------CODESEGMENT;定義一個(gè)名為CODE的程序代碼段ASSUMECS:CODE,DS:DATA,SS:STACKSTART:

MOVAX,DATAMOVDS,AX;給DS賦數(shù)據(jù)段初值MOVAL,DATADDAL,DAT+1;前兩個(gè)數(shù)據(jù)相加

MOVDAT+2,AL

;和存入第三個(gè)數(shù)據(jù)的位置MOVAH,4CHINT21H

;使用系統(tǒng)調(diào)用返回操作系統(tǒng)CODEENDS

;代碼段結(jié)束;----------------------------------------------------------ENDSTART;源程序結(jié)束,入口地址為BEGIN程序是計(jì)算機(jī)命令的有序集合,用計(jì)算機(jī)求解某些問題時(shí)往往需要編制程序,其設(shè)計(jì)步驟歸納如下:(1)分析問題(2)建立數(shù)學(xué)模型(3)確定算法(4)繪制程序流程圖(5)內(nèi)存空間分配(6)編制程序與靜態(tài)檢查(7)程序調(diào)試程序設(shè)計(jì)步驟程序的基本結(jié)構(gòu)及基本程序設(shè)計(jì)順序結(jié)構(gòu)與簡(jiǎn)單程序設(shè)計(jì)條件結(jié)構(gòu)與分支程序設(shè)計(jì)循環(huán)結(jié)構(gòu)與循環(huán)程序設(shè)計(jì)匯編語言程序設(shè)計(jì)方法1.簡(jiǎn)單程序設(shè)計(jì)簡(jiǎn)單程序,又稱為順序程序。這種程序的形式最簡(jiǎn)單,計(jì)算機(jī)執(zhí)行程序的方式是“從頭到尾”,逐條執(zhí)行指令語句,直到程序結(jié)束,這是最基本的形式,任何程序都離不開這種形式。在匯編語言程序中簡(jiǎn)單程序主要由數(shù)據(jù)傳送指令、算術(shù)運(yùn)算指令和邏輯運(yùn)算指令組合而成?!纠烤幊逃?jì)算Z=(X2-3Y)/2DATASEGMENTXDB25YDB32ZDW?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVAL,XMULALMOVBL,YADDBL,BLADDBL,YSUBAX,BXSHRAX,1MOVZ,AXMOVAH,4CHINT21HCODEENDSENDSTART計(jì)算X*X計(jì)算3*Y計(jì)算=(X2-3Y)/2→Z開始結(jié)束數(shù)據(jù)段代碼段【例】編程計(jì)算Z=(X2-3Y)/2【例】:存儲(chǔ)器單元XYZ中存放了一個(gè)兩位的BCD碼數(shù),試將其拆開,其中十位送AL低位,個(gè)位送BL低位。

開始結(jié)束95→BLBL→ALAL高4位移到低位BL高4位清零【例】:存儲(chǔ)器單元XYZ中存放了一個(gè)兩位的BCD碼數(shù),試將其拆開,其中十位送AL低位,個(gè)位送BL低位。

參考程序:DATASEGMENTXYZDB95HDATAENDSSTACKSEGMENTSTACKDB100DUP(0)STACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACK

START:MOVAX,DATAMOVDS,AX

MOVBL,XYZMOVAL,BLANDBL,0FHMOVCL,4SHRAL,CLMOVAH,4CHINT21HCODEENDSENDSTART數(shù)據(jù)段定義XYZ堆棧段設(shè)定堆棧范圍代碼段放置主程序開始結(jié)束95→BLBL→ALAL高4位移到低位BL高4位清零順序結(jié)構(gòu)【例】

對(duì)兩個(gè)4位十進(jìn)制數(shù)進(jìn)行求和運(yùn)算,十進(jìn)制數(shù)用BCD碼表示(1234+5678)。DATASEGMENTDATlDB12H,34HDAT2DB56H,78HSUMDB?,?DATAENDSSTACKSEGMENTDW20DUP(0)STACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKSTART:MOVAX,DATAMOVDS,AXMOVAL,DAT1+1ADDAL,DAT2+1DAAMOVSUM+1,ALMOVAL,DAT1ADCAL,DAT2DAAMOVSUM,ALMOVAH,4CHINT21H

CODEENDSENDSTART解:根據(jù)題意,在程序的數(shù)據(jù)段放置BCD碼形式的十進(jìn)制數(shù)。在計(jì)算中考慮到多位運(yùn)算,高位使用帶進(jìn)位加法指令,并注意進(jìn)行十進(jìn)制加法調(diào)整?!纠?/p>

對(duì)兩個(gè)4位十進(jìn)制數(shù)進(jìn)行求和運(yùn)算,十進(jìn)制數(shù)用BCD碼表示(1234+5678)。指令A(yù)指令B在順序結(jié)構(gòu)中每條指令僅被執(zhí)行一次。開始結(jié)束順序結(jié)構(gòu)小結(jié)順序結(jié)構(gòu)小結(jié)【思考題】將16位無符號(hào)數(shù)X加Y的結(jié)果存放到地址3000H開始的單元。開始結(jié)束X→AXAX+Y→AXBL加進(jìn)位位BL清零傳送【分析】16位無符號(hào)數(shù)X加Y,可能產(chǎn)生進(jìn)位,存儲(chǔ)單元需要至少3個(gè)單元?!舅伎碱}】將16位無符號(hào)數(shù)X加Y的結(jié)果存放到地址3000H開始的單元。順序結(jié)構(gòu)【例】試編制匯編語言程序,并按公式Z=((X+Y)*8-X)/4計(jì)算Z值,并將結(jié)果保存在RESULT中。分析:按題意,本題為典型的順序結(jié)構(gòu)。在已知X、Y的情況下,只需按公式計(jì)算Z值即可,故在數(shù)據(jù)段設(shè)定了X、Y的值。【例】試編制匯編語言程序,并按公式Z=((X+Y)*8-X)/4計(jì)算Z值,并將結(jié)果保存在RESULT中。分支程序根據(jù)條件是真或假?zèng)Q定執(zhí)行與否判斷的條件是各種指令,如CMP、TEST等執(zhí)行后形成的狀態(tài)標(biāo)志轉(zhuǎn)移指令JC和JMP可以實(shí)現(xiàn)分支控制分支結(jié)構(gòu)有單分支結(jié)構(gòu)雙分支結(jié)構(gòu)多分支結(jié)構(gòu)分支程序設(shè)計(jì)分支程序設(shè)計(jì)的結(jié)構(gòu)形式(a)雙分支(b)單分支(c)多分支 CMPAX,0

JGENOTNEG ;條件滿足(AX≥0),轉(zhuǎn)移NEGAX ;條件不滿足,求補(bǔ)NOTNEG

: MOVRESULT,AX ;條件滿足AX>=0?求補(bǔ)NY簡(jiǎn)單分支程序設(shè)計(jì)【例】計(jì)算AX中有符號(hào)數(shù)的絕對(duì)值。負(fù)正不恰當(dāng)?shù)姆种?/p>

CMPAX,0 JLYESNEG ;條件滿足(AX<0),轉(zhuǎn)移

JMPNOTNEGYESNEG: NEGAX ;條件滿足,求補(bǔ)NOTNEG: MOVRESULT,AX ;條件不滿足AX<0?求補(bǔ)YNJMP簡(jiǎn)單分支程序設(shè)計(jì)

合適的分支

CMPAX,0JGENOTNEG NEGAX NOTNEG

:MOVRESULT,AX

不恰當(dāng)?shù)姆种?/p>

CMPAX,0 JLYESNEG

JMPNOTNEGYESNEG: NEGAXNOTNEG: MOVRESULT,AXAX>=0?求補(bǔ)NYAX<0?求補(bǔ)YNJMP簡(jiǎn)單分支程序設(shè)計(jì)

【例】顯示BX的最高位(解1)

SHLBX,1 ;BX最高位移入CF標(biāo)志

JCONE

;CF=1,即最高位為1,轉(zhuǎn)移 MOVDL,30H ;CF=0,即最高位為0:DL←30H=‘0’ JMPTWO ;一定要跳過另一個(gè)分支體ONE: MOVDL,31H ;DL←31H=‘1’TWO: MOVAH,2 INT21H ;顯示BX.15=1?DL=31HDL=30HYN顯示雙分支程序設(shè)計(jì)

【例】顯示BX的最高位(解2)

MOVDL,’0’ ;DL←30H=‘0’ SHLBX,1 ;BX最高位移入CF標(biāo)志

JNCTWO

;CF=0,即最高位為0,轉(zhuǎn)移

MOVDL,’1’ ;CF=1,即最高位為1:DL←31H=‘1’TWO: MOVAH,2 INT21H ;顯示BX.15=0?DL=‘1’YN顯示DL=‘0’雙分支程序設(shè)計(jì)雙分支程序設(shè)計(jì)【例】設(shè)有單字節(jié)無符號(hào)數(shù)X、Y、Z,若X+Y>255,則求X+Z,否則求X-Z,運(yùn)算結(jié)果放在F1中。分析:因?yàn)閄,Y均為無符號(hào)數(shù),所以當(dāng)X+Y>255時(shí)則會(huì)產(chǎn)生進(jìn)位,即CF=1,所以可以用進(jìn)位標(biāo)志來判斷?!纠烤幊逃?jì)算下列函數(shù)的值:

1(X>0)

Y=0(X=0)

-1(X<0) X的取值范圍:-128~+127X>=0?YNX→(AL)X=0?Y←-1Y←0Y←1NY多分支程序設(shè)計(jì)分支程序可以有兩種形式:簡(jiǎn)單分支結(jié)構(gòu)和多分支結(jié)構(gòu)。其中簡(jiǎn)單分支結(jié)構(gòu)有兩種,相當(dāng)于高級(jí)語言中的IFTHEN和IFTHENELSE結(jié)構(gòu);多分支結(jié)構(gòu)則相當(dāng)于高級(jí)語言中的DO-CASE結(jié)構(gòu)。條件成立嗎處理1處理2YN分支結(jié)構(gòu)小結(jié)【思考題】試判斷寄存器AL中的帶符號(hào)數(shù),若是正數(shù)傳送到80H端口,若是負(fù)數(shù)傳送到90H端口。 【思考題】試判斷寄存器AL中的帶符號(hào)數(shù),若是正數(shù)傳送到80H端口,若是負(fù)數(shù)傳送到90H端口。 【分析】判斷一個(gè)數(shù)符號(hào)位的方法很多,最直接的辦法是和80H比較。 (凡是大于80H的數(shù),最高位一定是1,即是一個(gè)負(fù)數(shù)。)AL>80HAL→90HAL→80HYN開始結(jié)束分支結(jié)構(gòu)循環(huán)結(jié)構(gòu)(1)循環(huán)程序的結(jié)構(gòu)與組成1)循環(huán)的初始化部分。2)循環(huán)工作部分。3)循環(huán)控制部分。4)循環(huán)結(jié)束部分。(2)循環(huán)控制方法1)計(jì)數(shù)法2)條件控制法(3)多重循環(huán)計(jì)數(shù)循環(huán)結(jié)構(gòu)【例】變量BUF中有20個(gè)帶符號(hào)數(shù),統(tǒng)計(jì)其中正數(shù)個(gè)數(shù)。開始初始化Bl+1[SI]<0?Cx<>0?ENDYYMOVCX,20MOVBL,0LEASI,BUFA1:CMPBYTEPTR[SI],0JLA2INCBLA2:INCSIDECCXJNZA1條件循環(huán)結(jié)構(gòu)【例】變量BUF是一個(gè)以‘$’為結(jié)束標(biāo)志的字符串,統(tǒng)計(jì)其字符個(gè)數(shù)。開始初始化Al+1[SI]=‘$’?ENDYJMPLEASI,BUFMOVAL,1A1:CMPBYTEPTR[SI],’$’

溫馨提示

  • 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)論