资源描述:
《实验4 分支结构.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验四分支结构程序设计实验一、实验目的1.掌握分支结构程序设计的基本设计方法;2.掌握条件转移指令和无条件转移指令的使用方法;3.掌握指令对标志寄存器中各标志位的影响情况;4.掌握多分支结构程序设计的三种方法:树型结构法、地址常数表法和指令常数表法。二、实验要求1.学会使用DEBUG的T命令,跟踪检查指令对标志位的影响情况;2.学会使用DEBUG中的P命令,对INT指令的跟踪方法;3.学会利用设置断点调试程序的方法;4.了解大写、小写字母及数字在计算机内的表示方法及转换方法。三、实验内容1.编写程序,已知在DATA开始的内存单元中,连续存放着三个一位十六进制数,找出其中最大数及最
2、小数,存放在指定的内存单元中。2.编写程序,从键盘输入若干个任意字符,如果是小写字母a~z之间的字符,请将它们转换成相应的大写字母,若为其它字符,则保持不变,将转换后的新字符保存在指定的存储单元中。四、解题思路1.先对DATA内存单元连续存放三个一位十六进制数。先对DATA内存单元里的前两个数据比较,较大的数据再和第三个数据比较,从而得到最大数据存到MAX内存单元里。把两次比较得到的两个较小的数据进行比较,从而得到最小数据存到MIN内存单元里。两个无符号数据比较后,用JA/JNBE、JAE/JNB/JNC/、JB/JNAE/JC和JBE/JNA来判别两数的大小关系,这些条件转移指
3、令是把进位标志CF和零标志位ZF结合起来判别的。2.先开辟20个字节的内存单元DATA用来存储输进来字符串和修改后的字符串。对字符串的输入是以‘#’为结束字符的,当字符的个数少于20时,只要输入的字符串是以‘#’结尾,就代表字符串输入结束(其中结束字符‘#’也是字符串中的一个字符存储到内存单元里)。每次输入一个字符,就对其进行判别。若输入的字符在字符‘a’到‘z’之间,那么就对其进行转换成对应的大写字母(方法把小写字母的值减去32即可),然后再存到指定的内存单元中;否则,直接把输入的字符存到指定的内存单元中去。存储结束,要对输入的字符与字符‘#’比较,若不相等,就跳到下次输入,进
4、行新的输入;否则,表示输入结束,并对内存单元里存储的字符进行输出。五、程序清单并注释及程序流程图1.源程序SSEGSEGMENTSTACK;设置堆栈段STKDB20DUP(0)SSEGENDSDSEGSEGMENTDATADB15H,0AH,05H;DATA内存单元中连续存放三个一位十六进制数MAXDB?;存最大值MINDB?;存最小值DSEGENDSCSEGSEGMENTASSUMECS:CSEG,DS:DSEGASSUMESS:SSEGSTART:MOVAX,DSEGMOVDS,AX开始MOVAX,SSEGMOVSS,AXMOVSP,SIZESTK设置数据段地址设置堆栈段地址
5、LEASI,DATA;取DATA首地址MOVAL,[SI]MOVBL,[SI+1]CMPAL,BL;比较前两个数设置堆栈指针JAEFMAX1MOVAH,AL;交换数据MOVAL,BLAL第一个数BL第二个数MOVBL,AHFMAX1:CMPAL,[SI+2];较大的与第三个数比较JAEFMIN1两个数比较大小AL-BLMOVAL,[SI+2];保存最大值JMPMOVEFMIN1:CMPBL,[SI+2];两个较小的数比较AL>=BLJAEFMIN2JMPMOVEYFMIN2:MOVBL,[SI+2];保存最小值MOVE:MOVMAX,ALNAL和BL交换MOVMIN,BLMOVA
6、H,4CHINT21HAL与第三个数比较大小CSEGENDSENDSTARTAL大?NYAL第三个数BL与第三个数比较大小2.源程序DSEGENDSCSEGSEGMENTBL大?ASSUMECS:CSEG,DS:DSEGNASSUMESS:SSEGSTART:MOVAX,DSEGMOVDS,AXYBL第三个数MOVAX,SSEGMOVSS,AXMOVSP,SIZESTKAL中的数为最大值BL中的数为最小值MAXALMINBLLEASI,DATA;取内存单元首地址INPUT:MOVAH,01H;输入字符INT21HCMPAL,'a';与‘a’比较JBFUZHICMPAL,'z';与
7、‘z’比较保存结果JAFUZHISUBAL,'a'-'A';小写转换大写FUZHI:MOV[SI],AL;存储结果结果INCSICMPAL,'#';判别是否结束JNEINPUTMOVAH,4CHINT21HCSEGENDSENDSTART开始设置数据段指针设置堆栈段指针设置堆栈指针AL输入字符AL<’a’?YNAL>’z’?NALAL-(‘a’-‘A’)Y[SI]ALSI++AL=’#’?保存结果结束六、运行结果1.第一题2.第二题