




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
《匯編語言程序設(shè)計(jì)》實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)室:S318最后一次實(shí)驗(yàn)時(shí)間:2010年5月18日第12周星期二1-2節(jié)學(xué)院:計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院專業(yè):計(jì)算機(jī)科學(xué)與技術(shù)實(shí)驗(yàn)一實(shí)驗(yàn)題目:認(rèn)識(shí)Tddebug集成環(huán)境實(shí)驗(yàn)?zāi)康模菏煜R編程序的開發(fā)過程。認(rèn)識(shí)Tddebug集成操作軟件。掌握在Tddebug集成環(huán)境中編輯、編譯、連接匯編語言程序方法。掌握INT21H軟件中斷來調(diào)用DOS內(nèi)部子程序的方法實(shí)驗(yàn)主要步驟:1.運(yùn)行Tddebug軟件,選擇Edit菜單編寫實(shí)驗(yàn)程序2.使用Compile菜單中的Compile和Link對(duì)實(shí)驗(yàn)程序進(jìn)行匯編、連接,生成執(zhí)行文件。3.使用Rmrun菜單中的Run運(yùn)行程序,觀察運(yùn)行結(jié)果。4.使用Rmrun菜單中的Debug調(diào)試程序,查看程序段、數(shù)據(jù)段、附加段裝入內(nèi)存后的分配情況。單步執(zhí)行數(shù)據(jù)傳送指令后,觀察各寄存器及數(shù)據(jù)區(qū)的內(nèi)容。過程如下:按F7單步執(zhí)行,在代碼區(qū)中有一個(gè)三角,表示正在執(zhí)行的指令。每一條指令的執(zhí)行一定會(huì)使目標(biāo)寄存器和狀態(tài)寄存器發(fā)生變化,從相關(guān)窗口看結(jié)果。檢查內(nèi)存數(shù)據(jù)區(qū)的內(nèi)容,關(guān)鍵是找出用戶程序的數(shù)據(jù)段和附加段:方法1:在CPU窗口按Tab鍵使內(nèi)存數(shù)據(jù)顯示區(qū)成為活動(dòng)區(qū),按Ctrl+G鍵,輸入:“DS或ES寄存器的值:偏移地址”,即可顯示用戶指定的數(shù)據(jù)區(qū)方法2:選擇菜單View|Dump,彈出內(nèi)存數(shù)據(jù)顯示窗口。3)查看執(zhí)行結(jié)果:按Alt+F5,切換到用戶窗口。5.更改數(shù)據(jù)區(qū)中的數(shù)據(jù),考察、調(diào)試程序的正確性。6.程序代碼:;數(shù)據(jù)傳送實(shí)驗(yàn),采用相對(duì)尋址方式DDATA SEGMENT ;定義源數(shù)據(jù)段MSR DB"HELLO,WORLD!$"LEN EQU$-MSRDDATA ENDSEXDA SEGMENT ;定義附加數(shù)據(jù)段MSD DBLENDUP(?)EXDA ENDSMYSTACKSEGMENTSTACK ;定義堆棧段DW20DUP(?)MYSTACK ENDSCODE SEGMENT ;定義代碼段ASSUMECS:CODE,DS:DDATA,ES:EXDASTART: MOVAX,DDATA MOV DS,AX ;裝載數(shù)據(jù)段寄存器 MOV AX,EXDA MOV ES,AX ;裝載附加數(shù)據(jù)段寄存器 MOV SI,OFFSETMSR MOV DI,OFFSETMSD MOV CX,LEN MOV BX,0NEXT:MOV AL,MSR[BX] ;開始傳輸數(shù)據(jù) MOV ES:MSD[BX],AL INC BX LOOP NEXT PUSH ESPOP DS ;將附加段寄存器指向的段值賦給數(shù)據(jù)段寄存器 MOV DX,OFFSETMSD MOV AH,9 INT 21H ;顯示字符串 MOV AH,4CH INT 21H ;返回DOS狀態(tài)CODE ENDS ENDSTART實(shí)驗(yàn)結(jié)果:通過Tddebug軟件寫好實(shí)驗(yàn)程序后,對(duì)程序進(jìn)行編譯連接,最終生成執(zhí)行文件,在dos環(huán)境下啟動(dòng)后,進(jìn)入Tddebug,對(duì)程序進(jìn)行單步執(zhí)行,可看到在每一步執(zhí)行過程中,程序所分得的地址單元。連接試驗(yàn)箱后,通過對(duì)試驗(yàn)箱的操作,能夠看到在dos環(huán)境下程序的執(zhí)行步驟。代碼運(yùn)行結(jié)果:顯示:“HELLO,WORLD!”心得體會(huì):通過本次試驗(yàn),是我回顧了在學(xué)習(xí)單片機(jī)的時(shí)候使用的Tddebug集成開發(fā)軟件使用方法,了解了匯編程序的開發(fā)過程。能夠在Tddebug環(huán)境下進(jìn)行編輯、編譯、連接程序,掌握了INT21H軟件中斷的調(diào)用DOS內(nèi)部子程序的方法。但對(duì)于DOS環(huán)境下的匯編程序的編輯、編譯、連接使用還不是很熟悉,只能是Tddebug集成軟件開發(fā)環(huán)境下熟悉的編譯連接運(yùn)行。實(shí)驗(yàn)二實(shí)驗(yàn)名稱:I/O程序設(shè)計(jì)實(shí)驗(yàn)?zāi)康模?.理解軟中斷的調(diào)用方法及中斷過程。2.掌握INT21H軟件中斷來調(diào)用DOS系統(tǒng)I/O子程序的方法。3.掌握將存儲(chǔ)在內(nèi)存單元中的數(shù)據(jù)在屏幕上顯示的方法。4.掌握從鍵盤輸入信息到內(nèi)存的方法。實(shí)驗(yàn)內(nèi)容:1.將指定數(shù)據(jù)區(qū)中一個(gè)字節(jié)的數(shù)據(jù)以十六進(jìn)制數(shù)形式顯示在屏幕上。2.編程由鍵盤輸入任意一個(gè)字符,將該字符的ASCII碼值顯示在屏幕上。3.從鍵盤輸入兩個(gè)1位十進(jìn)制數(shù),計(jì)算二者之和,并將結(jié)果顯示在屏幕上。4.編程由鍵盤輸入任意一位數(shù),將該數(shù)以二進(jìn)制數(shù)形式顯示在屏幕上實(shí)驗(yàn)步驟:1.畫出實(shí)驗(yàn)流程圖。2.運(yùn)行Tddebug軟件,選擇Edit菜單編寫實(shí)驗(yàn)程序3.使用Compile菜單中的Compile和Link對(duì)實(shí)驗(yàn)程序進(jìn)行匯編、連接,生成執(zhí)行文件。4.使用Rmrun菜單中的Run運(yùn)行程序,觀察運(yùn)行結(jié)果。5.使用Rmrun菜單中的Debug調(diào)試程序。單步執(zhí)行指令,觀察各寄存器及數(shù)據(jù)區(qū)的內(nèi)容。更改數(shù)據(jù)區(qū)中的數(shù)據(jù),考察程序的正確性實(shí)驗(yàn)代碼:圖2-1一個(gè)字節(jié)數(shù)以十六進(jìn)制數(shù)形式顯示處理流程DATA SEGMENT 圖2-1一個(gè)字節(jié)數(shù)以十六進(jìn)制數(shù)形式顯示處理流程MES DB 'Showaashex:',0AH,0DH,'$'SD DB 'a'DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOVAX,DATA MOV DS,AX MOV DX,OFFSETMES;顯示提示信息 MOV AH,09H INT 21H MOV SI,OFFSETSD MOV AL,DS:[SI] AND AL,0F0H ;取高4位MOVCL,4 SHR AL,CL CMP AL,0AH ;是否是A以上的數(shù) JB C2 ADD AL,07H C2: ADD AL,30H MOV DL,AL ;顯示字符 MOV AH,02H INT 21H MOV AL,DS:[SI] AND AL,0FH ;取低4位 CMP AL,0AH JB C3 ADD AL,07HC3: ADD AL,30H MOV DL,AL ;顯示字符 MOV AH,02H INT 21H MOV AH,4CH ;返回DOS INT 21HCODE ENDS END START實(shí)驗(yàn)結(jié)果:代碼運(yùn)行結(jié)果:顯示“61H”心得體會(huì):本次實(shí)驗(yàn)要求我們將指定數(shù)據(jù)區(qū)的一個(gè)數(shù)據(jù)轉(zhuǎn)換為其十六進(jìn)制數(shù),通過這次實(shí)驗(yàn),我充分理解了什么是軟中斷,以及軟中斷的調(diào)用方法和中斷過程,并了解了INT21H軟中斷來調(diào)用DOS系統(tǒng)I/O子程序的方法,并知道如何將存儲(chǔ)在內(nèi)存單元中的素具顯示在屏幕上。在老師的講解過程中,我對(duì)試驗(yàn)提供的參考代碼有了更深的了解,明白了如何進(jìn)行調(diào)用軟中斷。實(shí)驗(yàn)三實(shí)驗(yàn)名稱:代碼轉(zhuǎn)換程序設(shè)計(jì)實(shí)驗(yàn)?zāi)康模?.了解微機(jī)中所使用的各類數(shù)制及編碼方法。2.掌握不同進(jìn)制數(shù)及編碼相互轉(zhuǎn)換的程序設(shè)計(jì)方法,加深對(duì)數(shù)碼轉(zhuǎn)換的理解。3.掌握將存儲(chǔ)在內(nèi)存單元中的數(shù)據(jù)以十六進(jìn)制數(shù)形式、十進(jìn)制數(shù)形式和二進(jìn)制數(shù)形式顯示在屏幕上的方法。實(shí)驗(yàn)內(nèi)容:1.將5位十進(jìn)制數(shù)的數(shù)字串轉(zhuǎn)換為一個(gè)字的二進(jìn)制數(shù)2.編寫程序?qū)?nèi)存中一個(gè)字的數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)的數(shù)字串顯示。((壓?;蛘咦址?.編程將十進(jìn)制的數(shù)字串轉(zhuǎn)換為BCD碼4.編程將BCD碼轉(zhuǎn)換為二進(jìn)制數(shù)5.編程將二進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)顯示實(shí)驗(yàn)步驟:1.畫出實(shí)驗(yàn)流程圖。2.運(yùn)行Tddebug軟件,選擇Edit菜單編寫實(shí)驗(yàn)程序3.使用Compile菜單中的Compile和Link對(duì)實(shí)驗(yàn)程序進(jìn)行匯編、連接,生成執(zhí)行文件。4.使用Rmrun菜單中的Run運(yùn)行程序,觀察運(yùn)行結(jié)果。5.使用Rmrun菜單中的Debug調(diào)試程序。單步執(zhí)行指令,觀察各寄存器及數(shù)據(jù)區(qū)的內(nèi)容。6.更改數(shù)據(jù)區(qū)中的數(shù)據(jù),考察程序的正確性。實(shí)驗(yàn)流程圖:圖6-2將5位十進(jìn)制數(shù)的數(shù)字串轉(zhuǎn)換為二進(jìn)制數(shù)參考流程圖6-3將十進(jìn)制數(shù)的數(shù)字串轉(zhuǎn)換為BCD碼參考流程圖6-2將5位十進(jìn)制數(shù)的數(shù)字串轉(zhuǎn)換為二進(jìn)制數(shù)參考流程圖6-3將十進(jìn)制數(shù)的數(shù)字串轉(zhuǎn)換為BCD碼參考流程代碼:DDATA SEGMENTMES DB 'Theasciicodeofdecimalcodeare:$'BUF DB 30H,30H,30H,31H,32H;十進(jìn)制00012的ASCII碼 DB 10HDUP(0)DDATA ENDSCODESEGMENT ASSUMECS:CODE,DS:DDATASTART:MOVAX,DDATA MOV DS,AX MOVSI,OFFSETBUF MOV BL,0AH;送乘數(shù) MOV CX,0004H;送轉(zhuǎn)換位數(shù)MOVAH,00H MOV AL,[SI];取第一位ASCII碼 SUB AL,30HA1:INCSIIMULBL;乘10(AL*BL)放在AX中 ADD AL,[SI] SUB AL,30HLOOP A1MOVBX,AX MOV DX,OFFSETMES;顯示提示信息 MOV AH,09H INT 21HMOVAX,BX;顯示結(jié)果MOVCX,4A3:PUSHCXMOVCL,4ROLAX,CL;向左移位POPCXMOVBX,AXANDAL,0FH;高4位清零,保留低4位的值CMPAL,0AH JBA2 ADDAL,07H A2:ADDAL,30H MOVDL,AL MOVAH,02HINT21HMOVAX,BXLOOPA3MOVAH,4CH INT21HCODE ENDS END START
實(shí)驗(yàn)結(jié)果:代碼運(yùn)行結(jié)果:顯示“00001010”心得體會(huì):本次實(shí)驗(yàn)要求我們將5位十進(jìn)制數(shù)的數(shù)字串轉(zhuǎn)換為一個(gè)字的二進(jìn)制數(shù),通過這次實(shí)驗(yàn),我了解了微機(jī)中所使用的各類數(shù)制及編碼方法,并知道了不同進(jìn)制數(shù)及編碼相互轉(zhuǎn)換的程序設(shè)計(jì)方法,加深了對(duì)數(shù)碼轉(zhuǎn)換的理解,并掌握了將存儲(chǔ)在內(nèi)存單元中的數(shù)據(jù)以十六進(jìn)制數(shù)形式顯示在屏幕上的方法。在剛開始實(shí)驗(yàn)的時(shí)候?qū)τ趯⑹M(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制有點(diǎn)不知道怎么辦,雖然知道應(yīng)該怎么算,但是卻不知道怎么樣寫代碼,通過對(duì)參考代碼的理解,對(duì)于將十進(jìn)制轉(zhuǎn)換為二進(jìn)制有了一定的概念,知道了要寫一個(gè)轉(zhuǎn)換進(jìn)制的實(shí)驗(yàn)的基本步驟了。對(duì)上述實(shí)驗(yàn)我進(jìn)行了一定的修改,代碼如下:datasegmentbufdb6,6dup(0)msg1db'PleaseinputX:',0ah,0dh,'$'msg2db0ah,0dh,'PleaseinputP:',0ah,0dh,'$'msg3db0ah,0dh,'Result:',0ah,0dh,'$'dataendscodesegmentassumecs:code,ds:data;將字符串轉(zhuǎn)換為十進(jìn)制數(shù)的子程序;輸入?yún)?shù):字符處首地址;輸出參數(shù):ax(保存十進(jìn)制數(shù))StrToNumprocpushbxmovbx,10StrToNum_s1:mulbxandbuf[si],0fhaddal,buf[si]incsiloopStrToNum_s1popbxretStrToNumendp;功能:輸出P進(jìn)制數(shù)子程序;輸入?yún)?shù):ax;輸出參數(shù):無Printprocpushaxpushbxpushcxpushdx;保護(hù)xorcx,cxs1:movdx,0divbxpushdxinccxcmpax,0jnes1movah,02hs2:popdxadddl,30hcmpdl,39hjas1int21hloops2jmpokadddl,7hint21hloops2ok:popdxpopcxpopbxpopaxretPrintendpstart:movax,datamovds,axmovdx,offsetmsg1;輸出msg1movah,09hint21hmovdx,offsetbuf;輸入十進(jìn)制數(shù)Xmovah,0ahint21hmovcl,buf[1]movsi,2movax,0callStrToNum;調(diào)用將字符串轉(zhuǎn)換為十進(jìn)制pushax;暫存axmovdx,offsetmsg2;輸出msg2movah,09hint21hmovdx,offsetbuf;輸入pmovah,0ahint21hmovcl,buf[1]movsi,2movax,0callStrToNum;調(diào)用將字符串轉(zhuǎn)換為十進(jìn)制movbx,axmovdx,offsetmsg3;輸出msg3movah,09hint21hpopaxcallPrintmovax,4c00hint21hcodeendsendstart運(yùn)行結(jié)果如下:PleaseinputX://輸入一個(gè)數(shù)9PleaseinputP://選擇顯示輸出結(jié)果的進(jìn)制數(shù)2Result:1001實(shí)驗(yàn)四實(shí)驗(yàn)名稱:綜合程序設(shè)計(jì)實(shí)驗(yàn)?zāi)康模赫莆兆映绦虻膶懛?、循環(huán)的調(diào)用,利用匯編語言編寫簡(jiǎn)單的程序。實(shí)驗(yàn)內(nèi)容:編程由鍵盤輸入任意一位數(shù),將該數(shù)以二進(jìn)制數(shù)形式顯示在屏幕上要求:含有子程序,循環(huán)實(shí)驗(yàn)步驟:1.畫出實(shí)驗(yàn)流程圖。2.運(yùn)行Tddebug軟件,選擇Edit菜單編寫實(shí)驗(yàn)程序3.使用Compile菜單中的Compile和Link對(duì)實(shí)驗(yàn)程序進(jìn)行匯編、連接,生成執(zhí)行文件。4.使用Rmrun菜單中的Run運(yùn)行程序,觀察運(yùn)行結(jié)果。5.使用Rmrun菜單中的Debug調(diào)試程序。實(shí)驗(yàn)流程圖:確定轉(zhuǎn)化的位數(shù)n確定轉(zhuǎn)化的位數(shù)nCX=8CF=0循環(huán)取數(shù)保存到相應(yīng)單元轉(zhuǎn)換完否送屏幕顯示n實(shí)驗(yàn)代碼:;輸入一個(gè)數(shù),選擇顯示進(jìn)制,并在屏幕上顯示出來datasegmentbufdb?msg1db'PleaseinputX:',0ah,0dh,'$'msg2db0ah,0dh,'Result:',0ah,0dh,'$'dataendscodesegmentassumecs:code,ds:datad_to_bprocnearmovbuf,2movcx,8moval,bufed:clcrclbyteptrbuf,1jnconemovah,02hmovdl,'1'int21hjmpll
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 赤峰學(xué)院《體育三》2023-2024學(xué)年第二學(xué)期期末試卷
- 四川交通職業(yè)技術(shù)學(xué)院《內(nèi)創(chuàng)業(yè)人力資源管理》2023-2024學(xué)年第二學(xué)期期末試卷
- 湖北城市建設(shè)職業(yè)技術(shù)學(xué)院《物理化學(xué)Ⅰ(2)》2023-2024學(xué)年第二學(xué)期期末試卷
- 香港中文大學(xué)(深圳)《影視聲音制作》2023-2024學(xué)年第二學(xué)期期末試卷
- 天津藝術(shù)職業(yè)學(xué)院《現(xiàn)代光學(xué)實(shí)驗(yàn)》2023-2024學(xué)年第二學(xué)期期末試卷
- 寧夏體育職業(yè)學(xué)院《外國(guó)文學(xué)二》2023-2024學(xué)年第二學(xué)期期末試卷
- 忻州師范學(xué)院《高級(jí)病理生理學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 洛陽(yáng)科技職業(yè)學(xué)院《食品研發(fā)與創(chuàng)新實(shí)訓(xùn)》2023-2024學(xué)年第二學(xué)期期末試卷
- 大連交通大學(xué)《設(shè)計(jì)學(xué)科新進(jìn)展》2023-2024學(xué)年第二學(xué)期期末試卷
- 克孜勒蘇職業(yè)技術(shù)學(xué)院《經(jīng)濟(jì)數(shù)學(xué)方法》2023-2024學(xué)年第二學(xué)期期末試卷
- 限高架維修合同8篇
- 2025年4月八大員-勞務(wù)員練習(xí)題庫(kù)與參考答案解析
- 2025-2030肺癌手術(shù)行業(yè)市場(chǎng)現(xiàn)狀供需分析及投資評(píng)估規(guī)劃分析研究報(bào)告
- 農(nóng)村飲水安全工程可行性研究報(bào)告
- 一級(jí)注冊(cè)建筑師真題含答案2025年
- 全麻期間氣道梗阻的預(yù)防與處理
- 工業(yè)大數(shù)據(jù)的安全與隱私保護(hù)-洞察闡釋
- 上海教育版數(shù)學(xué)八年級(jí)上冊(cè)《直角三角形》導(dǎo)學(xué)案
- 數(shù)字經(jīng)濟(jì)背景下的財(cái)務(wù)共享中心建設(shè)
- 2024年江蘇徐州中考地理試卷真題及答案詳解(精校打?。?/a>
- 2025年安全月主要責(zé)任人講安全課件三:安全月主題宣講課件
評(píng)論
0/150
提交評(píng)論