匯編語(yǔ)言實(shí)驗(yàn)報(bào)告_第1頁(yè)
匯編語(yǔ)言實(shí)驗(yàn)報(bào)告_第2頁(yè)
匯編語(yǔ)言實(shí)驗(yàn)報(bào)告_第3頁(yè)
匯編語(yǔ)言實(shí)驗(yàn)報(bào)告_第4頁(yè)
匯編語(yǔ)言實(shí)驗(yàn)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩18頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

匯編語(yǔ)言程序設(shè)計(jì)試驗(yàn)匯報(bào)學(xué)院:計(jì)算機(jī)科學(xué)與技術(shù)專業(yè):計(jì)算機(jī)科學(xué)與技術(shù)指導(dǎo)教師:**班級(jí):**學(xué)號(hào):**姓名:

**試驗(yàn)一集成環(huán)境及調(diào)試工具試驗(yàn)題目認(rèn)識(shí)Tddebug集成操作軟件分析設(shè)計(jì)思想,繪制試驗(yàn)原理圖、流程圖(一)、匯編語(yǔ)言程序開發(fā)過(guò)程如圖1.1所表示,這個(gè)過(guò)程主要有編輯、編譯、鏈接幾個(gè)步驟組成。匯編匯編源程序調(diào)用編輯程序edit.exe調(diào)用編譯程序tasm.exe或masm.exe調(diào)用鏈接程序tlink.exe或link.exe編輯.asm匯編.obj鏈接.編輯編譯鏈接圖1.1匯編語(yǔ)言程序開發(fā)過(guò)程1、源程序編輯E:>EDITTEST.ASM編輯過(guò)程就是將源程序輸入內(nèi)存,生成一個(gè)擴(kuò)展名為ASM文本文件并存入硬盤。2、源程序編譯 E:>TASMTEST.ASM編譯也稱為匯編,就是利用匯編器(如TASM或MASM)對(duì)源程序進(jìn)行編譯,生成擴(kuò)展名為OBJ目標(biāo)文件。在編譯過(guò)程中,檢驗(yàn)語(yǔ)法錯(cuò)誤,若有錯(cuò),則不生成目標(biāo)代碼文件,并給犯錯(cuò)誤信息。依照錯(cuò)誤信息應(yīng)返回到編輯狀態(tài),修改源程序。3、目標(biāo)程序鏈接 E:>TLINKTEST.OBJ 鏈接過(guò)程是利用鏈接程序(如TLINK或LINK)將用戶目標(biāo)程序和庫(kù)文件鏈接、定位,生成擴(kuò)展名為EXE可執(zhí)行文件。鏈接時(shí),假如鏈接文件找不到所需要鏈接信息,則發(fā)犯錯(cuò)誤信息,不生成可執(zhí)行文件。4、調(diào)試可執(zhí)行程序 E:>TDTEST.EXE 假如生成EXE文件運(yùn)行后,并沒(méi)有按照設(shè)計(jì)意圖運(yùn)行,就需要對(duì)程序進(jìn)行調(diào)試,找犯錯(cuò)誤。再對(duì)源程序進(jìn)行修改,即重復(fù)進(jìn)行編輯、編譯、鏈接、調(diào)試,直到生成完全正確可執(zhí)行文件為止。(二)、Tddebug集成操作軟件使用說(shuō)明該軟件是集編輯(Edit.exe)、編譯(Tasm.exe)、連接(Link.exe)和調(diào)試(TD.exe)等多個(gè)功效于一體,可在DOS環(huán)境下運(yùn)行,為用戶提供了一個(gè)學(xué)習(xí)微機(jī)原理試驗(yàn)平臺(tái)。開啟TddebugD:\wjyl>Tddebug若開啟成功,進(jìn)入主界面。Tddebug菜單結(jié)構(gòu)主菜單子菜單菜單說(shuō)明Edit編輯源文件(.asm)Compile——Compile編譯源文件(.asm)——Link連接目標(biāo)文件(.obj)——BuildAll編譯和連接Pmrun進(jìn)入保護(hù)模式調(diào)試狀態(tài)Rmrun——Run運(yùn)行實(shí)模式程序(.exe)——Debug進(jìn)入實(shí)模式調(diào)試狀態(tài)(.exe)Help版本信息Quit退出Tddebug菜單項(xiàng)選擇擇(1)快捷鍵選擇主菜單:ALT+熱鍵(E,C,P,R,H,Q)(2)按左右鍵或直接使用快捷鍵在主菜單之間切換。使用上下鍵可選擇子菜單中菜單項(xiàng)。執(zhí)行菜單項(xiàng)選中要執(zhí)行菜單項(xiàng),鍵入Enter鍵,系統(tǒng)彈出對(duì)話框,輸入需操作文件名,以Enter鍵結(jié)尾,取消操作按Esc鍵。實(shí)模式調(diào)試窗口說(shuō)明(1)鍵入Alt+R選擇Rmrun主菜單Debug子菜單彈出實(shí)模式調(diào)試窗口。此時(shí)可能會(huì)疊加一個(gè)匯報(bào)無(wú)符號(hào)表對(duì)話框,按Esc鍵關(guān)閉該對(duì)話框。(2)該窗口實(shí)際是TurboDebugger調(diào)試器窗口,簡(jiǎn)稱TD。其窗口劃分如圖1-1所表示。主菜單條代碼顯示調(diào)試區(qū)存放器顯示調(diào)試區(qū)標(biāo)志存放器顯示調(diào)試區(qū)內(nèi)存數(shù)據(jù)顯示調(diào)試區(qū)堆棧顯示調(diào)試區(qū)快捷鍵操作提醒區(qū)圖1-1TurboDebugger調(diào)試窗口劃分圖(3)主菜單中包含了File、Edit、View、Run、Breakpoints、Data、Options、Windows和Help共9個(gè)菜單項(xiàng)??墒褂脽徭I選擇對(duì)應(yīng)菜單。在調(diào)試程序或操作調(diào)試器中會(huì)使用一些快捷鍵來(lái)實(shí)現(xiàn)一些功效,下面將列出慣用功效快捷鍵及實(shí)現(xiàn)功效。(三)、試驗(yàn)步驟運(yùn)行Tddebug軟件,選擇Edit菜單編寫試驗(yàn)程序使用Compile菜單中Compile和Link對(duì)試驗(yàn)程序進(jìn)行匯編、連接,生成執(zhí)行文件。使用Rmrun菜單中Run運(yùn)行程序,觀察運(yùn)行結(jié)果。使用Rmrun菜單中Debug調(diào)試程序,查看程序段、數(shù)據(jù)段、附加段裝入內(nèi)存后分配情況。單步執(zhí)行數(shù)據(jù)傳送指令后,觀察各存放器及數(shù)據(jù)區(qū)內(nèi)容。過(guò)程以下:按F7單步執(zhí)行,在代碼區(qū)中有一個(gè)三角,表示正在執(zhí)行指令。每一條指令執(zhí)行一定會(huì)使目標(biāo)存放器和狀態(tài)存放器發(fā)生改變,從相關(guān)窗口看結(jié)果。檢驗(yàn)內(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,切換到用戶窗口。更改數(shù)據(jù)區(qū)中數(shù)據(jù),考查、調(diào)試程序正確性程序清單及相關(guān)注釋;數(shù)據(jù)傳送試驗(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 AX,4C00H INT 21H ;返回DOS狀態(tài)CODE ENDS ENDSTART分析試驗(yàn)結(jié)果心得體會(huì)第一次接觸實(shí)際匯編語(yǔ)言程序環(huán)境,熟悉了對(duì)應(yīng)操作,書本上知識(shí)也得以應(yīng)用,不過(guò)好像課程與試驗(yàn)有些脫節(jié),所以需要更多自學(xué)。

試驗(yàn)二I/O程序設(shè)計(jì)一、試驗(yàn)題目1.【示例】:將指定數(shù)據(jù)區(qū)中一個(gè)字節(jié)數(shù)據(jù)以十六進(jìn)制數(shù)形式顯示在屏幕上。2.編程由鍵盤輸入任意一個(gè)字符,將該字符ASCII碼值顯示在屏幕上。設(shè)計(jì)思緒:在第一題MOV SI,OFFSETSD之后增加以下代碼段MOV AH,01H;鍵盤輸入并回顯INT 21HMOV DS:[SI],AL;將AL中鍵入ASCII碼存入數(shù)據(jù)段MOVAH,02H;輸出回車換行符 MOVDL,0AH INT21H二、分析設(shè)計(jì)思想,繪制試驗(yàn)原理圖、流程圖設(shè)計(jì)思緒:首先將該數(shù)以十六進(jìn)制數(shù)形式分解,然后將每一位分別轉(zhuǎn)換為ASCII碼送屏幕顯示。其中0H~9H之間數(shù)加30H,即可得0H~9HASCII碼,而AH~FHASCII碼,則需再加7H,參見表5-1。參考程序流程如圖2-1所表示。圖圖2-1一個(gè)字節(jié)數(shù)以十六進(jìn)制數(shù)形式顯示處理流程三、程序清單及相關(guān)注釋;1.顯示aHEXDATA SEGMENT USE16MES DB 'Showaashex:',0AH,0DH,'$'SD DB 'a'DATA ENDSCODE SEGMENT USE16 ASSUME CS:CODE,DS:DATASTART: MOVAX,DATA MOV DS,AXMOVDX,OFFSETMES;顯示提醒信息 MOV AH,09H INT21H MOV SI,OFFSETSD MOV AL,DS:[SI] AND AL,0F0H ;取高4位 SHR AL,4 CMP AL,0AH ;是否是A以上數(shù) JB C2 ADD AL,07H C2:ADDAL,30HMOVDL,AL;顯示字符 MOV AH,02H INT 21H MOV AL,DS:[SI]ANDAL,0FH;取低4位 CMP AL,0AH JB C3 ADD AL,07HC3: ADD AL,30H MOV DL,AL ;顯示字符 MOV AH,02H INT 21H MOV AX,4C00H ;返回DOS INT 21HCODE ENDSENDSTARTSTART;2.顯示輸入字符HEXDATASEGMENTUSE16MSGDB'Inputachar:$'MESDB0AH,0DH,'Showaashex:',0AH,0DH,'$'SDDB'a'DATAENDSCODESEGMENTUSE16ASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVDX,OFFSETMSG;顯示提醒信息MOVAH,09HINT21HMOVAH,01HINT21HMOVSI,OFFSETMESMOV[SI+5],ALMOV[SD],ALMOVDX,OFFSETMES;顯示提醒信息MOVAH,09HINT21HMOVSI,OFFSETSDMOVAL,DS:[SI]ANDAL,0F0H;取高4位SHRAL,4CMPAL,0AH;是否是A以上數(shù)JBC2ADDAL,07HC2:ADDAL,30HMOVDL,AL;顯示字符MOVAH,02HINT21HMOVAL,DS:[SI]ANDAL,0FH;取低4位CMPAL,0AHJBC3ADDAL,07HC3:ADDAL,30HMOVDL,AL;顯示字符MOVAH,02HINT21HMOVAX,4C00H;返回DOSINT21HCODEENDSENDSTARTSTART分析試驗(yàn)結(jié)果1、【示例】:2、輸入字符“,”結(jié)果是:心得體會(huì)在第一次試驗(yàn)基礎(chǔ)上,對(duì)匯編語(yǔ)言編寫程序有了一定認(rèn)識(shí)和基礎(chǔ),在完成第一道試驗(yàn)題之后,第二題經(jīng)過(guò)自己查閱書籍以及老師耐性指導(dǎo),終于完成了,頗有小成就感。試驗(yàn)三代碼轉(zhuǎn)換程序設(shè)計(jì)試驗(yàn)題目2.編寫程序?qū)?nèi)存中一個(gè)字?jǐn)?shù)轉(zhuǎn)換為十進(jìn)制數(shù)數(shù)字串顯示。分析設(shè)計(jì)思想,繪制試驗(yàn)原理圖、流程圖設(shè)計(jì)思想:五位十進(jìn)制數(shù)可表示為所以,將十六位二進(jìn)制數(shù)轉(zhuǎn)換為5位ASCII碼表示十進(jìn)制數(shù)數(shù)字串,即采取除10取余方法,分別求,并將它們轉(zhuǎn)換為ASCII碼。以字符串方式顯示在屏幕上程序清單及相關(guān)注釋DDATA SEGMENTMES DB '十進(jìn)制:$'BUF DW 1234DB5dup(0)DDATA ENDSCODESEGMENT ASSUMECS:CODE,DS:DDATASTART:MOVAX,DDATA MOV DS,AX MOV SI,OFFSETBUF MOV AX,DS:[SI] MOV BL,0AH;送被除數(shù) ADD SI,7;SI指向存放位置末尾 MOV CX,5A:DEC SI;SI=SI-1DIV BL;被除數(shù)在AX中,除數(shù)在BL中,結(jié)果商在AL中,余數(shù)在AH中 ADD AH,30H MOV DS:[SI],AH MOV AH,0;清零余數(shù),是AX參加下次運(yùn)算 CMP AL,0 LOOPNZ A MOV DX,OFFSETMES;顯示提醒信息 MOV AH,09H INT 21H MOV CX,5 MOVSI,OFFSETBUF ADD SI,2B:MOVDL,DS:[SI] ;顯示十進(jìn)制字符串 MOVAH,02HINT21HINC SILOOPBMOV AH,4CH ;返回DOS INT 21HCODE ENDS END START 分析試驗(yàn)結(jié)果1.內(nèi)存中一個(gè)字?jǐn)?shù)轉(zhuǎn)換為十進(jìn)制數(shù)數(shù)字串心得體會(huì)這一次試驗(yàn),利用了更多指令算法,課程脫節(jié)問(wèn)題也更顯著地暴露出來(lái),沒(méi)有抓住關(guān)鍵我走了不少?gòu)澛?,不過(guò)只要專心,又有老師指導(dǎo),還是能夠出眾地完成此次試驗(yàn),而且先于理論課程學(xué)到了更新知識(shí)。試驗(yàn)四分支程序設(shè)計(jì)試驗(yàn)題目4.從鍵盤輸入一個(gè)字符,判斷該字符是小寫字母、大寫字母、數(shù)字或其余字符,并給出對(duì)應(yīng)提醒。分析設(shè)計(jì)思想,繪制試驗(yàn)原理圖、流程圖程序清單及相關(guān)注釋DATASEGMENTMSG1DB'isanumber!$'MSG2DB'istheuppercaseofanenglishchar!$'MSG3DB'isthelowerofanenglishchar!$'MSG4DB'isananotherchar$'DATAENDSCODESEGMENTUSE16ASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVAH,01HINT21HCALLJUDGE;顯示MOVAH,9INT21HMOVAH,4CHINT21H

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論