-汇编实验报告_第1页
-汇编实验报告_第2页
-汇编实验报告_第3页
-汇编实验报告_第4页
-汇编实验报告_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、中南大学汇编实验报告实验一求Fibonacci递归数、实验目的进一步掌握子程序的设计方法,熟悉递归程序的设计、实验要求掌握递归程序的调用、返回及入口、出口参数的传递方法。、实验内容程序接收由用户键入的数N,根据名&定的N值,计算Fibonacci数Fibonacci数的定义如下:FIB(1)=1FIB(2)=1FIB(N)=FIB(N-2)+FIB(N-1)N>=3.实验环境MasmForWindows2012五.实验方法程序接收用户输入的1小于等于50的十进制正整数,存入输入缓冲区后再把它转化为十六进制数,存入内存单元N中。调用FIB函数求Fibonacci数,结果高位存在RE

2、SULT2此氐位存在RESULT2L最后调用OUTPUT数将结果以十进制的形式显示出来。程序亮点在于将结果转换为十进制时采用了除10取余的方法,对于高位通过在适当的位数加65536(ADD65536)勺方式巧妙地将乘法转化为加法。六.实验步骤1. 显示提示,并接受一个数字N;2. 调用fib递归得到结果存入内存;3. 调用显示10进制函数OUTPU。T输入数据36(十进制)输出数据14930352(10进制)正确。Leaseinputanumber<0-100>:N336490352Ppessanykeytocontinue.七.实验结论本实验使我进一步掌握子程序的设计方法,熟悉递

3、归程序的设计,丰富了我写汇编程序的经验。实验二冒泡排序算法的程序实现一、实验目的1 .掌握循环程序的设计方法;2 .了解循环结构在程序中的重要作用起泡排序程序。二、实验原理及基本技术路线图(方框原理图)循环结构分DO_WHILE和DO_UNTIL两种,无论使用哪种循环结构,循环程序一般应包括以下兀部分:1 .循环初始化。它包括设置循环次数的初始值、地址指针的初始设置等。2 .循环体。这是循环工作的主体,包括要重复执行的操作,以及循环的修改部分。修改部分包括地址指针的修改、循环控制条件的修改等。3 .循环控制部分。它是控制循环的关键,判断循环条件满足与否。特别要注意循环入口和循环次数的正确设置、

4、地址指针及循环控制条件的修改等。否则会得不到期望的结果。以下为冒泡算法的流程图:三.实验环境1 .汇编环境:MasmForWindows20122 .文本编辑器:记事本四、实验万法、步骤1 .将MASM的文件置于目录下;2 .将masm.exe和link.exe所在目录(C:assemblyMASM)添加到Path环境变量中;3 .在下新建一个bubble.asm文件,打开bubble.asm,输入汇编程序代码;4 .运行一个命令行窗口,将当前目录切换到,然后输入命令:masmbubble.asmEnter,来汇编程序,根据汇编结果查看程序代码是否有语法错误,如有,则更正保存后重新汇编,直至没

5、有错误为止,此时会生成bubble.obj文件;5 .输入命令:linkbubble.objEnter,观察输出结果,如果没有错误,则生成bubble.exe;6 .输入命令:debugbubble.exeEnter,调试程序,并记录运行过程;7 .完成实验报告。五、实验过程原始记录(数据、图表、计算等)1 .将C:assemblyMASM目录添加到Path环境变量中:-!5THGK5GSEGMENTSTACK'S'DUMDUP('ST')STACKSGENDSDATASEGMENTABVD妙5",1,4,3,CTEQUDATAENDSCODESEGM

6、ENTassumeG5二GUQE,D5MAINPROGFARMOUAK,DATAMOUDSJXMOUDI,CT-1L0P1:MOVGK,DINOUBKr0L0P2:MOUAX,ARYBX6,9,8,2二DHTR,$S:5TAGKSG图中为H韬址始内地ZJ2 .新建名为bubble.asm的文件,输入汇编程序代码:b-abl)lerass一记事本文件(1堀相色)格式。查看©帮助®程序源码:STACKSGSEGMENTSTACK'S'DW64DUP('ST')STACKSGENDS3.汇编源程序:DATASEGMENTARYDW5,7,1,4,3

