8086 匯編語言子程序程序設計_第1頁
8086 匯編語言子程序程序設計_第2頁
8086 匯編語言子程序程序設計_第3頁
8086 匯編語言子程序程序設計_第4頁
8086 匯編語言子程序程序設計_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、匯編語言程序設計實驗報告姓名學號實驗組實驗時間指導教師肖敏成績實驗項目名稱實驗五:8086匯編語言子程序程序設計實驗目的熟悉子程序的設計方法實驗原理對匯編源程序進行匯編、鏈接,在Debug環(huán)境下完成調試與運行。實驗內容1、熟悉子程序的結構及注意事項2、掌握子程序的設計、調試方法實驗環(huán)境1、硬件:微型計算機1臺2、軟件:MASM軟件實驗步驟實驗一、使用子程序設計編程實現求數組ARY兀素之與:編輯下面的源程序到文件lab5、asm中:CODESEGMENTORG100HASSUMECS:CODE,DS:CODE,SS:CODEMAINPROCFARMOVAX,CODEMOVDS,AXMOVTABL

2、EOFFSETARYMOVTABLE+2,OFFSETCOUNTMOVTABLE+4,OFFSETSUMMOVBX,OFFSETTABLECALLPROADD班級:計科131學院:計算機科學與技術專業(yè):計算機科學與技術MOVAX,4C00HINT21HMAINENDPPROADDPROCNEARPUSHAXPUSHCXPUSHSIPUSHDIMOVSI,BXMOVDI,BX+2MOVCX,DIMOVDI,BX+4XORAX,AXNEXT:ADDAX,SIADDSI,2LOOPNEXTMOVDI,AXPOPDIPOPSIPOPCXPOPAXRETPROADDENDPARYDW1,2,3,4,5,

3、6,7,8,9,10COUNTDW10SUMDW?TABLEDW3DUP(?)CODEENDSENDMAIN使用相應的文本編輯器建立文件LAB5、asm,內容如上所示。二、生成可執(zhí)行文件:1、匯編:C:masmmasmlab5;2、連接:C:masmlinklab5;SB善理員:命令提示符tjzzLI)二Snasni50nlab5rllcioDftzCRMa.ciOAs:aeinbleBInnE.0I3Copyright:COMicrosoftCorp198丄一丄9對且尸1987=A11IightsIeserwedObjiectfilenctrnclab5.OBJ=listingrNIJL.L

4、ST:Ciossi*eFei*eneeCNUL_CRF1-50348+415492Bytesssrmbo1spa.eefrec0Warnn日Eiiois0SgvepcEirovsI):Smasni50linklctb5Microsoft:CROueilayLinkevUevsion3B63GopyrigrlitMicrosoftCovp198319H?ALIrightsreserved.pmFileLABS;_E34E=ListFile:NUL.MAP:LibrariesL.LIBLINI(:n:grL4021:nostzadise:grnicnt三、請寫出此程序中的變量ary,count,s

5、um的EA,并判斷此程序的功能:四、用debug調試此程序時,第一條指令的段內EA就是多少?此程序數據段內偏移地址為0的字單元數據為多少?其對應的機器指令就是什么?L;加載程序文件lab5、exeR;查瞧IP與CS寄存器的內容DDS:0;查瞧當前數據段內偏移地址為0的字單元數據U;查瞧機器指令D:Masra50debuglabSTexe-I_RRH=0O00DK=0O0OCy=015EDH=0eOGSP=O0OOl)SUH?SSU12CSU12IP01OH1412:0100-nns:D:Masra50debuglabSTexe-I_RRH=0O00DK=0O0OCy=015EDH=0eOGSP

6、=O0OOl)SUH?SSU12CSU12IP01OH1412:0100-nns:ftBP=O0O0SI=OOG0DI=0OG0NVUPFlPIIVNHPOM;1402:0060cu2U11糾1tID牝汕U02:R019fin盯17們nrFi0D-01的FFFFFFi卜卜卜1卜1卜Pl-一1卜卜卜1卜131402:0030050E1/,GO1800021/,rrrr900000001JLQ2:S99【止朋朋期0H朋期-朋刖闇wo期0H朋朋1402:0050CD21CEG00000000G600000600020291:曲血加列州旳旳舛加-仙加仙旳U02:00/3202032U200000B81

7、214HOVAH.1U21412:6160B8121iMUVflM.14121412:01038ED8HOVDS:AMC70658B140B1MOVWORDPTRB158,0U81412:0100C7fl65fifll5t01HOVWORDPTRO15A1:O151412:0111MOMMOROPTR16150,01561412:6117BB5801MUVBM.0158iminE88500CAIIfti2:eiiDMOV-U實驗二:編寫一個子程序,實現在屏幕的指定位置,用指定顏色,顯示一個用0結尾的字符串源程序如下datasegmentstrdbdisplaystring,0dataendsc

