第六章 微機(jī)的程序設(shè)計(jì)_第1頁(yè)
第六章 微機(jī)的程序設(shè)計(jì)_第2頁(yè)
第六章 微機(jī)的程序設(shè)計(jì)_第3頁(yè)
第六章 微機(jī)的程序設(shè)計(jì)_第4頁(yè)
第六章 微機(jī)的程序設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩26頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、 在了解和熟悉了8086/8088指令系統(tǒng)的基礎(chǔ)上,本章將介紹程序設(shè)計(jì)的一般過程,以及幾種典型的程序形成的編寫方法。 程序是計(jì)算機(jī)命令(語句)的有序集合,當(dāng)用計(jì)算機(jī)求解某些問題時(shí)需要編制程序。匯編語言程序設(shè)計(jì)步驟如下:分析問題分析問題建立數(shù)學(xué)模型建立數(shù)學(xué)模型確定算確定算法法繪制程序流程圖繪制程序流程圖內(nèi)存空間分內(nèi)存空間分配配編制程序與靜態(tài)檢查編制程序與靜態(tài)檢查程序調(diào)試程序調(diào)試 這種程序的形式最簡(jiǎn)單,計(jì)算機(jī)執(zhí)行程序的方式是“從頭到尾”,逐條執(zhí)行指令語句,直到程序結(jié)束,這是程序的最基本形式。 例6.1:用數(shù)據(jù)運(yùn)算指令,對(duì)兩個(gè)16位數(shù)相加運(yùn)算。這兩個(gè)數(shù)從地址10050開始連續(xù)存放,結(jié)果放在這兩個(gè)數(shù)之

2、后。 解:(1)分析題目 (2)確定算法 (3)繪制流程圖(見圖見圖6-26-2) (4)內(nèi)存空間分配(見表見表6-16-1)(5)編制的程序如下: MOV AXMOV AX,1000H1000H MOV DS MOV DS,AX AX ;DS=1000HDS=1000H MOV SI MOV SI,50H 50H ;被加數(shù)指針;被加數(shù)指針SI=50HSI=50H MOV DI MOV DI,52H 52H ;加數(shù)指針;加數(shù)指針DI=52HDI=52H MOV BX MOV BX,54H 54H ;和的指針;和的指針BX=54HBX=54H CLC CLC ;清;清CFCF X0R AX X0

3、R AX,AX AX ; MOV AXMOV AX,SI SI ;取一個(gè)字到;取一個(gè)字到AXAX ADC AX ADC AX,DIDI ;AXAX+DI+CFAXAX+DI+CF MOV MOV BXBX,AX AX ;存一個(gè)字到;存一個(gè)字到BXBX HLT HLT ;暫停;暫停 分支程序是利用條件轉(zhuǎn)移指令,使程序執(zhí)行到某一指令后,根據(jù)條件(即上面運(yùn)算的情況)是否滿足,來改變程序執(zhí)行的次序,這類程序使計(jì)算機(jī)有了判斷作用。 分支程序執(zhí)行完后可以立即結(jié)束,也可以轉(zhuǎn)到公共點(diǎn)結(jié)束,見圖圖6-46-4所示。 分支程序可以再分支,各分支程序之間沒有對(duì)應(yīng)關(guān)系,分支程序只要求在轉(zhuǎn)移指令分支程序只要求在轉(zhuǎn)移指令

4、中給出目標(biāo)地址,即可實(shí)現(xiàn)程序分支。中給出目標(biāo)地址,即可實(shí)現(xiàn)程序分支。 【例【例6.36.3】求AX累加器和BX寄存器中兩個(gè)無符號(hào)數(shù)之差的絕對(duì)值,結(jié)果放在內(nèi)存(2800)單元中。 (1)分析題目:此題目中,AX累加器和BX寄存器中的數(shù)是不知道的。對(duì)兩個(gè)不知大小的數(shù)相減并求絕對(duì)值,顯然應(yīng)該先解決哪一個(gè)值稍大些,然后再用大數(shù)減小數(shù)的方法,才可求得絕對(duì)值。(2)根據(jù)指令系統(tǒng)中的比較指令,編出判斷大小的環(huán)節(jié),即可解決問題。圖6-5為該例題的程序流程圖。(3)根據(jù)流程圖編制程序如下: CLC ;清除;清除CFCF CMP AX,BX ;AX-BXAX-BX,結(jié)果不返回,結(jié)果不返回 JC AA ;CF=1C

5、F=1轉(zhuǎn)轉(zhuǎn)AAAA去執(zhí)行(即去執(zhí)行(即 AXBXAX1,并且放在內(nèi)存(2001)單元中,而數(shù)據(jù)塊本身是從(2002)單元開始存放的,最后,把找出的最大值放到(2000)單元中。假設(shè)這段數(shù)據(jù)塊中的數(shù)都是無符號(hào)的8位數(shù)。 (1 1)分析題目)分析題目:此題必定是個(gè)循環(huán)程序,而且在處理部分應(yīng)包括判斷分支環(huán)節(jié)。 (2)根據(jù)指令系統(tǒng),我們可以采用尋找最尋找最大值大值的計(jì)算方法。 (3 3)繪制出此計(jì)算過程的程序流程如圖)繪制出此計(jì)算過程的程序流程如圖6-6-l5l5所示。所示。(4) 編制的程序如下編制的程序如下(未作為子程序時(shí)未作為子程序時(shí)): MOVSI,2001H ; 指針指向放數(shù)據(jù)塊長(zhǎng)度的單元指針指向放數(shù)據(jù)塊長(zhǎng)度的單元 MOVCL,SI ; 取出來作為循環(huán)次數(shù)取出來作為循環(huán)次數(shù) INCSI ; 指針指向第一個(gè)數(shù)指針指向第一個(gè)數(shù) MOVAL,00 ; 設(shè)置最大值設(shè)置最大值00 MOVCH,00 ; 初始化初始化LP:CLC ; 清除進(jìn)位位清除進(jìn)位位 CMPAL,SI ; 取出數(shù)與最大值比較取出數(shù)與最大值比較 JCBB ; AL中數(shù)小,轉(zhuǎn)到取代處中數(shù)小,轉(zhuǎn)到取代處 JMPAA ; AL中數(shù)大,跳過去中數(shù)大,跳過去BB: MOVAL,SI ; 把大數(shù)放到把大數(shù)放到AL中保存中保存AA: INCSI ; 指針下移指針下移 LOOPLP ;

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論