资源描述:
《微机原理上机实验 实验二》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、微机原理第二次实验实验项目名称:分支结构程序设计学号:姓名:班级:实验地点:指导教师:完成日期:一、实验目的和要求1、熟悉运算类指令对标志位的状态影响以及标志位状态的表示方法;2、掌握条件转移、无条件转移指令的使用方法;3、掌握分支程序设计、编写、调试和运行的方法。二、实验设备(环境)及要求运行汇编语言所需要在磁盘上建立的文件:EDIT.COM(编程程序)或其他编辑软件MASM.EXE(汇编程序)LINK.EXE(连接程序)DEBUG.EXE(调试程序,DOS外部命令文件)三、实验内容及步骤调试步骤1、建立汇编语言源程序(即:建立文件名.asm)2
2、、汇编目标文件(即:编译为.obj.lst.crf文件)3、编译不通过,重新修改(错误类型:源程序语句不合法)4、连接为可执行文件(即:链接为.exe或.com文件)5、运行编译好的可执行文件6、用调试工具DEBUG调试,重新修改(逻辑错误)实验内容实验一:编写程序,实现将大写字母字符串转换成小写字母字符串。设:字符串的首地址为STRING,字符串的长度在LEN单元内。实验源程序:DATASEGMENTSTRINGDB'IamaStudent'LENequ$-STRINGDATAENDSCODESEGMENTASSUMECS:CODE,DS:DAT
3、ASTART:MOVDX,SEGSTRINGMOVDS,DXMOVSI,OFFSETSTRINGMOVCX,LENL0:MOVAL,[SI]INCSICMPAL,'Z'JAEL1CMPAL,'A'JBEL1ADDAL,20HL1:MOVDL,ALMOVAH,2INT21HLOOPL0MOVAH,4CHINT21HCODEENDSENDSTART实验过程截图:编译后没有错误执行之后实现功能,把字符串中的大写字母变成了小写。实验二:从键盘输入一个字符,判断该字符是小写字母、大写字母、数字或其他字符,并给出相应的提示。调用一号中断输入字符,用九号中断输出
4、提示字符串。实验源程序:DATASEGMENTABC1DB'shiShuZi$'ABC2DB'shiDaXiezimu$'ABC3DB'shiXiaoXiezimu$'ABC4DB'shiQiTazifu$'DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVAH,1INT21HCMPAL,'0'JBL8CMPAL,'9'JBEL5CMPAL,'A'JBL8CMPAL,'Z'JBEL6CMPAL,'a'JBL8CMPAL,'z'JBEL7JMPL8L5:MOVDX,O
5、FFSETABC1JMPL9L6:MOVDX,OFFSETABC2JMPL9L7:MOVDX,OFFSETABC3JMPL9L8:MOVDX,OFFSETABC4JMPL9L9:MOVAH,9INT21HMOVAH,4CHINT21HCODEENDSENDSTART实验过程截图:编译后没有错误执行后成功实现功能,分别判断了小写字母‘a’大写字母‘Z’数字'8'和字符‘@’‘*’。四实验结果与数据处理1、第一个实验,我使用了比较语句CMP,判断字符串中的字符是否在‘A’和‘Z’之间,如果是,则把它的ASCII码值加上20H,即把大写字母转换成小写字母
6、,再调用二号中断把字符一个一个输出。在题目中输入'IamaStudent',结果输出'iamastudent'。2、第二个实验同样使用了比较语句和分支跳转语句,先调用一号中断输入一个字符进入AL寄存器。接着按照ASCII码值从小到大的顺序依次和字符‘0’‘9’‘A’‘Z’‘a’‘z’相比较,利用分支跳转语句就可以把不用类型的字符区分开,最后调用九号中断,把相对应的提示字符串在屏幕上显示出来,比如‘AshiDaXiezimu’。五分析与讨论这是第二次上机操作,让我更加熟悉了再DEBUG环境下的汇编语言操作,熟悉运算类指令对标志位的状态影响以及标志位状
7、态的表示方法;还有掌握条件转移、无条件转移指令的使用方法;以及分支程序设计、编写、调试和运行的方法。实验中遇到的问题以及解决办法:在实验一中最先遇到的问题就是怎样从一个字符串中取出一个字符,我使用MOVSI,OFFSETSTRING语句把首地址放入到SI寄存器中,在利用寄存器间接寻址把SI所对应的值送入AL寄存器中,之后SI自加一,下一次即可指向下一个字符。接着是怎么判断取出的字符是大写还是小写的问题,我想把字符分别与‘A’和‘Z’比较,先和‘A’比,ASCII码比A小,则不用再次判断,直接跳转;如果比A大,则再和‘Z’比,小于Z的ASCII,则确
8、定是大写字母,把它加上20H就可转换成为小写字母,否则不变输出。最后LOOP循环起来,就可以实现把字符串中所有大写字母变成