




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
_實(shí)驗(yàn)?zāi)康募皩?shí)驗(yàn)環(huán)境實(shí)驗(yàn)環(huán)境:熟悉宏指令、宏定義、宏調(diào)用以及宏展開(kāi)的概念;掌握宏指令的定義與調(diào)用的方法。掌握子程序的定義、調(diào)用以及調(diào)用程序與子程序之間參數(shù)的傳遞方法。了解宏指令與子程序的異同以及各自的適用場(chǎng)合。實(shí)驗(yàn)環(huán)境:80x86系列微型計(jì)算機(jī)一臺(tái)以及進(jìn)行匯編語(yǔ)言程序設(shè)計(jì)所必需的編程工具(文本編輯器、ASM.EXE、LINK.EXE、DEBUG.EXE)實(shí)驗(yàn)內(nèi)容從鍵盤(pán)輸入10個(gè)無(wú)符號(hào)十進(jìn)制數(shù)(小于256),將其轉(zhuǎn)換為二進(jìn)制數(shù)并存放在NUM字節(jié)型變量中,找出其中的最大數(shù),并將找出的最大數(shù)在屏幕上顯示出來(lái)。要求:=1\*GB3①在屏幕上顯示字符串提示信息的功能由宏指令DSTRING實(shí)現(xiàn);=2\*GB3②將鍵盤(pán)輸入的十進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù)由子程序DTOB實(shí)現(xiàn);=3\*GB3③在N個(gè)無(wú)符號(hào)字節(jié)型二進(jìn)制數(shù)中找出最大數(shù)的功能由子程序FMAX實(shí)現(xiàn);=4\*GB3④將一個(gè)無(wú)符號(hào)字節(jié)型二進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)并在屏幕上顯示的功能由子程序BTOAD實(shí)現(xiàn)。程序運(yùn)行結(jié)果如右圖所示。方案設(shè)計(jì)編程指導(dǎo)顯示提示信息的宏指令DSTRING的編寫(xiě)宏指令通常用于在程序中需要反復(fù)使用但所需指令條數(shù)又不是很多的情形;而對(duì)于需要經(jīng)常使用且需要較多指令才能完成的功能通常通過(guò)子程序調(diào)用來(lái)實(shí)現(xiàn)。這是因?yàn)?,從?zhí)行速度上看,由于子程序調(diào)用涉及到保護(hù)斷點(diǎn)的操作,因此,子程序調(diào)用比宏調(diào)用執(zhí)行時(shí)間相對(duì)要稍長(zhǎng)一些;但從生成的可執(zhí)行文件的大小方面考慮,子程序調(diào)用生成的文件要小一些。讀者在進(jìn)行匯編語(yǔ)言程序設(shè)計(jì)時(shí),應(yīng)綜合考慮兩者的利弊,以便進(jìn)行合理選擇。下面給出實(shí)現(xiàn)提示信息顯示的宏指令的定義:DSTRING MACRO STRING PUSH DX PUSHAX MOV DX,OFFSETSTRING MOV AH,09H INT 21H POP AX POP DX ENDM請(qǐng)讀者注意,宏指令應(yīng)該先定義,后調(diào)用。因此,宏定義通常緊跟在代碼段中段寄存器賦值指令之后給出。將鍵盤(pán)輸入的十進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù)的子程序DTOB的編寫(xiě)子程序的定義方法請(qǐng)參閱教材“5.6.4子程序設(shè)計(jì)”一節(jié)。將十進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù)的程序代碼請(qǐng)參閱本書(shū)“2.4.3實(shí)驗(yàn)內(nèi)容”中“編程指導(dǎo)”部分。在N個(gè)無(wú)符號(hào)字節(jié)型二進(jìn)制數(shù)中找出最大數(shù)的子程序FMAX的編寫(xiě)請(qǐng)參閱教材“5.6.3循環(huán)程序設(shè)計(jì)”一節(jié)例5.12。將一個(gè)無(wú)符號(hào)字節(jié)型二進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)并在屏幕上顯示的子程序BTOAD的編寫(xiě)程序代碼請(qǐng)參閱本書(shū)“2.4.3實(shí)驗(yàn)內(nèi)容”中“編程指導(dǎo)”部分。程序框架COUNTEQU 10DATA SEGMENT NUM DB10DUP(?) IBUF DB7,0,6DUP(?) OBUF DB6DUP(?) INFOR1 DB"Pleaseinput10numbers:",0AH,0DH,'$' INFOR2 DB"Themaxfoundinthe10numbersis$" INFOR3 DB0AH,0DH,'$'DATA ENDSSTACK SEGMENTstack DATA2DW40DUP(?) TOP EQULENGTHDATA2STACKENDSCODE SEGMENTASSUMECS:CODE,DS:DATA,SS:STACKstart: MOV AX,DATA MOV DS,AX MOV AX,STACK MOV SS,AX MOV AX,TOP定義顯示字符串信息的宏指令DSTRING MOV SP,AX定義顯示字符串信息的宏指令DSTRING DSTRINGINFOR1 MOV BX,OFFSETNUM MOV CX,COUNTLOOP1: CALLDTOB DSTRINGINFOR3 MOV [BX],AL INC BX LOOP LOOP1 MOV AX,OFFSETNUM PUSH AX ;通過(guò)堆棧向子程序傳遞參數(shù)(數(shù)據(jù)個(gè)數(shù)及數(shù)據(jù)在數(shù)據(jù)段內(nèi)的偏移地址) MOV CX,COUNT PUSH CX CALL FMAX DSTRINGINFOR2 CALL BTOAD MOV AH,4CH定義將鍵盤(pán)輸入的十進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù)的子程序DTOB INT 21H定義將鍵盤(pán)輸入的十進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù)的子程序DTOB定義將一個(gè)無(wú)符號(hào)字節(jié)型二進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)并在屏幕上顯示的子程序BTOAD定義在N個(gè)無(wú)符號(hào)字節(jié)型二進(jìn)制數(shù)中找出最大數(shù)的子程序FMAX CODE ENDS定義將一個(gè)無(wú)符號(hào)字節(jié)型二進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)并在屏幕上顯示的子程序BTOAD定義在N個(gè)無(wú)符號(hào)字節(jié)型二進(jìn)制數(shù)中找出最大數(shù)的子程序FMAX END start3、實(shí)驗(yàn)習(xí)題。計(jì)算1+2+3+……N。要求N由鍵盤(pán)輸入;給出必要的提示信息(由宏調(diào)用實(shí)現(xiàn));累加功能由子程序調(diào)用實(shí)現(xiàn);二進(jìn)制數(shù)(累加和)轉(zhuǎn)換為十進(jìn)制數(shù)并顯示由子程序調(diào)用實(shí)現(xiàn)。測(cè)試數(shù)據(jù)及運(yùn)行結(jié)果(1)從鍵盤(pán)輸入10個(gè)無(wú)符號(hào)十進(jìn)制數(shù)(小于256),將其轉(zhuǎn)換為二進(jìn)制數(shù)并存放在NUM字節(jié)型變量中,找出其中的最大數(shù),并將找出的最大數(shù)在屏幕上顯示出來(lái)。課后題計(jì)算1+2+3+……N。要求N由鍵盤(pán)輸入;給出必要的提示信息(由宏調(diào)用實(shí)現(xiàn));累加功能由子程序調(diào)用實(shí)現(xiàn);二進(jìn)制數(shù)(累加和)轉(zhuǎn)換為十進(jìn)制數(shù)并顯示由子程序調(diào)用實(shí)現(xiàn)??偨Y(jié)通過(guò)此次實(shí)驗(yàn)我熟悉了宏指令、宏定義、宏調(diào)用以及宏展開(kāi)的概念,掌握了宏指令的定義與調(diào)用的方法,子程序的定義、調(diào)用以及調(diào)用程序與子程序之間參數(shù)的傳遞方法,并了解了宏指令與子程序的異同以及各自的適用場(chǎng)合。這次實(shí)驗(yàn)總體來(lái)說(shuō)較難,一開(kāi)始沒(méi)有成功,最終通過(guò)研究課本和同學(xué)討論,再此進(jìn)行調(diào)試才得到了正確的程序。要想熟練地掌握會(huì)匯編語(yǔ)言,還要更多地練習(xí)。附錄:宏指令及子程序設(shè)計(jì)源代碼COUNTEQU10DATASEGMENT NUM DB10DUP(?)IBUFDB7,0,6DUP(?) OBUFDB6DUP(?)INFOR1 DB"Pleaseinput10numbers:",0AH,0DH,'$'INFOR2 DB"Themaxfoundinthe10numbersis$"INFOR3 DB0AH,0DH,'$'DATA ENDSSTACK SEGMENTstackDATA2DW40DUP(?)TOP EQULENGTHDATA2STACK ENDSCODE SEGMENT ASSUMECS:CODE,DS:DATA,SS:STACKSTART:MOV AX,DATAMOVDS,AXMOVAX,STACKMOVSS,AXMOVAX,TOPMOVSP,AXDSTRINGMACROSTRING PUSHDX PUSHAX MOVDX,OFFSETSTRING MOVAH,09H INT21H POPAX POPDX ENDM DSTRINGINFOR1 MOVBX,OFFSETNUM MOVCX,COUNTLOOP1: CALLDTOB DSTRINGINFOR3 MOV[BX],AL INCBX LOOPLOOP1 MOVAX,OFFSETNUM PUSHAX MOVCX,COUNT PUSHCX CALLFMAX DSTRINGINFOR2 CALLBTOAD MOVAH,4CH INT21H DTOBPROCNEAR PUSHCX MOVDX,OFFSETIBUF MOVAH,0AH INT21H MOVCL,IBUF+1 MOVCH,0 MOVSI,OFFSETIBUF+2 MOVAX,0AGAIN:MOVDX,10 MULDX ANDBYTEPTR[SI],0FH ADDAL,[SI] ADCAH,00H INCSI LOOPAGAIN POPCX RET DTOBENDP FMAXPROCNEAR MOVAL,NUM MOVSI,OFFSETNUM MOVCX,9LOOP2:INCSI CMPAL,[SI] JAELOOP3 XCHGAL,[SI]LOOP3:DECCX JNZLOOP2 XORAH,AH MOVOBUF,AL RET FMAXENDP BTOADPROCNEAR MOVBX,OFFSETOBUF+5 MOVBYTEPTR[BX],'$' MOVCX,10LOOP4:MOVDX,0 DIVCX ADDDL,30H DECBX MOV[BX],DL ORAX,AX JNZLOOP4 MOVDX,BX MOVAH,09H INT21H RET BTOADENDPCODE ENDS ENDSTART(2)實(shí)驗(yàn)課后習(xí)題源代碼STACK SEGMENTSTACK DB100DUP(?)STACK ENDSDATA SEGMENT INF1 DB"PleaseinputanumberN:$" IBUF DB7,0,6DUP(?) OBUF DB6DUP(?) INF2 DB0AH,0DH,"$"DATA ENDSCODE SEGMENT ASSUMECS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AXDSTRINGMACROSTRING PUSH DX PUSH AX MOVDX,OFFSETSTRING MOVAH,09H INT21H POPAX POPDX ENDM DSTRINGINF1 CALL DTOB CALL ADDN CALL BTOAD MOV AH,4CH INT 21HDTOB PROCNEAR PUSH CX MOV DX,OFFSETIBUF MOV AH,0AH INT 21H MOV CL,IBUF+1 MOV CH,0 MOV SI,OFFSETIBUF+2 MOV AX,0AGAIN: MOV DX,10 MUL DX AND BYTEPTR[SI],0FH ADD AL,[SI] ADC AH,0 INC SI LOOP AGAIN POP CX RETDTOB ENDPADDN PROCNEAR MOV CX,AX XOR AX,AX MOV BX,01HLOOP5: ADD AX,BX INC BX LOO
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度水上樂(lè)園游泳館場(chǎng)地租賃與水上樂(lè)園配套設(shè)施租賃協(xié)議
- 2025年度老舊小區(qū)外墻改造工程安全責(zé)任合同
- 二零二五年度國(guó)際貿(mào)易信用證業(yè)務(wù)代理及風(fēng)險(xiǎn)管理協(xié)議
- 海洋漁業(yè)資源保護(hù)與海產(chǎn)品銷(xiāo)售一體化合同
- 二零二五年度企業(yè)用工協(xié)議與勞動(dòng)權(quán)益保障與員工激勵(lì)機(jī)制合同
- 二零二五年度廠(chǎng)房裝修施工安全責(zé)任與綠色施工標(biāo)準(zhǔn)協(xié)議書(shū)
- 2025年度酒店與旅游紀(jì)念品店合作經(jīng)營(yíng)合同
- 二零二五年度籃球活動(dòng)參與者免責(zé)責(zé)任協(xié)議
- 二零二五年度汽車(chē)美容店員工勞動(dòng)爭(zhēng)議解決合同模板
- 二零二五年度農(nóng)村房屋贈(zèng)與合同附農(nóng)業(yè)保險(xiǎn)合作協(xié)議
- 經(jīng)濟(jì)學(xué)彈性理論課件
- 公司員工獎(jiǎng)懲制度流程
- 星巴克案例分析-星巴克成功之道
- 把未來(lái)點(diǎn)亮歌詞打印版
- 危險(xiǎn)化學(xué)品建設(shè)項(xiàng)目竣工驗(yàn)收?qǐng)?bào)告
- 國(guó)家中醫(yī)藥管理局第3批24個(gè)專(zhuān)業(yè)104個(gè)病種中醫(yī)診療方案
- 婦產(chǎn)科學(xué)(第9版)第三章 女性生殖系統(tǒng)生理
- LY/T 2241-2014森林生態(tài)系統(tǒng)生物多樣性監(jiān)測(cè)與評(píng)估規(guī)范
- GB/T 9086-2007用于色度和光度測(cè)量的標(biāo)準(zhǔn)白板
- 2023年山東力明科技職業(yè)學(xué)院高職單招(數(shù)學(xué))試題庫(kù)含答案解析
- GB/T 24338.4-2018軌道交通電磁兼容第3-2部分:機(jī)車(chē)車(chē)輛設(shè)備
評(píng)論
0/150
提交評(píng)論