7、,6,9,8,2;CTEQU($-ARY)/2;DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,MAINPROCFARMOVAX,DATAMOVDS,AXMOVDI,CT-1;LOP1:MOVCX,DI;MOVBX,0;LOP2:MOVAX,ARYBXCMPAX,ARYBX+2;JGECONT;XCHGAX,ARYBX+2;MOVARYBX,AXCONT:ADDBX,2;LOOPLOP2;DECDI;JNZLOP1;MOVAX,4C00HINT21HMAINENDPCODEENDSENDMAIN数组,流程图中为A元素个数SS:STACKSG初始化外循环次数置内

8、循环次数置地址指针两数比较次序正确转次序不正确互换位置修改地址指针内循环控制修改外循环次数外循环控制4.连接生成可执行文件:5.调试程序:(1)初始化外循环次数(DI)=0008H命令提示符_debujg:bubble.exe-|n|xHBCD:0017甘ECDMIE6BCD:01FPt33787B2B0S3C3B2XCHGMOUADDAK=0BCBBX=0060D£=0BB3E£=0BB3UfiCD:00033EDBCX=00CGDX=0000SP=HR8fiSS=0BC3CS=0BCDIP=0003MOUD£/XflX=0BCBBX=0000DS=OBCBES

9、=OBB3»ECD:00B5EF08Q0CX=00CCDX=0000SP-0000TP=0005AX=0BCBBX=006ODS0BCBE9>=DBB3r)BCD:00088BCFcx=aeccdxspaeaSS9BC3CS0BC»IP0008HOUCX,DItnBP=0QQ0SI=00Q0DI=6008NUUPEIPLHZ:NAPOHCBP=0000ST=0000DT=eQ00NUUPEIPLHZNAPONCBP=0090ST=0000DI=0000NUUPEIPLHZNAPONC(2)置内循环次数和地址指针c命令提示哥-d史bn营bubble,bh栏ldBCD:0

10、Q088BCFMOUCK,D(AX-0BCBBX-0030DS-0BCBES-0BB3FlBCD:0finA-tCX=0000s0H3NOUDX0000GP=00B0£E=AnCD_TP=»R0A|AX=BCBBX=030IDS-0BCDES-0BD3CX=0009DX=0Q00SP=0Q»0SS=0BC3CS=0BCDIP=000D|RBCD:000D8B87000RMOU叽BX+g网BP=0000SI=0000DI=000SNUUPEIPLNZNAPONCBP=0000SI=0000DI=0009NUUPEIPLNZNAPONCDS:0(3)第一趟第一次比较,

11、因为5<7,故互换位置,进行下一次比较9晒XCHGX-00B7X-0007SP-RRRRIP=0O11CBX+asas100113B87020&nx=tiid«bDS-0BCBQQCD:Q011CX=UUMBDX=MMkMES=6BB3SS=0EC3CS-BBCD3B9702(3QCMPAK口乂RX=0呻2CK=IWH7徊D£=8BCBES=QBB3£S=0BC3GS=0BCD(6)第一趟第二次比较,因为5>1,故直接更改地址指针,进行下一次比较4X(5)修改地址指针,继续内循环c命令龛示-debigbibble.c命等提示特-debugbub

12、ble,i京令提示号-debitzhrhblepta.HTirriMUUPEINCNZACPOC¥DS:6DK-AQ00CH-&G&0DH-Q&&aSr-0006SI=UHCHESSS-0:CD:001787870200TRMCH啜AK,BX*00021AM0007DK=0S0SCM-0600DMCP-000BBP-G0O0CI=0U09MG&QQD&nUHCHES吨E困SS=0BC3CS-0BCDIP=001BNUUPENCNZACPOC?0BCD:631B89870090NQUB#四目呢L朋DS;目QK=0O02CK=0B0?DK-

13、0S0Q£P-00aeBPQOOQSI-B000DI-BOSSDS=0BCBES=0DB3SS-0BC3CS刃BCDIP-0001)NUUPEIPLNZNAFONC0BCP:D00D8B87加鸵MOURX.腑叫目晚DS:0:6S0DODO?e000MOWAH,DK»B0S01SP-IMHWIP-0011UP=«UUUHI>=WUUHUUPEIPLNZNAPONCDS=e_)X0005BX-0000D&MgBCBES-0BB3MRU):阉1E7DPR-tBr=O0O0SI-0009BI0008HUUPEINCNZACPCC¥0BGD:601B

