匯編程序設(shè)計實驗報告_第1頁
匯編程序設(shè)計實驗報告_第2頁
匯編程序設(shè)計實驗報告_第3頁
匯編程序設(shè)計實驗報告_第4頁
匯編程序設(shè)計實驗報告_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、實驗一、認(rèn)識tddcbug集成操作軟件0實驗二、i/o程序設(shè)計4實驗三、代碼轉(zhuǎn)換程序設(shè)計8實驗四、循環(huán)程序設(shè)計實驗報告11實驗一、認(rèn)識tddebug集成操作軟件實驗題目:認(rèn)識tddebug集成操作軟件實驗?zāi)康模?. 熟悉匯編程序的開發(fā)過程。2. 認(rèn)識tddebug集成操作軟件。3. 掌握在tddebug集成環(huán)境屮編輯、編譯、連接匯編語言程序方法。4. 掌握int21h軟件中斷來調(diào)用dos內(nèi)部子程序的方法實驗要求:pc微機(jī)一臺實驗主要步驟:1. 運行tddebug軟件,選擇edit菜單編寫實驗程序2. 使用compile菜單中的compile和link對實驗程序進(jìn)行匯編、連接,生成執(zhí)行文件。3.

2、 使用rmrun菜單中的run運行程序,觀察運行結(jié)果。4. 使用rmrun菜單屮的debug調(diào)試程序,查看程序段、數(shù)據(jù)段、附加段裝入內(nèi)存后的分 配情況。單步執(zhí)行數(shù)據(jù)傳送指令后,觀察各寄存器及數(shù)據(jù)區(qū)的內(nèi)容。過程如下:5. 按f7單步執(zhí)行,在代碼區(qū)中有一個三角,表示正在執(zhí)行的指令。每一條指令的執(zhí)行一 定會使目標(biāo)寄存器和狀態(tài)寄存器發(fā)生變化,從相關(guān)窗口看結(jié)果。6. 檢查內(nèi)存數(shù)據(jù)區(qū)的內(nèi)容,關(guān)鍵是找岀用戶程序的數(shù)據(jù)段和附加段:7. 方法1:在cpu窗口按tab鍵使內(nèi)存數(shù)據(jù)顯示區(qū)成為活動區(qū),按ctrl+g鍵,輸入:“ds 或es寄存器的值:偏移地址”,即可顯示用戶指定的數(shù)據(jù)區(qū)& 方法2:選擇菜單vi

3、ew| dump,彈出內(nèi)存數(shù)據(jù)顯示窗口。9. 3) 查看執(zhí)行結(jié)果:按alt+f5,切換到用戶窗口。10. 更改數(shù)據(jù)區(qū)中的數(shù)據(jù),考察、調(diào)試程序的正確性。程序清單:ddata segmentmsrlenddatadbequends” hello, world !$”$ msrexdasegmentmsddblen dup(?)exdaendsmystack segment stackdw20 dup(?)mystack endscode segmentassumestart: movmovmovcs:code,ds:ddata,es:exdaax,ddatads,axax,exdamovmovmo

4、vmovmovnext: movmovinclooppushpopmovmovintmovintcode endsend實驗結(jié)果:1、編譯結(jié)果:es,axsloffset msrdi,offset msdcx,lenbx,0al,msrbx;開始傳輸數(shù)據(jù)es:msdbx,albxnextesdsdx,offset msdah,921hax,4c00h21hstartfile edit view run breakpoints data options window helpreadyimodule: noname file: d:456789noname.asm 24-1ir=cpu p?nt

5、ium pro3 t i 0#n oname#ncxtax144c1 c=0 1cs:0016>8a870000 next: mov al,msrbxbx 0003|z=0|cs:001a2688870000 mov es:msdbx,alex000a1 s=0 1cs:001f43 inc bx dx00001 o=0 1cs:0020e2f4 loop nextsi00001 p=1 iics:002206 push es di00001 a=0 1cs:0023if pop dsbp00001 i=l iics:0024ba0000 mov dx,offset msdsp00281

6、 d=0 |cs:0027b409 mov ah,9ds14181 iics:0029cd21 int 21h es14191 1cs:002bb8004c mov ax,4c00h ss141a1 iics:002ecd21 int 21hcs141d1 1cs:0030fbstiip00161 ii « i 7.7:vv.7 ? v w v.v.v.v.v:*7.va7.-.7.v.v,7.7 vv.7 w w v.v.v.7.7.7;*7 7; v :vv.v wav* v.v vv.v.7.7.7.7;v*av.wa7? v.v.7.7 vav*7/;.vav.v v*av.

