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

下載本文檔

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

文檔簡介

1、 在了解和熟悉了8086/8088指令系統(tǒng)的基礎(chǔ)上,本章將介紹程序設(shè)計的一般過程,以及幾種典型的程序形成的編寫方法。 程序是計算機命令(語句)的有序集合,當用計算機求解某些問題時需要編制程序。匯編語言程序設(shè)計步驟如下:分析問題分析問題建立數(shù)學模型建立數(shù)學模型確定算確定算法法繪制程序流程圖繪制程序流程圖內(nèi)存空間分內(nèi)存空間分配配編制程序與靜態(tài)檢查編制程序與靜態(tài)檢查程序調(diào)試程序調(diào)試 這種程序的形式最簡單,計算機執(zhí)行程序的方式是“從頭到尾”,逐條執(zhí)行指令語句,直到程序結(jié)束,這是程序的最基本形式。 例6.1:用數(shù)據(jù)運算指令,對兩個16位數(shù)相加運算。這兩個數(shù)從地址10050開始連續(xù)存放,結(jié)果放在這兩個數(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 ;取一個字到;取一個字到AXAX ADC AX ADC AX,DIDI ;AXAX+DI+CFAXAX+DI+CF MOV MOV BXBX,AX AX ;存一個字到;存一個字到BXBX HLT HLT ;暫停;暫停 分支程序是利用條件轉(zhuǎn)移指令,使程序執(zhí)行到某一指令后,根據(jù)條件(即上面運算的情況)是否滿足,來改變程序執(zhí)行的次序,這類程序使計算機有了判斷作用。 分支程序執(zhí)行完后可以立即結(jié)束,也可以轉(zhuǎn)到公共點結(jié)束,見圖圖6-46-4所示。 分支程序可以再分支,各分支程序之間沒有對應關(guān)系,分支程序只要求在轉(zhuǎn)移指令分支程序只要求在轉(zhuǎn)移指令

4、中給出目標地址,即可實現(xiàn)程序分支。中給出目標地址,即可實現(xiàn)程序分支。 【例【例6.36.3】求AX累加器和BX寄存器中兩個無符號數(shù)之差的絕對值,結(jié)果放在內(nèi)存(2800)單元中。 (1)分析題目:此題目中,AX累加器和BX寄存器中的數(shù)是不知道的。對兩個不知大小的數(shù)相減并求絕對值,顯然應該先解決哪一個值稍大些,然后再用大數(shù)減小數(shù)的方法,才可求得絕對值。(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ù)都是無符號的8位數(shù)。 (1 1)分析題目)分析題目:此題必定是個循環(huán)程序,而且在處理部分應包括判斷分支環(huán)節(jié)。 (2)根據(jù)指令系統(tǒng),我們可以采用尋找最尋找最大值大值的計算方法。 (3 3)繪制出此計算過程的程序流程如圖)繪制出此計算過程的程序流程如圖6-6-l5l5所示。所示。(4) 編制的程序如下編制的程序如下(未作為子程序時未作為子程序時): MOVSI,2001H ; 指針指向放數(shù)據(jù)塊長度的單元指針指向放數(shù)據(jù)塊長度的單元 MOVCL,SI ; 取出來作為循環(huán)次數(shù)取出來作為循環(huán)次數(shù) INCSI ; 指針指向第一個數(shù)指針指向第一個數(shù) MOVAL,00 ; 設(shè)置最大值設(shè)置最大值00 MOVCH,00 ; 初始化初始化LP:CLC ; 清除進位位清除進位位 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等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論