




版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025陜西省建筑安全員-B證(項(xiàng)目經(jīng)理)考試題庫
- 2025年河北省安全員知識(shí)題庫附答案
- 醫(yī)療耗材銷售合同范本
- 印制資料合同范例
- 細(xì)胞培養(yǎng)鉆石銷售代理合同
- 公司間策劃合同范本
- 出售公寓房合同范本
- 不執(zhí)行合同范本
- 暗能量教育數(shù)據(jù)價(jià)值挖掘
- CUBA 高職組籃球比賽中技術(shù)運(yùn)用的效果研究
- 實(shí)驗(yàn)一 外科常用手術(shù)器械課件
- 電梯結(jié)構(gòu)與原理-第2版-全套課件
- 《現(xiàn)代漢語》語音教學(xué)上課用課件
- 采購流程各部門關(guān)系圖
- 《遙感導(dǎo)論》全套課件
- 力士樂工程機(jī)械液壓培訓(xùn)資料(共7篇)課件
- 村光伏發(fā)電申請(qǐng)書
- 降低混凝土路面裂縫發(fā)生率QC小組資料
- 【教師必備】部編版四年級(jí)語文上冊(cè)第二單元【集體備課】
- 支氣管擴(kuò)張的護(hù)理PPT
- 施工現(xiàn)場(chǎng)專項(xiàng)消防安全檢查表
評(píng)論
0/150
提交評(píng)論