匯編語言程序設(shè)計(jì)_第1頁(yè)
匯編語言程序設(shè)計(jì)_第2頁(yè)
匯編語言程序設(shè)計(jì)_第3頁(yè)
匯編語言程序設(shè)計(jì)_第4頁(yè)
匯編語言程序設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩2頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè)專心-專注-專業(yè)精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè)實(shí)驗(yàn)?zāi)康呐c內(nèi)容目的:1)進(jìn)一步熟悉匯編語言程序的編輯、宏匯編、鏈接、運(yùn)行基本概念;2)熟練掌握動(dòng)態(tài)調(diào)試程序TD/DEBUG 的常用命令或窗口功能,學(xué)會(huì)用TD/DEBUG 調(diào)試程序,修改數(shù)據(jù)和寄存器等環(huán)境;3)熟悉掌握匯編語言程序的典型數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)、典型程序流控制方法,了解DOS/BIOS 功能調(diào)用的基本方法。內(nèi)容:(1)編寫程序?qū)崿F(xiàn)如下功能: 從鍵盤輸入任意字符串后,存入自定義存儲(chǔ)單元,判斷處理后將字符串中小寫字母轉(zhuǎn)換為大寫字母(其他字符不變)并按原順序?qū)⑦@些字符在屏幕

2、上顯示出來。 從鍵盤輸入在065535 之間的十進(jìn)制數(shù),將其轉(zhuǎn)換為16 進(jìn)制數(shù)并在屏幕中顯示出來,要求判斷輸入字符串是否為在065535 之間的十進(jìn)制數(shù)。(2)復(fù)習(xí)TD 各種操作,并用DEBUG 調(diào)試程序,學(xué)會(huì)基本命令操作,并通過單步、設(shè)置斷點(diǎn)等方法觀察中間結(jié)果,完成正常運(yùn)行。命令行方式下直接鍵入debug myfile.exe 回車(myfile 為待調(diào)試可執(zhí)行程序),進(jìn)入調(diào)試方式(顯示-),鍵入H 回車顯示全部命令、格式和功能。常用命令有:U(反匯編)、A(匯編輸入指令程序)、R(寄存器顯示/修改)、I(端口輸入)、O(端口輸出)、D(顯示數(shù)據(jù))、E(修改數(shù)據(jù))。除資源修改管理功能外,重點(diǎn)

3、應(yīng)用T(單步)、Tn(執(zhí)行n 步)、P(過程/指令)、G(從當(dāng)前CS:IP執(zhí)行到斷點(diǎn))或G=1 2(從1 執(zhí)行到2 斷點(diǎn))調(diào)試實(shí)驗(yàn)程序。程序流程圖:1.2. 三. 方案實(shí)現(xiàn)與測(cè)試1)實(shí)驗(yàn)一的基本實(shí)驗(yàn)內(nèi)容和要求 編寫代碼完成功能要求,文件格式為.asm 文件(如文件名為add.asm),將文件放入帶匯編工具的文件夾中,即含有匯編工具(MASM/TASM.EXE)和鏈接工具(LINK/TLINK.EXE)的文件夾。 全屏啟動(dòng)命令行模式,進(jìn)入上述文件夾輸入: tasm add.asm 或 masm add 回車后編譯產(chǎn)生add.obj 文件再輸入: tlink add.obj 或 link add

4、回車后鏈接產(chǎn)生add.exe 文件如果程序有錯(cuò)誤,編譯時(shí)會(huì)產(chǎn)生錯(cuò)誤提示,指出錯(cuò)誤的位置和錯(cuò)誤類型及錯(cuò)誤碼,改正錯(cuò)誤后再重新編譯鏈接。 啟動(dòng)TD 并載入add.exe,在代碼段可以看到程序指令,部分符號(hào)已被實(shí)際地址或數(shù)值替換表示。直接運(yùn)行:運(yùn)用TD功能鍵F9,運(yùn)行結(jié)果如下圖所示由圖可以看出,在數(shù)據(jù)區(qū)13B3:0000到13B3:0005分別存放的是data1,data2兩個(gè)加數(shù)和data3和的數(shù)據(jù),且運(yùn)行結(jié)果正確,在運(yùn)行結(jié)束之后,寄存器器中的值恢復(fù)到隨機(jī)值。單步運(yùn)行:使用TD功能鍵F7,當(dāng)單步運(yùn)行完mov cx,0002這條指令后,程序的運(yùn)行結(jié)果如下圖所示斷點(diǎn)運(yùn)行,比如在指令mov si+000

