预览加载中,请您耐心等待几秒...
1/4
2/4
3/4
4/4

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

湘潭大学 实验报告 课程:80X86汇编语言程序设计 实验题目:汇编语言子程序设计 学院:信息工程学院 专业:14级计算机科学与技术二班 学号:2014551418 姓名:周宇 指导教师:匡林爱 完成日期:2016.5.4 PAGE\*MERGEFORMAT2 实验内容 编程实现一个任务,任务可分为多个子程序来实现。 实验环境 硬件环境:一台微型计算机 软件环境:Window7系统、debug环境、masm 实验代码设计 DATASSEGMENT ;此处输入数据段代码 DATASENDS STACKSSEGMENT ;此处输入堆栈段代码 STACKSENDS DSEGSEGMENT STRINGDB'AB=C1234hello5world',0;假设的字符串 DSEGENDS CSEGSEGMENT ASSUMECS:CSEG,DS:DSEG ISDECMPROC;子程序,判断一个字符是否为数字符 CMPAL,'0' JBISDECM1 CMPAL,'9'+1 CMC;把CF标识取反 ISDECM1:RET ISDECMENDP ;CODESSEGMENT ;ASSUMECS:CODES,DS:DATAS,SS:STACKS START: ;MOVAX,DATAS ;MOVDS,AX ;此处输入代码段代码 MOVAX,DSEG MOVDS,AX MOVSI,OFFSETSTRING;置取指针 MOVDI,SI;置存指针 NEXT: MOVAL,[SI] INCSI ORAL,AL;是否到字符串尾 JZOK ;是,转 CALLISDECM;否,判断是否为数字符 JNCNEXT ;是,不保存而处理下一个字符 MOV[DI],AL;否,保存 INCDI JMPNEXT;处理下一个字符 OK: MOV[DI],AL MOVAH,4CH INT21H CSEGENDS ENDSTART 该程序用来把一个字符串中的数字符去掉,其中用到了子程序ISDECM,子程序ISDECM用来判别一个字符是否为数字符。 实验结果与截图 实验结果截图如下 开始字符串为“AB=C1234hello5world” 可知最后的结果为“AB=Chelloworld” 心得体会通过这个实验,学会了汇编中子程序的设计,掌握了其中的入口参数和出口参数的传送,对汇编程序的结构更加了解,在其中用到了字符串的处理,也学到了一些对字符串处理的方法和技巧,代码的完成不是一气呵成的,其中有很多逻辑错误和没有考虑到的地方,花了写时间来找其中的bug,和高级语言相比,找bug会稍微更加麻烦,而且编写代码时需要考虑很多细节,如地址指针加一,寄存器的值要保证不会被随意的修改,这是在高级语言所没有的,编写程序的思路更加严谨。