版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 分析問題分析問題 建立數(shù)學(xué)模型建立數(shù)學(xué)模型 確定算法確定算法 繪制程序流程圖繪制程序流程圖 內(nèi)存空間分配內(nèi)存空間分配 編制程序與靜態(tài)檢查編制程序與靜態(tài)檢查 程序調(diào)試程序調(diào)試程序:計(jì)算機(jī)命令(語句)的有序集合。程序:計(jì)算機(jī)命令(語句)的有序集合。匯編語言程序設(shè)計(jì)步驟:匯編語言程序設(shè)計(jì)步驟:開始開始判斷判斷處理處理處理處理結(jié)束結(jié)束處理處理YN例:將內(nèi)存單元例:將內(nèi)存單元10050H的內(nèi)容拆成兩段,每段的內(nèi)容拆成兩段,每段4位,分別存位,分別存 入入10051H(低(低4位)和位)和10052H(高(高4位)單元。即位)單元。即 10051H和和10052H單元的高單元的高4位都為位都為0。分析:
2、分析:理解題意,假設(shè)理解題意,假設(shè)10050H單元的單元的內(nèi)容是內(nèi)容是6CH,題意是把它分成,題意是把它分成06H和和0CH,分別存入,分別存入10051H和和10052H單元中。單元中。確定算法:確定算法:可以通過移位指令,也可以用可以通過移位指令,也可以用邏輯與運(yùn)算指令(與邏輯與運(yùn)算指令(與0FH)。)。開始開始初始化初始化用間接尋址取數(shù)用間接尋址取數(shù)AL用邏輯與指令將該數(shù)與用邏輯與指令將該數(shù)與0FH,得低得低4位存入位存入10051H單元單元再取出原始數(shù)再取出原始數(shù)AL邏輯右移得高邏輯右移得高4位,存入位,存入10052H單元單元暫停繪制程序繪制程序流程圖流程圖內(nèi)存分配內(nèi)存分配內(nèi)存地址內(nèi)
3、存地址 內(nèi)容內(nèi)容10050H 原始數(shù)原始數(shù)(6CH)10051H 原低原低4位位(0CH)10052H 原高原高4位位(06H)簡(jiǎn)單地畫一個(gè)表,便于日后查看簡(jiǎn)單地畫一個(gè)表,便于日后查看 編制程序編制程序MOV AX,1000HMOV DS,AX ;DS=1000HMOV SI, 50H ;源指針;源指針SI=50HMOV AL,SI ;讀;讀10050H單元單元 AND AL,0FH ;AL高高4位清位清0MOV SI+1,ALMOV AL,SIMOV CL , 4SHR AL,CL ;高;高4位移到低位移到低4位位 MOV SI+2,AL;存入;存入10052H單元單元靜態(tài)檢查程序是否有錯(cuò)靜
4、態(tài)檢查程序是否有錯(cuò)條件滿足?條件滿足?語句系列語句系列YN條件滿足?條件滿足?語句系列語句系列1語句系列語句系列2YN兩種分支結(jié)構(gòu)示意圖兩種分支結(jié)構(gòu)示意圖例:編一個(gè)程序。從外設(shè)例:編一個(gè)程序。從外設(shè)71H取一個(gè)數(shù)取一個(gè)數(shù)M,判斷其值是否在,判斷其值是否在10和和 20之間,即之間,即10M20。如果。如果M20,則送,則送0FFH給外設(shè)給外設(shè)73H; 如果如果M10,則送,則送00H給外設(shè)給外設(shè)73H;如果;如果10M20, 則送則送88H給外設(shè)給外設(shè)73H。 分析分析根據(jù)題意需要兩次判斷根據(jù)題意需要兩次判斷M的大小,根據(jù)判的大小,根據(jù)判斷結(jié)果把斷結(jié)果把00H或或0FFH或或88H輸出到輸出到
5、73H端端口???。 確定算法確定算法可以使用低于可以使用低于JB和高于或等于轉(zhuǎn)移指令和高于或等于轉(zhuǎn)移指令JAE 畫流程圖畫流程圖開始開始輸入輸入71H外外設(shè)值設(shè)值A(chǔ)LAL10?AL20?BL=88HBL=0FFHBL=00H輸出輸出BL到到外設(shè)外設(shè)73H暫停暫停LP1LP2LP3YYIN AL,71H;71H端口數(shù)端口數(shù)ALCLCCMP AL,10JB LP1 ;小于;小于10轉(zhuǎn)轉(zhuǎn)LP1CMP AL,20JAE LP2 ;大于或等于;大于或等于20轉(zhuǎn)轉(zhuǎn)LP2MOV BL,88HJMP LP3MOV BL,00HJMP LP3MOV BL,0FFHOUT 73H,BL ;將;將BL的內(nèi)容輸?shù)膬?nèi)容
6、輸HLT 出到端口出到端口73HLP3:LP1:LP2:MOV AL,BLOUT 73H,AL 開始判斷循環(huán)體結(jié)束處理結(jié)束初始化循環(huán)控制條件滿足?條件滿足?循環(huán)部分循環(huán)部分N條件滿足?條件滿足?循環(huán)部分循環(huán)部分Y先執(zhí)行循環(huán)體后判斷的結(jié)構(gòu)先執(zhí)行循環(huán)體后判斷的結(jié)構(gòu)先判斷后執(zhí)行循環(huán)體的先判斷后執(zhí)行循環(huán)體的結(jié)構(gòu)結(jié)構(gòu)循環(huán)程序舉例循環(huán)程序舉例例:例:求兩個(gè)多字節(jié)數(shù)求兩個(gè)多字節(jié)數(shù)之和。這兩個(gè)數(shù)之和。這兩個(gè)數(shù)在在10050H開開始的單元中,始的單元中,連續(xù)存放,連續(xù)存放,低位在小地低位在小地址一端,結(jié)果址一端,結(jié)果放在兩個(gè)數(shù)放在兩個(gè)數(shù)之后。設(shè)這之后。設(shè)這兩個(gè)多字節(jié)兩個(gè)多字節(jié)數(shù)均為八個(gè)數(shù)均為八個(gè)字節(jié)長(zhǎng)。字節(jié)長(zhǎng)。
7、MOV AX,1000HMOV DS,AXMOV S1,50H MOV DI,58H MOV BX,60HMOV CX,4CLCMOV AX,SIADC AX,DIMOV BX,AXPUSHFADD SI,2ADD DI,2ADD BX,2POPFLOOP AAHLTAA:開始開始CX=0?取一個(gè)字取一個(gè)字AX修改指針,修改指針,SISI+2DIDI+2,CXCX-1暫停暫停初始化初始化求和求和AX=AX+DI+CFNMOV CX,176H ;循環(huán);循環(huán)374次次PUSHFPOPFLOOP LP1 ;CX-1,CX0轉(zhuǎn)轉(zhuǎn)LPLP1:HLTMOV BX,1000LP2:DEC BXJNZ LP2
8、HLT例:設(shè)計(jì)一個(gè)軟件延時(shí)程序,延時(shí)時(shí)間約例:設(shè)計(jì)一個(gè)軟件延時(shí)程序,延時(shí)時(shí)間約1ms1ms循環(huán)次數(shù)循環(huán)次數(shù)= =374次次延時(shí)時(shí)間延時(shí)時(shí)間一次循環(huán)時(shí)間一次循環(huán)時(shí)間1ms21.40.125s開始開始CX=循環(huán)次數(shù)循環(huán)次數(shù)壓棧出棧操作壓棧出棧操作延時(shí)時(shí)間到?延時(shí)時(shí)間到?暫停暫停NPUSHF 10節(jié)拍節(jié)拍POPF 8節(jié)拍節(jié)拍LOOP 3.4節(jié)拍節(jié)拍21.4節(jié)拍節(jié)拍假設(shè)時(shí)鐘為假設(shè)時(shí)鐘為8M開始開始置數(shù)組首址置數(shù)組首址BXBX置數(shù)組長(zhǎng)度置數(shù)組長(zhǎng)度CXCX置數(shù)組無符號(hào)數(shù)最小值置數(shù)組無符號(hào)數(shù)最小值A(chǔ)XAX數(shù)組字?jǐn)?shù)組字AX?AX?內(nèi)容交換內(nèi)容交換修改數(shù)組指針修改數(shù)組指針到到100100字?字?存最大值存最大值
9、結(jié)束結(jié)束YNNY例:例: 求無符號(hào)數(shù)組中的最大值。求無符號(hào)數(shù)組中的最大值。已知已知:數(shù)組存放在數(shù)組存放在20042H開始的開始的單元,數(shù)組長(zhǎng)度單元,數(shù)組長(zhǎng)度100,最,最大值送存大值送存20040H開始的單開始的單元。元。START: MOV AX,2000H MOV DS,AX MOV BX,0042H MOV AX,0 MOV CX,100NEXT1: CMP AX,BX JA NEXT ;AX高于高于BX轉(zhuǎn)到轉(zhuǎn)到NEXT MOV AX,BXNEXT: INC BX INC BX LOOP NEXT1 MOV 0040H,AX HLT 循環(huán)次數(shù)已知循環(huán)次數(shù)已知(計(jì)數(shù)控制)(計(jì)數(shù)控制) 必須
10、采用寄存必須采用寄存器間址,才能實(shí)現(xiàn)器間址,才能實(shí)現(xiàn)循環(huán)。循環(huán)。子程序:也叫過程,相對(duì)主程序而言,是一個(gè)子的程序段,子程序:也叫過程,相對(duì)主程序而言,是一個(gè)子的程序段, 它能被主程序調(diào)用,也能被其它子程序調(diào)用它能被主程序調(diào)用,也能被其它子程序調(diào)用一般把有公用性、重復(fù)性或有相對(duì)獨(dú)立性的程序設(shè)計(jì)成子程序一般把有公用性、重復(fù)性或有相對(duì)獨(dú)立性的程序設(shè)計(jì)成子程序 把功能相對(duì)獨(dú)立的程序段單獨(dú)編寫和調(diào)試,作為一個(gè)把功能相對(duì)獨(dú)立的程序段單獨(dú)編寫和調(diào)試,作為一個(gè)相對(duì)獨(dú)立的模塊(子程序)供其他程序使用。相對(duì)獨(dú)立的模塊(子程序)供其他程序使用。子程序可以實(shí)現(xiàn)源程序的模塊化,可簡(jiǎn)化源程序結(jié)構(gòu),子程序可以實(shí)現(xiàn)源程序的模
11、塊化,可簡(jiǎn)化源程序結(jié)構(gòu),提高編程效率。提高編程效率。主程序需要利用主程序需要利用CALL指令調(diào)用子程序。指令調(diào)用子程序。子程序需要利用子程序需要利用RET指令返回主程序。指令返回主程序。匯編語言中,子程序要用一對(duì)過程偽指令匯編語言中,子程序要用一對(duì)過程偽指令PROC和和ENDP聲明,聲明,格式如下:格式如下:過程名過程名PROC NEAR/FAR;過程體;過程體過程名過程名ENDPNEAR屬性(段內(nèi)近調(diào)用)屬性(段內(nèi)近調(diào)用)FAR屬性(段間遠(yuǎn)調(diào)用)屬性(段間遠(yuǎn)調(diào)用)一、子程序編寫注意事項(xiàng)子程序編寫注意事項(xiàng)子程序要利用過程定義偽指令聲明。子程序要利用過程定義偽指令聲明。子程序中對(duì)堆棧的壓入和彈出
12、操作要成對(duì)使用,保持堆子程序中對(duì)堆棧的壓入和彈出操作要成對(duì)使用,保持堆棧的平衡。棧的平衡。子程序應(yīng)安排在代碼段的主程序之外,最好放在主程序子程序應(yīng)安排在代碼段的主程序之外,最好放在主程序執(zhí)行終止后的位置,也可以放在主程序開始執(zhí)行之前的位執(zhí)行終止后的位置,也可以放在主程序開始執(zhí)行之前的位置。置。處理好子程序與主程序間的參數(shù)傳遞問題。處理好子程序與主程序間的參數(shù)傳遞問題。提供必要的子程序說明信息。提供必要的子程序說明信息。例:例:code segmentcode segmentmain proc farmain proc far . . call subr1call subr1 . . ret r
13、etmain endpmain endpsubr1 proc nearsubr1 proc near . . ret retsubr1 endpsubr1 endpcode endscode ends主主程程序序段段子子程程序序段段code segmentcode segmentmain proc farmain proc far . . call subr1call subr1 . . ret retsubr1 proc nearsubr1 proc near . . ret retsubr1 endpsubr1 endpmain endpmain endpcode endscode end
14、s子子程程序序段段主主程程序序段段二、舉例二、舉例例:例: 累加數(shù)組中的元素。累加數(shù)組中的元素。主程序主程序data segmentary dw 1,2,3,4,5,6,7,8,9,10count dw 10sum dw ?data endscode segmentmain proc farassume cs:code, ds:datastart: push ds sub ax, ax push ax mov ax, data mov ds, ax call proadd retmain endpproadd proc near push ax push cx push si lea si,
15、ary mov cx, count xor ax, axnext::add ax, si add si, 2 loop next mov sum , ax pop si pop cx pop ax retproadd endpcode ends end start子程序子程序 段內(nèi)直接調(diào)用與返回段內(nèi)直接調(diào)用與返回格式:格式:CALL 過程名過程名功能:調(diào)用當(dāng)前段內(nèi)的子程序功能:調(diào)用當(dāng)前段內(nèi)的子程序操作:操作:SPSP2,SPIP,IPIP+disp子程序入口地址與子程序入口地址與當(dāng)前地址的差值當(dāng)前地址的差值格式:格式:RET 操作:操作:IP SP,SP SP+2 段內(nèi)間接調(diào)用與返回段內(nèi)間接調(diào)
16、用與返回格式:格式:CALL OPRD操作:操作:SPSP2,SPIP,IP(OPRD)格式:格式: RET 操作:操作:IP SP,SP SP+2 16位通用寄存器或位通用寄存器或字存儲(chǔ)器字存儲(chǔ)器 段間直接調(diào)用與返回段間直接調(diào)用與返回格式:格式:CALL 過程名過程名功能:調(diào)用其它代碼段中的子程序功能:調(diào)用其它代碼段中的子程序操作:操作:SPSP-2,SPCS,SPSP-2,SPIP IP過程入口地址的偏移量過程入口地址的偏移量 CS過程入口地址的段值過程入口地址的段值遠(yuǎn)過程遠(yuǎn)過程格式:格式:RET 操作:操作:IP SP,SP SP+2,CSSP,SPSP+2 段間間接調(diào)用與返回段間間接調(diào)
17、用與返回格式:格式:CALL OPRD操作:操作:SPSP-2,SPCS, SPSP-2 ,SPIP IP(OPRD低),低),CS(OPRD高)高)格式:格式: RET 操作:操作:IP SP,SP SP+2 ,CSSP,SPSP+2雙字存儲(chǔ)器操作數(shù)雙字存儲(chǔ)器操作數(shù) 現(xiàn)場(chǎng)保護(hù)與恢復(fù)現(xiàn)場(chǎng)保護(hù)與恢復(fù)子程序中要保護(hù)該程序中要使用的寄存器子程序中要保護(hù)該程序中要使用的寄存器返回時(shí),恢復(fù)現(xiàn)場(chǎng)。后入棧的要先彈出。返回時(shí),恢復(fù)現(xiàn)場(chǎng)。后入棧的要先彈出。MOV CX,176H ;循環(huán);循環(huán)374次次PUSHFPOPFLOOP LP1 ;CX-1,CX0轉(zhuǎn)轉(zhuǎn)LPHLTLP1:例:例:DELAYIS: PUSHF
18、 PUSH CXPOP CXPOPFRET后進(jìn)先出后進(jìn)先出 參數(shù)傳遞參數(shù)傳遞必須設(shè)計(jì)好子程序中用到了哪些寄存器或必須設(shè)計(jì)好子程序中用到了哪些寄存器或 存儲(chǔ)單元。哪些是需要調(diào)用程序提供的,存儲(chǔ)單元。哪些是需要調(diào)用程序提供的, 哪些是結(jié)果提供給調(diào)用程序的。哪些是結(jié)果提供給調(diào)用程序的。 子程序說明子程序說明一個(gè)子程序,可以被其它程序調(diào)用,必須一個(gè)子程序,可以被其它程序調(diào)用,必須 提供一些說明。如:提供一些說明。如:程序名、程序的功能、占用的寄存器或程序名、程序的功能、占用的寄存器或存儲(chǔ)單元、入口及出口參數(shù)、嵌套了哪存儲(chǔ)單元、入口及出口參數(shù)、嵌套了哪些子程序。些子程序。2、子程序設(shè)計(jì)與應(yīng)用應(yīng)注意的問題、子程序設(shè)計(jì)與應(yīng)用應(yīng)注意的問題子程序設(shè)計(jì)舉例:子程序設(shè)計(jì)舉例: 找出一個(gè)數(shù)據(jù)塊中的最大找出一個(gè)數(shù)據(jù)塊中的最大數(shù),數(shù)據(jù)塊長(zhǎng)度在(數(shù),數(shù)據(jù)塊長(zhǎng)度在(2001H)單元,
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 1 如何合理選擇抗凝藥物
- 2018年稅務(wù)稽查風(fēng)險(xiǎn)防范及企業(yè)應(yīng)對(duì)策略
- 2024年不動(dòng)產(chǎn)登記代理人《地籍調(diào)查》考試題庫大全(含真題、典型題)
- 二零二五年度共享公寓租賃協(xié)議4篇
- 2025版民政局婚姻登記中心協(xié)議離婚書模板電子文檔傳輸合同4篇
- 二零二五版南沙雄英匯汽車事故救援與道路施救服務(wù)合同4篇
- 2025版高端商場(chǎng)導(dǎo)購員專業(yè)聘用合同范本4篇
- 2025年度個(gè)人購房合同(含產(chǎn)權(quán)轉(zhuǎn)移登記)
- 二零二五年度床上用品電商促銷合作合同3篇
- 2025年校園食堂承包與食品安全教育合作合同4篇
- 2025貴州貴陽市屬事業(yè)單位招聘筆試和高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2024年住院醫(yī)師規(guī)范化培訓(xùn)師資培訓(xùn)理論考試試題
- 期末綜合測(cè)試卷(試題)-2024-2025學(xué)年五年級(jí)上冊(cè)數(shù)學(xué)人教版
- 招標(biāo)采購基礎(chǔ)知識(shí)培訓(xùn)
- 2024年廣東省公務(wù)員錄用考試《行測(cè)》試題及答案解析
- 五年級(jí)口算題卡每天100題帶答案
- 結(jié)構(gòu)力學(xué)本構(gòu)模型:斷裂力學(xué)模型:斷裂力學(xué)實(shí)驗(yàn)技術(shù)教程
- 2024年貴州省中考理科綜合試卷(含答案)
- 無人機(jī)技術(shù)與遙感
- PDCA提高臥床患者踝泵運(yùn)動(dòng)的執(zhí)行率
- 黑色素的合成與美白產(chǎn)品的研究進(jìn)展
評(píng)論
0/150
提交評(píng)論