7、7v.7.?-v.v.7 v v.v.v.vav*7.v; v* v? v v-avv vv v v *.if:=:;:=:=:二:拙:二:拙:穿:=:=:二:穿:=:=:;:二:拙:穿:=:=:;:二:穿:=:=:拙:=:=:二:拙:穿:=:=:刁iiii1408:0000 cd 20 fb 9f 00 9a f0 fe v/ u=h|1408:0008 id f0 32 ob d2 10 of 07 一三2 $ 丁»蛙|1408:0010 28 0e 56 01 16 04 0b 0e (rv©|ss:002a 0000|i 1408:0018 01 01 01 00

8、02 ff ff ff © © © e|ss:0028>0000| alt: f2-bkpt at f3-close f4-back f5-user f6-undo f7-instr f8-rtn f9-to flo-smenu實驗二、i/o程序設(shè)計實驗?zāi)康?1. 理解軟屮斷的調(diào)用方法及屮斷過程。2. 掌握int21h軟件屮斷來調(diào)用dos系統(tǒng)i/o子程序的方法。3. 掌握將存儲在內(nèi)存單元中的數(shù)據(jù)在屏幕上顯示的方法。4. 掌握從鍵盤輸入信息到內(nèi)存的方法。實驗要求:pc微機(jī)一臺1. 復(fù)習(xí)dos功能調(diào)用(int21h)中用于字符輸入(功能號為01h)、字符輸出(功

9、能號 為02h)、字符串輸入(功能號為0ah)以及字符串輸出(功能號為09h)的調(diào)用方法。 參見教材32位微型計算機(jī)原理與接口技術(shù)89頁。2. 閱讀示例程序,掌握輸入/輸ib方法。3. 從實驗內(nèi)容中任選一道題目,仔細(xì)閱讀相關(guān)的實驗要求及說明,編寫程序,以便上機(jī)調(diào) 試。4. 編程由鍵盤輸入任意一個字符,將該字符的ascii碼值顯示在屏幕上。實驗主要步驟:1. 畫出實驗流程圖。2. 運行tddebug軟件,選擇edit菜單編寫實驗程序3. 使用compile菜單中的compile和link對實驗程序進(jìn)行匯編、連接,生成執(zhí)行文件。4. 使用rmrun菜單中的run運行程序,觀察運行結(jié)果。5. 使用r

10、mnin菜單中的debug調(diào)試程序。單步執(zhí)行指令,觀察各寄存器及數(shù)據(jù)區(qū)的內(nèi)容。6. 更改數(shù)據(jù)區(qū)中的數(shù)據(jù),考察程序的正確性。程序清單:;編程由鍵盤輸入任意一個字符,將該字符的ascii碼值顯示在屏幕上。data segmentmes db'please input your letter:;0ah,0dh,$sd dbdata endscode segmentassume cs:code,ds:datastart: movmovmovmovintmovintmovandmovshrc2: addmovax,datads,axdx,offset mesah,09h21hah,01h21hb

11、l,alal,0f0hcl,4al,clal,30hdl,alintmovandc3: addmovmovintmovint21hal,blal,0fhal,30hdl,alah,02h21hah,4ch21hcode endsendstart實驗結(jié)果:1、示例結(jié)杲:2、程序結(jié)果:實驗三、代碼轉(zhuǎn)換程序設(shè)計實驗題目:代碼轉(zhuǎn)換程序設(shè)計實驗?zāi)康模?. 掌握運算類指令對各狀態(tài)標(biāo)志位的影響及其測試方法2. 掌握運用運算類指令編程及調(diào)試的方法3. 掌握子程序設(shè)計及調(diào)用方法實驗要求:pc微機(jī)一臺1. 復(fù)習(xí)運算類指令的用法。2. 復(fù)習(xí)子程序設(shè)計及調(diào)用方法。3. 閱讀示例稈序,常握子稈序的編程方法及相關(guān)技巧。4

12、. 從實驗內(nèi)容中任選一道題目,仔細(xì)閱讀相關(guān)的實驗要求及說明,用子程序處理方式編寫 程序,以便上機(jī)調(diào)試。實驗內(nèi)容:1. 【示例】將5位十進(jìn)制數(shù)的數(shù)字串轉(zhuǎn)換為一個字的二進(jìn)制數(shù)2. 編寫程序?qū)?nèi)存屮一個字的數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)的數(shù)字串顯示。3將內(nèi)存中一個字的數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)的數(shù)字串。十六位二進(jìn)制數(shù)(一個字)的值域為065535,最大可轉(zhuǎn)換為5位十進(jìn)制數(shù)。五位十進(jìn) 制數(shù)可表示為:nd = z)4xl04 + d3 xlo3 + d2 xlo2 + d xlo1 + d()因此,將十六位二進(jìn)制數(shù)轉(zhuǎn)換為5位ascii碼表示的十進(jìn)制數(shù)數(shù)字串,即采用除10取 余方法,分別求dr并將它們轉(zhuǎn)換為ascii碼。以字符串