8、odesegmentassumecs:code,ds:datastart:movax,datamovds,axmovdh,8movdl,21movcl,3movsi,offsetstrcallshow_strmovax,4c00hint21hshow_strprocnearpushaxpushcxpushdxpushespushsipushdimovax,0b800hmoves,axdecdhmoval,160muldhadddl,dlmovdh,0;計算顯示在屏幕位置addax,dxmovdi,axmovah,clx:movcl,ds:simovch,0jcxzfmoval,clmoves:

9、di,axincsiincdiincdijmpxf:popdipopsipopespopdxpopcxpopaxretshow_strendpcodeendsendstart實驗三:編寫一個子程序,實現將word型數據以十進制形式顯示出來源程序如下:assumecs:codedatasegmentdb10dup(O)dataendsstacksegmentdb16dup(0)stackendscodesegmentstart:movax,datamovds,axmovax,stackmovss,axmovsp,16movdx,0c1hmovax,76f3hmovsi,0calldwtocmov

10、dh,8movdl,3movcl,2callshow_strmovah,Olhint21hmovax,4c00hint21h;子程序:dwtoe;功能:將dword型數據轉變成表示十進制的字符串,字符串以0結尾;參數:(ax)=dword型數據的低16位;(dx)=dword型數據的高16位;ds:si指向字符串首地址;返回:無dwtoc:movcx,0pushcxs_dwtoe:movcx,10;除數calldivdw;余數在ex中addcx,30hpushcx;保存余數的ASCII形式;判斷就是否商為0,如果高低16位都為0,則返回movcx,dxjcxzok_dxz;;高位不為0,則直接

11、跳回,繼續(xù)執(zhí)行運算jmpshorts_dwtoe;商的高位為0ok_dxz:movcx,axjcxzok_axzjmpshorts_dwtoe;商的低位為0ok_axz:;賦值到ds:simovdx,si;保存si,si為字符串的首地址loop_dtoe:popcxmovds:si,cljcxzend_dwtoeincsijmpshortloop_dtoemovsi,dxend_dwtoe:movsi,dxretdtoc:;先把一個0放進堆棧,在后面s2從堆棧中取出的時候,可以根據ex為0跳轉movex,0pushcxs1_dtoe:movdx,0movex,10divexmovex,dx;d

12、x余數addex,30hpushex;保存在堆棧movex,ax;ax為商,當商為0的時候,各位的值就已經得到了,就可以跳出循環(huán)jexzokl_dtoejmpshorts1_dtoeok1_dtoe:moveh,0s2_dtoe:;從堆棧中取出popexjexzok2_dtoemovds:si,elinesijmpshorts2_dtoeok2_dtoe:retshow_str:pushaxpushbxpushexpushdxpushespushsi;計算好字串開始顯示的地址Y=160*(行數-1)+列數*2-2,B800:Y;循環(huán)將參數里的字串寫進顯卡內存,并檢測到0就返回;bx=160*(

13、行數-1)TOC o 1-5 h zmovbh,dhsubbh,1moval,160mulbhmovsi,ax;si為根據行數算出來的偏移值;ax=列數*2-2movbl,dlmoval,2mulblsubax,2;根據列數算出來的偏移值addsi,ax;行數與列數的與存在SI中了movax,0b800hmoves,axmovbx,si;將si的值保存在bx中,bx為顯存顯示偏移值movsi,0;題目要求。movdl,el;保存字體顏色屬性moveh,0Smovel,ds:simoves:bx,eljcxzokmoves:bx+l,dlincsiaddbx,2jmpshortsok:popsi

14、popespopdxpopcxpopbxpopaxret;子程序:divdw;要求:進行不會除法溢出的除法運算,被除數為dword,除數為word,結果為dword;參數:(ax)=被除數dword型的低16位;(dx)=被除數dword型的高16位;(cx)=除數;返回:(dx)=結果的高16位;(ax)=結果的低16位;(cx)=余數divdw:movbx,ax;緩存ax被除數的低16位movax,dx;ax=H,被除數的高16位movdx,0divcx;ax為商,dx為余數二rem(H/N)*65536pushax;結果的商,也就就是最后要放在dx中的movax,bx;dx為rem(H/

15、N)*65536,為高16位,ax為低16位,再進行一次除法運算divcx;ax為商最后結果的低16位,dx為余數為最后結果,應賦給cxmovcx,dxpopdxretcodeendsendstart實驗一:變量ary,count,sum的EA分別就是00140,00154,00156此程序的功能就是數列求與mycocrleicorn.syrnbol-g11塢刪(曰貳旦mwMAINCODEQO1QO1FAKFROADDCODEQO1ZENEARNEXTCODE00132-1LABELARYCODE001402VARCOUNTCODE001542VARSUM2VARCODETABLECODE001582VARi實驗二:實驗三:這

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論