华北电力大学汇编实验报告_第1页
华北电力大学汇编实验报告_第2页
华北电力大学汇编实验报告_第3页
华北电力大学汇编实验报告_第4页
华北电力大学汇编实验报告_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

华北电力大学实验报告||实验名称汇编语言程序设计实验课程名称IBM-PC汇编语言程序设计||专业班级:计科1103学生姓名:李庆贺学号:201109010307成绩:指导教师:王保义实验日期:1月华北电力大学实验报告-PAGE3-实验一用表格形式显示字符实验要求按15*16列的表格形式显示ASCⅡ码为10H—100H的所有字符,即以行为主的顺序及ASCⅡ码递增的次序依次显示对应的字符。每16个字符为一行,每行中的相邻两个字符之间用空白符隔开。设计说明显示每个字符可使用功能号为02的显示输出功能调用:Movah,02hMovdl,输出字符的ASCⅡ码Int21h将dl初始化为10H,然后使用其加1以取得下一个字符的ASCⅡ码。显示空白符是,用其ASCⅡ码置0入dl寄存器。每行结束时,用回车和换行来结束本行并开始下一行。由于逐个显示相继的ASCⅡ码字符是,需要不断修改dl寄存器的内容,而显示空白、回车、换行也需要使用dl寄存器,为此可使用堆栈保存dx。实验程序及调试结果prognamsegmentmainprocfarassumecs:prognamstart:movah,02hmovdl,10h;设置初始输出为ASCII的10hmovbl,15;输出显示为15行e:movcx,16;设置循环次数,16,表示输出显示为16列l:int21h;显示输出pushdx;推入堆栈movah,02hmovdl,0int21hmovah,02hmovdl,0int21h;显示空白符popdx;将栈顶元素推出incdl;设置下一个元素loopl;循环输出每行的16个ASCII元素pushdx;将下一行的首元素推入堆栈movah,02hmovah,09hint21h;显示messkey字符内容leadx,keyadrmovah,0ahint21h;是实现DOS调用中的0a号功能,就是在屏幕上显示keyadr字符串leadx,messsenmovah,09hint21hleadx,senadrmovah,0ahint21hmoval,senactsubal,keyactjlnmatch;长度比较,句子长度短,没有找到跳到nmatch子语句callsearchjmpshorte0;无条件跳转;以上均为DOS上让其显示这些内容nmatch:leadx,nomatchmovah,09hint21he0:retmainendp;结束searchprocnearxorcx,cx;cxqinglingmovdx,offsetsenadr;句子地址到dxadddl,senact;句子changduincdl;置长度加1得到句子最后一位movcl,keyact;关键字长度到clcld;清除方向标志leadi,secstringr0:leasi,keystringrepzcmpsb;如果si和di所指向的两个字节相等,则继续比较。所以如果相等的话,就停止循环。但是这时候si和di已经自动加1了,如果要找不相等的那两个数,就要把si和di减1。moval,byteptr[si-1]cmpal,byteptr[di-1];把那两个不相等的字节放到ptr数组中去jnznext;为0?,跳到next子语句subsi,offsetkeystring;获得操作数keystring的偏移地址movax,sicmpal,keyact;将关键字与secstring长度比较jeshowpnext:movcl,keyactcmpdi,dxjnzr0shown:leadx,nomatchmovah,09hint21h;在屏幕上显示nomatch字符串jmpshorte1showp:leadx,matchmovah,09hint21h;在屏幕上显示match字符串decdi;句子与关键字匹配最后一位的下一位,所以要见1位movbx,di;xorax,axmoval,keyactsubbx,ax;句子长度减去关键字长度movax,offsetsenadrsubbx,axcallbinihexleadx,restmovah,09hint21he1:retsearchendpbinihexprocnearmovch,4r1:movcl,4;左移4位rolbx,clmovdl,blanddl,0fhadddl,30hcmpdl,39hjledispadddl,07hdisp:movah,02hint21hdecchjnzr1retbinihexendpprognamendsendmain程序框图实验三分类统计字符个数实验要求程序接受用户键入一行字符(字符个数不超过80个,该字符串用回车符结束),并按字母、数字、其它字符分类计数,然后将结果存入以letter、digit和other为名的存储单元中。设计说明程序可采用01H功能调用把键入字符先分类计数再存入缓冲区中。程序进入debug运行并查看计数结果。实验程序DATASEGMENTPARSDB80;准备接收80个字符.NNNDB?;用于存放实际输入的个数.IIIDB80DUP(?);80字节的空间.D_NDB?C_NDB?O_NDB?MESG1DB13,10,'InputSTR:$';用于提示.MES_CDB13,10,'CharNis:$';用于提示.MES_DDB13,10,'DigitNis:$';用于提示.MES_ODB13,10,'OtherNis:$';用于提示.MES_TDB13,10,'AllNis:$';用于提示.DATAENDS;CODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVD_N,0MOVC_N,0MOVO_N,0MOVDX,OFFSETMESG1MOVAH,9;9号功能调用,显示提示.INT21HMOVDX,OFFSETPARSMOVAH,10;10号功能调用,接收键盘输入.INT21H;MOVCL,NNN;收到字符的个数.MOVCH,0CMPCX,0JNZDO_ITJMPEXITDO_IT:LEASI,III;收到字符的起始地址.;下面开始循环统计.AGAIN:MOVAL,[SI]D_num:CMPAL,':';-':'JNCN_C_B;>'9'CMPAL,'0'JCN_C_B;<'0'INCD_N;数字个数加一.JMPNEXTN_C_B:CMPAL,'[';-'['JNCN_C;>'Z'CMPAL,'A'JCN_C;<'A'INCC_N;大写,加一.JMPNEXTN_C:CMPAL,'{';-'{'JNCOTHER;>'z'CMPAL,'a'JCOTHER;<'a'INCC_N;小写,加一.JMPNEXTOTHER:INCO_N;其它.NEXT:INCSILOOPAGAIN;统计结束MOVDX,OFFSETMES_DMOVAH,9;9号功能调用,显示提示.INT21HMOVAL,D_NCALLDISP_ALMOVDX,OFFSETMES_CMOVAH,9;9号功能调用,显示提示.INT21HMOVAL,C_NCALLDISP_ALMOVDX,OFFSETMES_OMOVAH,9;9号功能调用,显示提示.INT21HMOVAL,O_NCALLDISP_ALMOVDX,OFFSETMES_TMOVAH,9;9号功能调用,显示提示.INT21HMOVAL,NNNCALLDISP_AL;显示结束.EXIT:MOVAH,4CHINT21H;============================DISP_AL:;以3位十进制数形式显示AL中的内容.MOVAH,0MOVBL,100DIVBLADDAL,30HMOVDL,ALMOVBH,AHMOVAH,2INT21HMOVAH,0MOVAL,BHMOVBL,10DIVBLADDAL,30HMOVDL,ALMOVBH,AHMOVAH,2INT21HADDBH,30HMOVDL,BHMOVAL,AHMOVAH,2INT21HRET;============================CODEENDSENDSTART使用说明程序进入后提示输入字符,可以输入任意字符,输入完成后键入回车键表示完成,则会在下一行输出实验结果。程序框图实验心得体会:这次汇编实验历时一周,但我用了3天时间完成了3个编程实验:用表格形式显示字符、查找匹配字符串、分类统计字符个数,由于期间要考试所以就没有做第四个。用表格形式显示字符和查找匹配字符串是使用了循环程序设计思想。显示字符实验较为简单,只需要一些基础知识即可完成。而查找字符串较耗费时间,这个实验主要难点就在从句子中查找关键字。查找关键字是使用的串比较指令。这个指令只能进行比较,查找就需要移动指针,将整个句子都与关键字比较一遍,才能确定是否找到了关键字。分类统计字符个数与查找电话号码较难,花费了我最多的

温馨提示

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

评论

0/150

提交评论