14、8987000-t.JXWUBVDS-0BCBES0BB31BCP:001F83C302-t曲DXSP-UUUUSS=0BC3/即TPKFHFADDB*.+Sl-MMUUDI=MUM8NUUPEINGNSACPOC¥BX-0002DS-0BCBE=WBBJpBCP;0022E2E9DX-000t)SP-0036SS=0BC3CS=ftBCD_IP-0S22ILOOP0B0DBP-0000SI-0000DI-0003NUUPEIPLNZNAPONCRF=H6即)RT=Rnn»DI-RHPlRNUUPEIPL阀NAPOHCDS;0lAK-B0O5BK-OB02DR=MHi:ir

15、K*=MRR30BCD:001571*0®-tCX-nnR7DX-SQSO£F-fifi8fiSS=MBC3_Tp=f|HiFJGE001FBF-eoeest-sssodi-000cHUIIPEIPLMAIHAPOHCX=00S5BX=0瓯2S-OHii£SlRCD:flRlFH3C3B2CX=0007DX=80SQSP=0080SS-0BC1_CSnCDlP-BB1FIftDDEX.+眈IBF=0000SI=0090DI=0088HUUPElPLNZ:MAPOHCCX0006DX鼠畤BC3CS=0BCDJGRmiMOUBX+HH酶/*MRCD:flnnnRB&#

16、171;7RpnfiMOJAX.rBX+HPAfll(7)第一趟第三次比较,因为1<4,故互换位置,进行下一次比较(8)第一趟第四次比较,因为1<3,故互换位置,进行下一次比较c:i命令提示符-detug:bulble.eregB015AX=0001郎=萌雕DS-0BCBES-0BB30BCD:00157DQ8rC*=的晒。需=的舶SP=00G0SS-0BC3CS-BBCDIP-0015JGE061FBP=0Q00SI=6008HJUPEINGHZACPOCYAX=0UH1明=酗随F£=0RR30BCD:001707&7920G-tCX=08晒欧=幽驰£

17、P=00fi0SR=OBClCC=BftCriTP=nH17XCHGax,rex+0062BP=0Q0QSI=6008口1=0。明NJHPEINGNZACPOCMDS:0旃-9&&C*-0B9SDX-Q306AX-00U3DS=MBCJTES=0BB3SS-0BC3CS=0BCDSF-80C0IP-001BBP-0S0OSI-B60OOI-O0S8NJUPEINGNZACPOHKD:0(91B8yB7魏晚ncuEK+照微H.HM(9)第一趟第五次比较,因为1<6,故互换位置,进行下一次比较(10)第一趟第六次比较,因为1<9,故互换位置,进行下一次比较(11)第一趟

18、第七次比较,因为1<8,故互换位置,进行下一次比较ft«-0061卫X-0OOC07G7020B赤O0OCEG=QBB271前nw-00G±1)<=MK:K9DCD:BaBP-0666SI-0000IM-0036-6080SF-0033=0ECDIP=0915001FEH=O0OCCX=0BI32DX=00腼SP=0033BP=Hfi5H£1=网断口I=3030ES=eVB3SS=9BQ3GS=GBCDIP=081BNUUF£HGHZACPECYg参股H晚HOU1藤+。8。日1>D:IDS-WBCBUDCD:Q01BCW-0032DK-

19、G680«P-00O0强加产哪思淆需忒命令提示符-lebiig:bubble.exe12)第一趟第八次比较-gR015A34=0001BM=0O0EDS=flDCBES=nHRBCD闻0157D06TCK=0001DK=0日的SP=0080SS=0RC3CS=0BCIiIP=«01!>JGEB01FBP=0000SI=000MDINUHFETNCH£育GPECi隙=皿丽CK=m蛔1nx=RARftSP=»flRnDS=WKCrES=0BB3SS=0BC_CSRRCLTRRCD:0fi17B7a7B2Hfi函邺AXJBX+RMfP1RP5日丽SI=A

20、RHHDTNUUFEINCNZACPECVIK:AX的圜2m=翻配CX=0001DK=Q0M»SP=0080DS=TmCBJES=RBR5ISS=0BC3CS=0BCIiIP=A01B0BCP:001B89870000MOVBK*0000,AXBP=0000SI=000k)D1=0随总NUHFEINCH£ACPECiPS;2d-laix0ecd:001da?a?asss-tnoufdk«aeaeiAKHX=0tlM2DS=0BCBE$=0BB3MRCT):则犯F113c3耶I-tCX=Mtn*lDX=MtlSS-BBC3CS=BBCPIP=001FADDBXR+f

21、l2BP=«tlMb81DINUUPE【NGHZACPECYAX-0002DX-0010DS=eBCBES=0BB30BCD:B»22E2E9-tCH-0001DH-0060er-0000Dr-0000G1-0690DI-0000SS=0BC3CS=BBCPIP=0022MUFE【PLHZACP0NCLOOP0ODDS=OBCEES=BBB30BCD:00244F-A0086L19QBCfi:06a0B7用词RBCB:0ei001期CWRnPRDX-nARA£P=n»RASS=0BC3CS=QBCDIP=0024DECDI距0004Q033S0-0&am

22、p;0S09600000目g0060BP=RRAARIDTNUUPEIPLNZACPONC0086000200(13)第一趟循环结束,最小数1被交换至数组的最后位置命令提示将_debugbublle.exe(14)第二趟循环结束,次小数2被交换至数组的倒数第二个位置(15)第三趟循环结束,数字3归位(16)第四趟循环结束,数字4归位(17)第五趟循环结束,数字5归位(18)第六趟循环结束,数字6归位(19)第七趟循环结束,数字7归位(20)第八趟循环结束,数字8归位(21)第九趟循环结束,数字9归位(22)排序结束,程序退出六、实验结论1. 在进行循环程序设计时,要注意循环初始化、内外层循环的

23、控制、循环结束条件等的设置,对整个程序的执行逻辑要非常清楚,这样可以避免死循环等意外情况的出现。2. 多层循环的控制更为复杂,编写代码时,要注意注释重要的循环控制部分,这样思路才不会乱。同时要对照流程图,随时观察代码的逻辑思路是否正确。3. 当要观察排序结果时,可利用D命令,显示数据段的内容,检查程序是否正常运行。分类统计字符个数一、实验目的通过编程实现字符进行分类统计。利用DOS功能调用INT21H的10(0Ah)号功能,掌握进行键盘输入字符串的方法以及数据区设置。掌握8086指令:CMP、JB、JA、SHL、INC、LEA、INT、JNZ、SCASB、LOOPE/LOOPNE等。二、实验内

24、容1、编写一个程序实现将数据段中存储在STRING处到NUM处的字符串进行分类统计,然后将结果存入以letter、digit和other为名的存储单元中。查找字符串STRING中是否有空格,如有找出第一个出现的位置(先用十六进制显示,后修改为十进制显示),否则输出N。2、修改前述1的程序,实现从键盘输入一个以回车键作为结束符的字符串(字符个数不超过80个),存入BUF中,分类统计BUF中字符串,将结果存入以letter、digit和other为名的存储单元中,屏幕输出大小写字母个数、数字个数和其它字符个数,并查找字符串BUF中是否有空格,如有找出第一个出现的位置(用十进制显示),否则输出N。(

25、对有余力的同学)实验结果:DEBUG调试并查看结果的正确性。对存储区STRING的内容“12ABCDE#!Y(78)=(1).”屏幕显示:N对存储区STRING的内容“12ABCDE#!Y(78)=(1).”屏幕显示:Place=7对第2部分,如键盘输入12ABCDE#3456789143!Y(78)=(1).回车输出结果:Letter=6Digit=15Other=9Place=9三、实验总结本次实验我花了较长的时间来完成。初略的程序花了5个多小时完成。后来遇到转换为十进制的时候就卡住了。后来在第六周周三的时候听了课以后才会做。16进制10进制和输出换第一个代码很长,有340多行代码。其实核

26、心代码不多。主要是每一次转换为以及10进制的时候,重复了相同的代码。还有换行也重复了几次。第二个代码不同的是自己输入字符。我自学了子程序。然后把转换为行设置成了子程序。精简了代码。实验四二进制转十六进制一、实验目的实现二进制到十六进制的转换。二、实验环境、内容和方法内容和方法:试编制一个程序把BX寄存器内的二进制到十六进制数的形式在屏幕上显示出来。保存文件在masmt件夹中,命名为ym01.asm进入debug系统,MicrosoftWindows2012编译文件:D:MASM>ym01InvalidkeyboardcodespecifiedMicrosoft(R)MacroAssemblerVersion5.00Copyright(C)MicrosoftCorp1981-1985,1987.Allrightsreserved.Sourcefilename.ASM:ym01.asmObject

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论