13、方式顯示在屏幕上。實驗主要步驟:1. 畫出實驗流程圖。2. 運行tddebug軟件,選擇edit菜單編寫實驗程序3. 使用compile菜單屮的compile和link對實驗程序進(jìn)行匯編、連接,生成執(zhí)行文件。4. 使用rmmn菜單中的run運行程序,觀察運行結(jié)果。5. 使用rmrun菜單中的debug調(diào)試程序。單步執(zhí)行指令,觀察各寄存器及數(shù)據(jù)區(qū)的內(nèi)容。6. 更改數(shù)據(jù)區(qū)屮的數(shù)據(jù),考察程序的正確性。程序清單:ddata segmentmes dbbuf dwdb;將內(nèi)存中一個字的數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)的數(shù)字串'the decimal decimal code of 000ch are:$'

14、;000ch5 dup(o)ddata endscode segmentassumecs:code,ds:ddatastart:movax,ddatamovds,axmovsloffset bufmovax,ds:simovbl,0ahaddsi,7movcx,5a:decsidivbladdah,30hmovds:si,ahmovah,0cmpal,0loopnzamovdx,offset mesmovah,09hint21hmovcx,5movsi,offset bufaddsi,2b:movdl,ds:simovah,02hint21hincsiloopbmovah,4chint21hl

15、oopbcodeendsendstart實驗結(jié)果:1、示例結(jié)果:實驗四、循環(huán)程序設(shè)計實驗報告實驗題目:循環(huán)程序設(shè)計實驗?zāi)康模?. 掌握運算類指令對各狀態(tài)標(biāo)志位的影響及其測試方法5. 掌握運用運算類指令編程及調(diào)試的方法6. 掌握子程序設(shè)計及調(diào)用方法實驗要求:pc微機(jī)一臺1. 復(fù)習(xí)比較指令、條件轉(zhuǎn)移指令和循壞指令。2. 閱讀示例程序,掌握循環(huán)程序的結(jié)構(gòu)、循環(huán)控制方法及相關(guān)技巧。3. 從實驗內(nèi)容中任選一道題目,仔細(xì)閱讀相關(guān)的實驗要求及說明,編寫程序,以便上機(jī)調(diào) 試。實驗內(nèi)容:1. 【示例】求某數(shù)據(jù)區(qū)內(nèi)負(fù)數(shù)的個數(shù)2. 從鍵盤輸入一字符串,搜索該字符串中是否有字符“a”,若有請輸出其在串中的位置實驗主要

16、步驟:1. 畫出實驗流程圖。2. 運行tddebug軟件,選擇edit菜單編寫實驗程序3. 使用compile菜單中的compile和link對實驗程序進(jìn)行匯編、連接,生成執(zhí)行文 件。4. 使用rmrun菜單中的run運行程序,觀察運行結(jié)果。5. 使用rmi-un菜單屮的debug調(diào)試程序。觀察構(gòu)成分支、循環(huán)條件的各標(biāo)志的變化 情況及相關(guān)寄存器內(nèi)容。6. 更改數(shù)據(jù)區(qū)中的數(shù)據(jù),考察程序的正確性。程序清單:;從鍵盤輸入一字符串,搜索該字符串中是否有字符“a”,若有請輸出其在串中的位置data segmenta dbb dbc db1 dup('plcasc input your strin

17、g:$*)1 dup(*sorry,there is not “a”!$)1 dup('the place of a is:$)data endscode segmentassume cs:code,ds:datastart:movax,datamovds,axmovdx,0;初始化ds:dxmovah,09h;在屏幕上輸出提示int21hmovdx,0;調(diào)用21h的oah號功能等待輸入字符串movah,0ahint21hmovcx,80;逐個檢查字符movsi,0s:moval,ds:siincsicmpal;$*jenonecmpal,ajefindloopsnone:movdl,0ah;換行處理movah,02hint21hleaax,bmovdx,ax;輸出提示沒有找到movah,09hint21hover:movax,4c00hint21h

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論