实验3分支程序实验_第1页
实验3分支程序实验_第2页
实验3分支程序实验_第3页
实验3分支程序实验_第4页
实验3分支程序实验_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

..大学实验报告学生:学号:专业班级:实验类型:□验证□综合eq\o\ac(□,√)设计□创新实验日期:实验成绩:实验3分支程序实验一.实验目的掌握单分支、双分支、多分支程序的设计方法;掌握利用DEBUG或CODEVIEW修改参数、检查结果的方法;熟悉汇编语言源程序的编辑、汇编、连接及调试过程。二.实验容1.猜数程序,预设一数字字符M,从键盘输入一个数字字符N,判断:假设N<M,显示"TOOBIG〞;假设N>M那么显示"TOOSMALL〞;否那么显示"YOURARERIGHT〞datasegment Mdb‘6’ Ndb" mesg1db0dh,0ah,’toosmall$’ mesg2db0dh,0ah,’toobig$’ mesg3db0dh,0ah,’youareright$’dataendscodesegment assumeds:data,cs:codestart:movax,data movds,ax movah,01h int21h movN,al cmpal,1bh;如果输入是esc键就退出 jmpexit cmpal,M small;比M小就跳去small jabig;比M大就跳去big movdx,offsetmesg3;显示正确 movah,09h int21h jmpstartsmall: movdx,offsetmesg1;显示太小字符串 movah,09h int21h jmpstartbig: movdx,offsetmesg2;显示太大字符串 movah,09h int21h jmpstartexit: movah,4ch int21hcodeends endstart输入3显示toosmall,输入9显示toobig编写一个程序,判别键盘上输入的字符;假设是1-9字符,那么显示"ITISADIGITAL〞;假设为A-Z或a-z字符,均显示"ITISALOWCASELETTER〞;假设是回车字符<CR>(其ASCII码为0DH),那么完毕程序,假设为其它字符那么不显示,继续等待新的字符输入。datasegment Ndb" mesg1db0dh,0ah,'itisadigital$' mesg2db0dh,0ah,'itisalowcaseletter$'dataendscodesegment assumeds:data,cs:codestart: movax,data movds,ax movah,01h int21h movN,al cmpal,0dh;如果输入为回车那么退出 jeexit cmpal,31h start;比1小就重新再来 cmpal,39h jalet;比9大就跟字母比拟 movdx,offsetmesg1;输出是数字 movah,09h int21h jmpstartlet: cmpal,'A' start;比A小就重新再来 cmpal,'Z' display;比Z大就输出 cmpal,'a' start;比a小就重新再来 cmpal,'z' jastart;比z大就重新再来display: movdx,offsetmesg2;输出是字母 movah,09h int21h jmpstartexit: movah,4ch int21hcodeends endstart预留字符串口令,输入口令串与预留密码串比拟。假设匹配那么显示"MATCH〞,否那么显示"NOMATCH!,PROGRAMTERMINATED!〞datasegment mesg1db0dh,0ah,'match$' mesg2db0dh,0ah,'nomatch!,programterminated!$' mesg3db'hello$'dataendscodesegment assumeds:data,cs:codestart: movax,data movds,ax movbx,0 movcl,0 movch,0;cl和ch都清零input: movah,01h int21h;输入字符 inccl;计算输入字符数 cmpal,0dh jeguide;输入是回车就跳进判断语句 cmpcl,1;cl是1的时候,bx是0 jepare incbxpare: cmpal,mesg3[bx] jeinput;如果输入相等那么继续比拟 incch;存放输入不同的字符个数 jmpinputguide: cmpcl,01h;什么也没输入就退出 jeexit cmpcl,6;输入字符数与预设不同那么不符合 jneno cmpch,0;输入字符数不同的个数为0那么符合 jneno movdx,offsetmesg1 movah,09h int21h jmpstartno: leadx,mesg2 movah,09h int21h jmpstart exit: movah,4ch int21hcodeends endstart输入hello显示match,输入αMαM显示nomatch上述程序1、2、3分别完成后请编写一个程序来实现简单的程序菜单显示。〔采用地址跳跃表法实现〕显示一个菜单要求用户从下表中选择:GUESSNUMBERGAME〔对应-->程序1〕CHARSELECTIONPROGRAM〔对应-->程序2〕PASSWORDPROGRAM〔对应-->程序3〕PRESS"ESC〞TOQUIT用户作出选择1~3时,显示输出要执行操作的名字,如"Yourselectionis1,theprogramwillexecuteGUESSNUMBERGAME!〞然后转向相应的程序去执行,执行完毕前进展退出的判断,显示一个提示信息"willyoucontinueprogramreally?(Y:N)〞要求用户从键盘键入字符,假设是"Y〞键,那么继续程序的执行,假设是"N〞键,那么返回到菜单。假设用户选择4,要求程序显示提示信息"PleasepressESCkeytoexit!〞,并能按要求正确退出。datasegment adrdwadr1;定义地址表 dwadr2 dwadr3 dwadr4 menudb0dh,0ah,'menu:';定义目录 db0dh,0ah,'(1)guessnumbergame' db0dh,0ah,'(2)charselectionprogram' db0dh,0ah,'(3)passwordprogram' db0dh,0ah,'(4)press"esc"toquit$' ase1db0dh,0ah,'yourselectionis1,theprogramwillexecuteguessnumbergame!$',0dh,0ah ase2db0dh,0ah,'yourselectionis2,theprogramwillexecutecharselectiongprogram!$',0dh,0ah ase3db0dh,0ah,'yourselectionis3,theprogramwillexecutepasswordprogram!$',0dh,0ah str1db0dh,0ah,'willyoucontinueprogramreally"(Y:N)$' str2db0dh,0ah,'pleasepressesckeytoexit!$' str3db0dh,0ah,'pleaseinputnumberbetween1to9$' guess1db0dh,0ah,'toobig$' guess2db0dh,0ah,'toosmall$' guess3db0dh,0ah,'youareright$' Mdb'6' Ndb" char1db0dh,0ah,'itisadigital$' char2db0dh,0ah,'itisalowcaseletter$' code1db0dh,0ah,'match$' code2db0dh,0ah,'nomatch!programterminated!$' code3db'hello$'dataendscodesegment assumeds:data,cs:codestart: movax,data movds,ax movsi,0 movbx,0 leasi,adr;把地址表首地址给si movdx,offsetmenu;显示主菜单 movah,09h int21h movdl,0dh;换行 movah,2 int21h movdl,0ah;回车 movah,2 int21h movah,1;输入选项 int21h cmpal,0dh;输入是回车就退出 jeL1 movah,0;ah置零 subal,31h shlax,1 addsi,ax jmpadr[si];地址跳跃表法adr1: leadx,ase1 movah,9 int21h;提示选中1语句 leadx,str3 movah,9 int21h movdl,0dh movah,2 int21h movdl,0ah movah,2 int21h;回车换行 movah,01h int21h movN,al cmpal,M small;比M小就跳去small jabig;比M大就跳去big movdx,offsetguess3;显示正确 movah,09h int21he1: leadx,str1;判断是否回主菜单 movah,9 int21h movah,1 int21h cmpal,'Y' jeadr1 jmpstartsmall: movdx,offsetguess2;显示太小字符串 movah,09h int21h jmpe1big: movdx,offsetguess1;显示太大字符串 movah,09h int21h jmpe1L1: jmpadr4;跳跃jump接力adr2: leadx,ase2;提示选中2语句 movah,9 int21h movdl,0dh movah,2 int21h movdl,0ah movah,2 int21h ;回车换行 movah,01h int21h movN,al cmpal,31h adr2;比1小就重新再来 cmpal,39h jalet;比9大就跟字母比拟 movdx,offsetchar1;输出是数字 movah,09h int21he2: leadx,str1;判断是否回主菜单 movah,9 int21h movah,1 int21h cmpal,'Y' jeadr2 jmpstartlet: cmpal,'A' adr2;比A小就重新再来 cmpal,'Z' display;比Z大就输出 cmpal,'a' adr2;比a小就重新再来 cmpal,'z' jaadr2;比z大就重新再来display: movdx,offsetchar2 movah,09h int21h jmpe2adr3: leadx,ase3;提示选中3语句 movah,9 int21h movdl,0dh movah,2 int21h movdl,0ah movah,2 int21h;回车换行 movbx,0 movcl,0 movch,0;cl和ch都清零input: movah,01h int21h;输入字符 inccl;计算输入字符数 cmpal,0dh jeguide;输入是回车就跳进判断语句 cmpcl,1;cl是1的时候,bx是0 jepare incbxpare: cmpal,code3[bx] jeinput;如果输入相等那么继续比拟 incch;存放输入不同的字符个数 jmpinputguide: cmpcl,6;输入字符数与预设不同那么不符合 jneno cmpch,0;输入字符数不同的个数为0那么符合 jneno movdx,offsetcode1 movah,09h int21h leadx,str1;判断是否回主菜单 movah,9 int21h movah,1 int21h cmpal,'Y' jeadr3 jmpstartno: leadx,code2 movah,09h int21h leadx,str1;判断是否回主菜单 movah,9 int21h movah,1 int21h cmpal,'Y' jeadr3 jmpstart adr4: leadx,str2;提示选中4语句 movah,9 int21h movah,1 int21h cmpal,1bh jneadr4;判断输入是否是ESC键 movah,4ch int21h ;退出codeends endstart三.实验要求1.编写实验容要求的四个程序;2.熟悉源程序汇编、连接命令的使用方法。3.认真完成上述习题,采用DEBUG或CODEVIEW进展调试,编辑实验方案,运行程序,并调试程序,写出正确结果以及遇到的问题和解决

温馨提示

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

评论

0/150

提交评论