资源预览内容
第1页 / 共6页
第2页 / 共6页
第3页 / 共6页
第4页 / 共6页
第5页 / 共6页
第6页 / 共6页
亲,该文档总共6页全部预览完了,如果喜欢就下载吧!
资源描述
实验六 分支及循环程序设计一、 实验目的1、 1、学习提示信息的显示及键盘输入字符的方法。2、 2、掌握分支程序和循环程序的设计方法。二、 实验预习要求1、 1、复习比较指令、转移指令、循环指令的用法。2、根据编程提示,编出汇编语言源程序。3、有兴趣的同学请编写出实验习题中的程序。三、 分支程序和循环程序简介1、 分支程序是根据不同条件执行不同处理过程的程序。分支程序的结构有两种:种是二分支,种是多分支。它们的共同特点是在满足某一条件时,将执行多个分支中的某分支。2、 循环程序四、 实验内容在屏幕上显示提示信息“Please input 10 numbers:”,提示用户输入10个数(数的范围在099之间),然后从键盘上读入这10个数。接着对这10个数从小到大进行排序,并统计059、6079、8099的数各有多少。最后在屏幕上显示排序后的数(每个数之间用逗号分隔)并显示统计的结果。显示格式如下:Sorted numbers: xx,xx,xx,xx,xx,xx,xx,xx,xx,xx0-59: xx60-79: xx80-99: xx代码:CALLDOS MACRO FUNCTION MOV AH,FUNCTION INT 21H ENDM CRLF MACRO MOV DL,0DH CALLDOS 2 MOV DL,0AH CALLDOS 2ENDM DATA SEGMENT MESSAGE DB Please input 10 number:,0DH,0AH,$NUMBERS DB 10 DUP(?) KB_BUF DB 3 ACTLEN DB ? BUFFER DB 3 DUP(?) ;输入的字符放在次区域中LE59 DB 0 ;05的个数GE60 DB 0 ;6079的个数GE80 DB 0 ;8099的个数SORTSTR DB Sorted numbersSORTNUM DB 9 DUP(20H,20H,),20H,20H,0DH,0AHMESS00 DB 0-59:,30H,30H,0DH,0AHMESS60 DB 60-79:,30H,30H,0DH,0AHMESS80 DB 80-99:,30H,30H,0DH,0AH,$DATA ENDS ;数据段结束CODE SEGMENT ;定义代码段 ASSUME CS:CODE,DS:DATA,ES:DATASTART:MOV AX,DATA MOV DS,AX MOV ES,AXLEA DX,MESSAGEMOV AH,09HINT 21H ;显示MESSAGE;从键盘读入数据并转化成二进制数保存MOV CX,10LEA DI,NUMBERS ;设置数据保存区指针LP11:LEA DX,KB_BUF MOV AH,0AH INT 21H ;从键盘读入数据 CMP ACTLEN,0 JZ LP11 CMP ACTLEN,1 JNZ LP12 MOV AL,BUFFER ;若只有一个数字 AND AL,0FH ; 转化成二进制 JMP LP13LP12:MOV AH,BUFFER ;若有二个数字 MOV AL,BUFFER+1 AND AX,0F0FH ; 转化成BCD数 AAD ; 转化成二进制数LP13:STOSB ; 保存数据 CRLFLOOP LP11 MOV BL,9 LP21:LEA SI,NUMBERS MOV CL,BL LP22:LODSB ; ?第一个数Ni CMP AL,SI ; Ni=Nj? JLE LP23 ; 若小于等于则不交换 XCHG AL,SI ; 否则交换Ni,Nj MOV SI-1,AL LP23:DEC CL JNZ LP22 ;若内循环未结束则继续 DEC BL JNZ LP21 ;若外循环未结束则继续;对NUMBERS中的10个数据进行统计,结果放在GE80,GE60和LE59中LEA SI,NUMBERS ;指向数据保存区MOV CX,10LP31:CMP BYTE PTRSI,60JGE LP32INC LE59JMP LP34LP32:CMP BYTE PTRSI,80JGE LP33INC GE60JMP LP34LP33:INC GE80LP34:INC SILOOP LP31;把排序后的10个数据转换成ASCII码依次存入SORTNUM字符中串中LEA SI,NUMBERS ; 指向数据保存区LEA DI,SORTNUM ; 指向字符串MOV CX,10LP41:LODSBCMP AL,10 ; 大于10,则有二位数字JGE LP42ADD AL,30H ; 只有一位数字则直接转换MOV AH,20H ; 高位显示成空格JMP LP43LP42:AAM ; 转化成二位BCD数ADD AX,3030H ;转化成ASCII码LP43:XCHG AH,AL ; 十位数放到AL中MOV DI,AXADD DI,3LOOP LP41;把统计结果转化成ASCII码存入MESS80,MESS60,MESS00字符串中MOV AH,LE59CMP AH,10 ;大于10,则有二位数字JGE LP51ADD AH,30H ; 只有一位数字则直接转换MOV AL,20H ;高位显示成空格JMP LP52LP51:MOV AX,3031HLP52:MOV WORD PTR MESS00+6,AXMOV AH,GE60CMP AH,10 ; 大于10,则有二位数字JGE LP53ADD AH,30H ;只有一位数字则直接转换MOV AL,20H ;高位显示成空格JMP LP54LP53:MOV AX,3031HLP54:MOV WORD PTR MESS60+6,AXMOV AH,GE80CMP AH,10 ;大于10,则有二位数字JGE LP55ADD AH,30H ;只有一位数字则直接转换MOV AL,20H ; 高位显示成空格JMP LP56LP55:MOV AX,3031HLP56:MOV WORD PTR MESS80+6,AX;;显示排序后的数据和统计结果LEA DX,SORTSTRCALLDOS 9CALLDOS 1CALLDOS 4CH ;返回DOSCODE ENDS ;代码段结束END START ;程序结束五、 实验习题1 从键盘输入任意一个字符串,统计其中不同字符出现的次数(不分大小写),并把结果显示在屏幕上。2 从键盘分别输入两个字符串,若第二个字符串包含在第一个字符串中则显示MATCH,否则显示NO MATCH。六、 实验报告要求1 整理出完整的实验程序。2 总结一下编制分支程序和循环程序的要点。3 (选做)在实验习题1和实验习题2中任选一个,编写程序并上机验证。
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号