匯編實(shí)驗(yàn)報(bào)告樣例_第1頁
匯編實(shí)驗(yàn)報(bào)告樣例_第2頁
匯編實(shí)驗(yàn)報(bào)告樣例_第3頁
匯編實(shí)驗(yàn)報(bào)告樣例_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡介

匯編語言上機(jī)實(shí)驗(yàn)報(bào)告(樣例)時(shí)間:2005-4-1地點(diǎn):南一樓803室15號(hào)實(shí)驗(yàn)臺(tái)實(shí)驗(yàn)人員:曹忠升實(shí)驗(yàn)一一、題目從鍵盤上鍵入0至9中任一自然數(shù)x,求其立方值。二、實(shí)驗(yàn)要求設(shè)計(jì)實(shí)現(xiàn)一個(gè)通過查表進(jìn)行數(shù)學(xué)計(jì)算的程序。掌握基本的程序設(shè)計(jì)框架和方法、熟悉常用指令的用法、熟悉DOS功能調(diào)用、進(jìn)一步掌握TD的使用方法。三、寄存器分配和變量定義說明(可增加解題方法的簡要說明)求一個(gè)數(shù)的立方值可以用乘法運(yùn)算實(shí)現(xiàn),也可以造一立方表,運(yùn)行時(shí)查表實(shí)現(xiàn)。依據(jù)本次實(shí)驗(yàn)的要求,此處用查表法。輸入數(shù)據(jù)為0至9中任一自然數(shù),用一字節(jié)單元存放其值;輸出數(shù)據(jù)是該數(shù)的立方,用一字單元存放其值。1.存儲(chǔ)單元分配X:字節(jié)變量X中存放鍵入的自然數(shù)x。XXX:字變量XXX中存放x的立方值。TAB:立方表的首地址。表中共10項(xiàng),每項(xiàng)占一個(gè)字,依次存放0-9的立方值。從表的結(jié)構(gòu)可知,x的立方值在表中的存放地址與x有如下的對(duì)應(yīng)關(guān)系:(TAB+2*x)=x的立方值對(duì)于每個(gè)鍵入的x,從字單元TAB+2*x之中取出的數(shù)據(jù)便是其立方值。從鍵盤接受數(shù)字使用1號(hào)系統(tǒng)功能調(diào)用,此時(shí)送入AL之中的是x的ASCII碼而不是x的真值。所以,要首先將x的ASCII碼換成x的真值,然后用TAB+2*x計(jì)算x的立方值的存放地址,按此地址查到x的立方值。INPUT:字節(jié)存儲(chǔ)區(qū),用于存放提示信息。2.寄存器分配EBX:存放x的真值,利用帶比例因子的變址尋址方式訪問立方表。AX、DX:臨時(shí)寄存器。四、流程圖開始開始提示用戶從鍵盤輸入一個(gè)數(shù)字用1號(hào)系統(tǒng)功能調(diào)用從鍵盤接收一數(shù)字x的ASCII碼結(jié)束x的真值→AL→Xx的真值→EBX(TAB+[2*EBX])→XXX五、源程序.386STACKSEGMENTUSE16STACKDB200DUP(0)STACKENDSDATASEGMENTUSE16INPUTDB'PLEASEINPUTX(0-9):$'TABDW0,1,8,27,64,125,216,343,512,729XDB?XXXDW?DATAENDSCODESEGMENTUSE16ASSUMECS:CODE,DS:DATA,SS:STACKBEGIN:MOVAX,DATAMOVDS,AXMOVDX,OFFSETINPUTMOVAH,9INT21H;顯示PLEASEINPUTX(0-9)://錄入錯(cuò)誤:“;”寫成了中文MOVAH,1INT21H;從鍵盤接受一數(shù)字x的ASCII碼ANDAL,0FH//錄入錯(cuò)誤:數(shù)字“0”敲成了字母“OMOVX,AL;x的真值→AL→XMOVEBX,AL;x的真值→EBX//設(shè)計(jì)錯(cuò)誤,應(yīng)改成:XOREBX,EBXMOVBL,ALMOVAX,TAB[EBX*2];(TAB+[2*EBX])→AXMOVXXX,AX;保存立方值MOVAH,4CHINT21HCODEENDSENDBEGIN六、實(shí)驗(yàn)步驟1.使用編輯程序EDIT.EXE錄入源程序,存盤文件名為CUBE.ASM。2.使用MASM5.0或6.0匯編源文件。即MASMCUBE;3.觀察提示信息,若出錯(cuò),則用編輯程序修改錯(cuò)誤,存盤后重新匯編,直至不再報(bào)錯(cuò)為止。4.使用連接程序LINK.EXE將匯編生成的CUBE.OBJ文件連接成執(zhí)行文件。即LINKCUBE;5.若連接時(shí)報(bào)錯(cuò),則依照錯(cuò)誤信息修改源程序。之后重新匯編和連接,直至不再報(bào)錯(cuò)并生成CUBE.EXE文件。6.執(zhí)行該程序。即在命令行提示符后輸入CUBE后回車,觀察執(zhí)行現(xiàn)象。(以上6個(gè)步驟是所有編程實(shí)驗(yàn)需要經(jīng)歷的,在后續(xù)實(shí)驗(yàn)報(bào)告中可以適當(dāng)簡化)7.使用TD.EXE觀察CUBE的執(zhí)行情況。即TDCUBE.EXE回車(1)觀察CS、IP、SP、DS、ES、SS的值。(2)單步執(zhí)行開始2條指令,觀察DATA的實(shí)際值,以及DS的改變情況。(3)觀察SS:0至SS:SP區(qū)域的數(shù)據(jù)值。(4)觀察DS:0開始數(shù)據(jù)區(qū),找到各變量在數(shù)據(jù)段中的位置和值。(5)觀察第三條語句中源操作數(shù)的值,是否和INPUT變量的偏移地址相同。(6)執(zhí)行第3至7條指令,輸入數(shù)字3。觀察AL的值是否為33H。(7)執(zhí)行到MOVAX,TAB[EBX*2],觀察源操作數(shù)的具體值。(8)執(zhí)行MOVXXX,AX,觀察目的操作數(shù)的形式。到數(shù)據(jù)段中觀察XXX的值是否是3的立方值。8.將程序重新裝入TD中(或?qū)S:IP重置到MOVAH,9的位置),在執(zhí)行9號(hào)功能調(diào)用之前,用TD將數(shù)據(jù)段中INPUT緩沖區(qū)的‘$’(24H)改成其他數(shù)值(如00H),再執(zhí)行9號(hào)功能調(diào)用,觀察現(xiàn)象。9.當(dāng)調(diào)用1號(hào)功能時(shí),若輸入大寫字母‘A’,則送到XXX的值是哪個(gè)存儲(chǔ)單元的值;若輸入的是‘K’,則送到XXX的值又是哪個(gè)存儲(chǔ)單元的值。(以上3個(gè)步驟是針對(duì)實(shí)驗(yàn)要求和每個(gè)人自己在學(xué)習(xí)中不太理解的內(nèi)容設(shè)計(jì)的)七、實(shí)驗(yàn)記錄(包括實(shí)驗(yàn)條件、輸入/輸出、錯(cuò)誤和修改等信息的記錄)1、實(shí)驗(yàn)環(huán)境條件:P31GHz,256M內(nèi)存;WINDOWS2000命令行窗口;EDIT.EXE2.0;MASM.EXE6.0;LINK.EXE5.2;TD.EXE5.0。2、匯編源程序時(shí),匯編程序報(bào)了3個(gè)錯(cuò)誤。它們是:CUBE.asm(17):errorA2044:invalidcharacterinfileCUBE.asm(22):errorA2022:instructionoperandsmustbethesamesizeCUBE.asm(20):errorA2006:undefinedsymbol:OFH按照提示,對(duì)對(duì)應(yīng)行仔細(xì)檢查,發(fā)現(xiàn)了錯(cuò)誤原因。見源程序中“//”后的說明。3、連接過程沒有發(fā)生異常。4、執(zhí)行之后在新的一行上顯示了字符串PLEASEINPUTX(0-9):5、輸入3之后在冒號(hào)后顯示了一個(gè)3。6、程序退出到命令行提示符。7、用TD調(diào)入CUBE.EXE后(1)(CS)=0B0AH、(IP)=0000H、(SP)=00C8H、(DS)=0AEAH、(ES)=0AEAH、(SS)=0AFAH。(2)單步執(zhí)行開始2條指令,DATA的值=0B07H,(DS)→0B07H。(3)SS:0至SS:SP區(qū)域的數(shù)據(jù)值在程序沒有執(zhí)行時(shí)均為0。單步執(zhí)行一次后靠近棧頂?shù)膸讉€(gè)字發(fā)生了變化,不知為何?(4)DS:0開始數(shù)據(jù)區(qū)存放了INPUT變量為首址定義的字符串。EA=15H開始存放TAB立方值表。EA=29H存放X(當(dāng)前值為0);EA=30H存放XXX(當(dāng)前值為0)。(5)TD中顯示的第三條語句為MOVDX,0000,源操作數(shù)的值和INPUT變量的偏移地址相同(均為0)。(6)輸入數(shù)字3。AL的值從24H變成了33H。(7)MOVAX,TAB[EBX*2]在TD顯示的形式為MOVAX,[2*EBX+00000015]說明TAB代表的EA=00000015H,且是按照雙字處理的。(8)MOVXXX,AX在TD顯示的形式為MOV[002A],AX。執(zhí)行后DS:(002A)=001BH(即27)是3的立方值。8.略(留給同學(xué)們觀察后記錄。)9.略(留給同學(xué)們觀察后記錄。)八、體會(huì)通過上機(jī),不僅提高了編程水平,熟悉了工具的使用,而且加深了對(duì)一些知識(shí)的理解。首先,更加感受到實(shí)驗(yàn)前準(zhǔn)備的意義。例如:上機(jī)前準(zhǔn)備越充分(如先編好源程序,制定好準(zhǔn)備做的一些步驟),上機(jī)的時(shí)候目的越明確,可以解決較多的問題。其次,本次上機(jī)的具體收獲有:(1)錄入程序時(shí)要注意一些細(xì)節(jié),比如中文分號(hào)、字母O等問題,雖然匯編程序指出其所在行有錯(cuò),但很難發(fā)現(xiàn)具體是哪個(gè)符號(hào)錯(cuò)了,耽誤了不少時(shí)間。(2)比較清楚地認(rèn)識(shí)了源程序中的尋址方式在TD中轉(zhuǎn)換成了什么形

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論