版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
第五章循環(huán)與分支程序設(shè)計5.1循環(huán)程序設(shè)計5.2分支程序設(shè)計5.3如何在實模式下發(fā)揮80386及其后繼機型的優(yōu)勢
1.編寫匯編語言程序步驟
l
分析實際問題,確定解決問題的算法
l
按算法畫出程序流程圖
l
按流程圖編寫程序
l上機調(diào)試,運行程序注:本教材所討論的編程環(huán)境只限于在DOS操作系統(tǒng)下的實模式2.判斷程序質(zhì)量的標(biāo)準(zhǔn)程序的正確性程序的可讀性程序的執(zhí)行時間程序所占內(nèi)存大小3.幾種程序結(jié)構(gòu)順序結(jié)構(gòu)循環(huán)結(jié)構(gòu)分支結(jié)構(gòu)子程序結(jié)構(gòu)順序結(jié)構(gòu)形式循環(huán)結(jié)構(gòu)形式當(dāng)型循環(huán)(當(dāng)條件成立進入循環(huán))循環(huán)初始設(shè)置循環(huán)體循環(huán)條件判斷?YN直到型循環(huán)(直到條件成立退出循環(huán))YN循環(huán)初始設(shè)置循環(huán)體循環(huán)條件判斷?兩個分支YN
、、、
CMPAL,BLJGgreat
JMPexitgreat:
exit:、、、、、、
AL≤BL處理AL>BL處理分支結(jié)構(gòu)形式三個分支
、、、
CMPAL,0
JGgreat
JLless
JMPexitless:
JMPexitgreat:
exit:
、、、AL=0處理AL>0處理AL<0處理YYNN分支結(jié)構(gòu)形式……1.多處調(diào)用完成同一功能的子程:codeSEGMENTstart:、、
CALLsubp
、、
CALLsubp
、、
CALLsubp
、、
MOVAH,4CHINT21HsubpPROC
、、、、
RETsubpENDPcodeENDSENDstart2.模塊化程序設(shè)計:codeSEGMENTbegin:CALL
sub1
CALLsub2
CALLsub3MOVAH,4CHINT21Hsub1PROC
、、
RETsub1ENDPsub2PROC
、、
RETsub2ENDPsub3PROC
、、
RETsub3ENDPcodeENDSENDbegin
子程結(jié)構(gòu)形式注意返回DOS語句位置開
始結(jié)
束
初
始
化循環(huán)的初始狀態(tài)
循
環(huán)
體循環(huán)的工作部分及修改部分
控制條件
計數(shù)控制特征值控制地址邊界控制5.1.1循環(huán)程序的結(jié)構(gòu)形式5.1循環(huán)程序設(shè)計(1)DO-WHILE結(jié)構(gòu)(2)DO-UNTIL結(jié)構(gòu)例1
將寄存器BX中的內(nèi)容以十六進制形式顯示出來。
(二進制十六進制)有關(guān)字符、數(shù)碼轉(zhuǎn)換的處理
1.計算機處理字符時,常用的字符編碼是ASCII碼。2.數(shù)字和字母的ASCII碼是一個有序序列數(shù)字0~9:30H~39H大寫字母A~Z:41H~5AH小寫字母a~z:61H~7AH5.1.2循環(huán)程序設(shè)計方法3.計算機處理信息時,其對象都是二進制數(shù)。外設(shè)(顯示器、打印機、鍵盤等)用ASCII碼與CPU進行信息傳送。例如:(1)在鍵盤上按下某一字符鍵(如’9’),鍵盤接口 向鍵盤緩沖區(qū)送去的是該字符的ASCII碼(如
39H),而不是送數(shù)字09H。
(2)在文本方式下,要在顯示器上顯示某一字符
(如’A’),須將該字符的ASCII碼(如41H)送顯示緩沖區(qū),不是送數(shù)字0AH。計算機要利用顯示器、鍵盤等外設(shè)時,須據(jù)程序設(shè)計的需要進行有關(guān)轉(zhuǎn)換。例將CPU運算的結(jié)果通過顯示器顯示時,如二進制數(shù)“A9”
需將結(jié)果轉(zhuǎn)換成其對應(yīng)的ASCII碼才能進行顯示。例
CPU要處理從鍵盤輸入的某一數(shù)據(jù),如鍵入“1234”
需將該數(shù)據(jù)串進行轉(zhuǎn)換十六進制后才能應(yīng)用。例1
將BX寄存器中的內(nèi)容以十六進制形式顯示出來。
BX是一個16位寄存器二進制1010100100111110
用十六進顯示時,每4位用一個字符顯示,共4個其中:0000→’0’30H,1010→’A’41H
0001→’1’31H
,1011→’B’42H
、、、、
1001→’9’39H
,1111→’F’46H?十六進制A93E屏幕上的顯示‘A’‘9’‘3’‘E’對應(yīng)的ASCII41H39H33H45HBX1234算法:取出要顯示的某4位,轉(zhuǎn)換為對應(yīng)的ASCII碼,再調(diào)用DOS系統(tǒng)功能進行顯示。(1)對于0000~1001(0~9),先擴展成一個字節(jié),高4位清0,加上30H后,即可得字符’0’~’9’對應(yīng)的ASCII碼。
00000001B+30H=31H00001001B+30H=39H
0001B‘1’1001B‘9’(2)對于1010~1111(A~F),先擴展成一個字節(jié),高4位清0,
加上30H后,還要再加上07H,才能得到’A’~’F’對應(yīng)的ASCII碼
00001010B+30H+07H=41H00001111B+30H+07H=46H
1010B‘A’1111B‘F’codeSEGMENTASSUMECS:codestart:MOVCH,4;字符個數(shù)rotate:MOVCL,4;循環(huán)移位次數(shù)
ROLBX,CL
;取顯示位的值
MOVAL,BL
;保存在AL中
ANDAL,0FH
;清除高4位
ADDAL,30H
;轉(zhuǎn)變?yōu)閿?shù)字的ASCII
CMPAL,3aH;大于3aH,則應(yīng)轉(zhuǎn)變
JLprint;為數(shù)字0~9的ASCII
ADDAL,07H;為字母A~F的ASCIIprint:MOVDL,AL;送
ASCII字符到DLMOVAH,2;顯示DL中的字符
INT21HDECCH;顯示結(jié)束?
JNZnextMOVAH,4CH;返回DOSINT21HcodeENDS
ENDstart顯示字符個數(shù)CH=4循環(huán)移位次數(shù)CL=4BX循環(huán)左移4位,將要顯示的值移至低4位,保存在AL中清AL的高4位,只保留要顯示位的值A(chǔ)L←AL+30H完成數(shù)值0~9的ASCII碼轉(zhuǎn)換YNAL←AL+07H完成數(shù)值A(chǔ)~F的ASCII碼轉(zhuǎn)換用02功能顯示DL中的字符YN返回DOSAL超出39H?CH←CH-1轉(zhuǎn)換結(jié)束?開始例5.4
將正數(shù)n插入一個已整序的字?jǐn)?shù)組的正確位置。
xdw?array_headdw3,5,15,23,37,49,52,65,78,99array_enddw105ndw32movax,nmovarray_head-2,0ffffhmovsi,0compare:
cmp
array_end[si],ax
jleinsertmovbx,array_end[si]movarray_end[si+2],bxsubsi,2
jmpshortcompareinsert:movarray_end[si+2],ax
-1
3
5
49
15
52
23
37
105
99
78
65
32xn尋址方式?1、負(fù)數(shù)在計算機內(nèi)部使用補碼表示2、數(shù)組的訪問方式:
①寄存器相對尋址 ②基址變址尋址
③相對基址變址尋址
④帶比例因子的尋址(3種)例5.5邏輯尺的使用
LOGIC_RULE DW 00DCH …… MOV BX,0 MOV CX,10 MOV DX,LOGIC_RULENEXT: MOV AX,X[BX]
SHR DX,1
JC SUBTRACT ADD AX,Y[BX] JMP SHORTRESULTSUBTRACT: SUB AX,Y[BX]RESULT: MOV Z[BX],AX ADD BX,2 LOOP NEXT RET ……尋址方式?邏輯尺:Ⅰ、定義Ⅱ、使用邏輯尺的形式:Ⅰ、靜態(tài)預(yù)置Ⅱ、動態(tài)修改5.1.3多重循環(huán)程序設(shè)計基本方法與單重循環(huán)相同,但要注意:1、分別考慮各重循環(huán)的控制條件及其程序?qū)崿F(xiàn),相互之間不能混淆2、每次從外層循環(huán)再次進入內(nèi)層循環(huán)時,初始條件要重新設(shè)置例5.7
將首地址為a的字?jǐn)?shù)組從大到小排序(氣泡算法,多重循環(huán))
adw100,30,78,99,15,-1,66,54,189,256movcx,10
dec
cxloop1:movdi,cxmovbx,0loop2:movax,a[bx]
cmpax,a[bx+2]
jgecontinue
xchgax,a[bx+2]mova[bx],axcontinue:addbx,2looploop2
movcx,dilooploop1注意:與教材的不同數(shù)組的訪問方式循環(huán)程序設(shè)計小結(jié)1、循環(huán)控制條件的選擇:
a.循環(huán)次數(shù)已知,采用LOOP b.循環(huán)次數(shù)已知,但有可能使用其他特征或條件結(jié)束循環(huán), 可采用LOOPZ和LOOPNZ c.循環(huán)次數(shù)未知,具體問題具體分析2、設(shè)立條件標(biāo)志位的方法5.2分支程序設(shè)計5.2.1分支程序的結(jié)構(gòu)形式雙分支與多分支的共同特點:運行方向是向前的在某一種特定條件下,只能執(zhí)行其中的一個分支5.2.1分支程序設(shè)計方法1、使用CMP、TEST等運算型指令+條件轉(zhuǎn)移指令2、使用邏輯尺的方法3、使用跳躍表法實現(xiàn)CASE結(jié)構(gòu)例5.5
設(shè)有數(shù)組x(x1,…,x10)和y(y1,…,y10),編程計算
z1=x1+y1z2=x2+y2z3=x3-y3z4=x4-y4z5=x5-y5z6=x6+y6z7=x7-y7z8=x8-y8z9=x9+y9z10=x10+y10
邏輯尺:0011011100
1減法
0加法xdwx1,x2,x3,x4,x5,x6,x7,x8,x9,x10ydwy1,y2,y3,y4,y5,y6,y7,y8,y9,y10zdwz1,z2,z3,z4,z5,z6,z7,z8,z9,z10logic_ruledw00dch
mov
bx,0
mov
cx,10
mov
dx,logic_rulenext:movax,x[bx]
shr
dx,1
jcsubtractaddax,y[bx]
jmpshortresult;向前引用subtract:subax,y[bx]
result:mov
z[bx],axaddbx,2loopnext例5.10
根據(jù)AL寄存器中哪一位為1(從低位到高位)把程序轉(zhuǎn)移到8個不同的程序分支去。branch_tabledwroutine1
dwroutine2
dwroutine3
dwroutine4
dwroutine5
dwroutine6
dwroutine7
dwroutine8注意:DW標(biāo)號的使用寄存器間接尋址
cmpal,0
jecontinueleabx,branch_tableL
:shral,1;邏輯右移
jnbnot_yet
;jnb=jnc
jmpwordptr
[bx]
;段內(nèi)間接轉(zhuǎn)移not_yet:addbx,typebranch_table
jmp
Lcontinue:……routine1:……routine2:…………可提高效率寄存器間接尋址
cmpal,0
jecontinue
mov
si,0
L
:shral,1 ;邏輯右移
jnbnot_yet
;jnb=jnc
jmp
branch_table[si]
;段內(nèi)間接轉(zhuǎn)移not_yet:
addsi,typebranch_table
jmp
Lcontinue:……routine1:……routine2:…………基址變址尋址
cmpal,0
jecontinueleabx,branch_table
mov
si,7*typebranch_table
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 1.1 國家是什么(導(dǎo)學(xué)案) 高二政治 (統(tǒng)編版選擇性必修1)
- 印刷機械行業(yè)智能化發(fā)展的市場機遇分析考核試卷
- 2025年銷售傭金合同范本與業(yè)績激勵方案3篇
- 2025版木工行業(yè)培訓(xùn)與認(rèn)證服務(wù)合同范本4篇
- 2025年商業(yè)委托銷售協(xié)議
- 2025年合法住房公租房協(xié)議
- 二零二五年度駕校品牌推廣與市場拓展合作合同2篇
- 2025年度個人二手車轉(zhuǎn)讓及二手車增值服務(wù)合同3篇
- 二零二五年度林業(yè)苗木繁育基地承包合同4篇
- 二零二五年度集體產(chǎn)權(quán)房屋買賣合同樣本(含房屋產(chǎn)權(quán)調(diào)查及核實要求)
- 《醫(yī)院財務(wù)分析報告》課件
- 2025老年公寓合同管理制度
- 2024-2025學(xué)年人教版數(shù)學(xué)六年級上冊 期末綜合卷(含答案)
- 2024中國汽車后市場年度發(fā)展報告
- 感染性腹瀉的護理查房
- 天津市部分區(qū)2023-2024學(xué)年高二上學(xué)期期末考試 物理 含解析
- 《人工智能基礎(chǔ)》全套英語教學(xué)課件(共7章)
- 廢鐵收購廠管理制度
- 物品賠償單范本
- 《水和廢水監(jiān)測》課件
- 滬教版六年級數(shù)學(xué)下冊課件【全冊】
評論
0/150
提交評論