5、4,al zhetiao 指令上設(shè)置斷點(diǎn)后,程序的運(yùn)行結(jié)果為:直接在代碼區(qū)添加代碼,如在指令mov si,00000 后添加指令mov ax,100.程序結(jié)果2)匯編語言程序設(shè)計(jì)實(shí)驗(yàn)內(nèi)容(1)從鍵盤輸入任意字符串后,存入自定義存儲(chǔ)單元,判斷處理后將小寫字母轉(zhuǎn)換為大寫字母(其他字符不變)并按原順序?qū)⑦@些字符在屏幕上顯示出來。主要算法:disp proc nearxor cx,cx;給CX中的數(shù)據(jù)進(jìn)行清零mov cl,input1;將輸入的字符數(shù)付給,循環(huán)次數(shù)mov si,2;input開始為實(shí)際輸入的ASCII碼again:mov dl,inputsicmp dl,61h;判斷是否為小寫字母jb

6、 nextcmp dl,7ahja nextsub dl,20h;將小寫字母轉(zhuǎn)換為大寫字母next: mov ah,02h;顯示字符int 21hinc si;SI指向下一個(gè)字符loop againretdisp endp調(diào)試程序:使用單步運(yùn)行的方法,輸入字符串“123abc”,程序運(yùn)行到調(diào)用子程序,單步運(yùn)行指令mov cl,0001后,發(fā)現(xiàn)此時(shí)CX中的數(shù)值變?yōu)?,符合我剛才輸入的字符總數(shù)。程序第一次執(zhí)行指令cmp dl,61,可以發(fā)現(xiàn)CF=1,此時(shí)程序跳轉(zhuǎn)到顯示字符程序段,符合我剛才輸入的第一個(gè)字符1的情況。當(dāng)CX=0003時(shí),此時(shí)程序判斷輸入的字符a是否為小寫字母,單步運(yùn)行指令sub dl

7、,20h后,小寫字母a被轉(zhuǎn)換為A,程序運(yùn)行結(jié)果正確。當(dāng)子程序運(yùn)行結(jié)束之后,回到主程序,當(dāng)運(yùn)行結(jié)果提示“Do you want to continue (y/n)”,此時(shí)如輸入y,重復(fù)程序操作,如輸入n,程序結(jié)束。最終程序運(yùn)行結(jié)果如下圖所示:(2)從鍵盤輸入在065535 之間的十進(jìn)制數(shù),將其轉(zhuǎn)換為16 進(jìn)制數(shù)并在屏幕中顯示出來,要求判斷輸入字符串是否為在065535 之間的十進(jìn)制數(shù)。 主要算法:change proc nearclcxor ax,axxor bx,bxxor dx,dxmov cl,input1mov si,2again:mov bl,inputsicmp bl,30hjb e

8、rror1cmp bl,39hja error1sub bl,30hdec clcmp cl,0jz overmov ax,1push cxloop2:mul tenloop loop2pop cxmul bxadd output,axjc errorinc sijmp againover: add output,bxjnc over1error1: mov right,0over1:retchange endp調(diào)試程序:使用單步運(yùn)行的方法,輸入字符串“123”,當(dāng)程序運(yùn)行到調(diào)用運(yùn)行數(shù)值轉(zhuǎn)換子程序,單步運(yùn)行指令mov bl,inputsi,在調(diào)試程序段顯示為mov bl,si+0001。這里和上個(gè)字符串實(shí)驗(yàn)運(yùn)行指令mov dl inputsi在調(diào)試程序段顯示為何不同?經(jīng)檢查發(fā)現(xiàn),在本程序的數(shù)據(jù)段中,input的值為0001.單步運(yùn)行指令mov cl 0002,發(fā)現(xiàn)CX中的數(shù)值變?yōu)?,符合輸入字符串的個(gè)數(shù)。程序第一次運(yùn)行指令cmp bl 30h,開始為我輸入的第一個(gè)字符是不是0-9,判斷好之后,運(yùn)行指令sub bl,30h。將ASCII碼轉(zhuǎn)換為數(shù)字。程序?qū)⒆址嫁D(zhuǎn)換為數(shù)字之后,再將其轉(zhuǎn)換為十六進(jìn)制數(shù)并將其輸出。當(dāng)我輸入的字符串不是0-65535中的數(shù)字時(shí),此時(shí)程序運(yùn)行結(jié)果會(huì)提示“The number you input is not from 0-6

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論