《汇编语言实验报告2分类统计字符个数(共4页).doc》由会员分享,可在线阅读,更多相关《汇编语言实验报告2分类统计字符个数(共4页).doc(4页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上汇编语言实验报告2分类统计字符个数一、实验内容:通过分支程序设计实现字母、数字及其它字符的分类统计计数。二、实验要求:程序接受用户键入的一行字符(字符个数不超过80个,该字符串用回车符结束),并按字母、数字及其它字符分类计数,然后将结果存入以letter、digit和other为名的存储单元中。输出可以用十六进制数形式。可以进一步考虑更细节的统计分类。说明:数据变量的定义,单个字符的输入、字符串的输出、结果数字的输出,都是需要考虑的问题。分类主要是数字:09,字母AZ 和az ,其它。对应的ASCII码为 30H39H, 41H5AH, 61H7AH,.1、单个字符的
2、输入,可以使用DOS中断功能01:MOV AH,01HINT 21H ; 输入符号的ASCII代码在AL寄存器中2、字符串的输出,可以使用DOS中断功能09: LEA DX, message ; message需要事先定义好,必须是以$结尾的字符串 MOV AH, 09H INT 21H3、字符串的输入,可以使用DOS中断功能0AH,但需要事先定义空间string,在数据段中有 string DB 80, ?, 80 DUP(?) LEA DX, string MOV AH, 0AH INT 21H4、计数得到的是二进制数值,在输出时要考虑转换成哪种进制形式的字符来显示。三、实验源代码如下:D
3、ATAS SEGMENT STRING1 DBPlease input a string:$ ;输入提示信息 STRING2 DBNumber of chars:$ ;各类字符提示信息 STRING3 DBNumber of digits:$ STRING4 DBNumber of others:$ CHARS DB 0 ;字母 DIGIT DB 0 ;数字 OTHERS DB 0 ;其他DATAS ENDSSTACKS SEGMENT ;此处输入堆栈段代码STACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART: MOV
4、 AX,DATAS MOV DS,AX LEA DX,STRING1 ;显示输入提示信息Please input a string MOV AH,09H INT 21H MOV CX,100 ;设置循环次数足够大 L1:MOV AH,01H ;中断调用,单字符输入 INT 21H ;输入符号的ASCII代码在AL寄存器中 CMP AL,0DH ;若输入回车符则结束 JZ OVER2 CMP AL,30H ;若39H(9),跳转进一步比较 JA HIGHER1 JMP DIGITAL ;DIGIT+ HIGHER1:CMP AL,41H ;若IF5AH(Z),跳转继续比较 JA HIGHER2
5、JMP CHAR ;ALPHAU+ HIGHER2:CMP AL,61H ;若IF7AH(z),OTHERS+ JA OTHER JMP CHAR ;ALPHAU+ JMP OVER ;比较结束 OTHER: INC OTHERS ;OTHERS+ JMP OVER ;比较结束CHAR: INC CHARS ;ALPHAL+ JMP OVER ;比较结束DIGITAL:INC DIGIT ;DIGIT+ JMP OVER ;比较结束 JMP OVER ;比较结束 OVER:NOPLOOP L1 ;循环,输入下一字符OVER2:CALL ENDLINE ;回车换行 LEA DX,STRING2
6、;字符串的输出Number of chars MOV AH,09H INT 21H XOR AX,AX MOV AL,CHARS ;将统计的数字送AX CALL DISPLAY ;调用输出两位数字的子程序 CALL ENDLINE LEA DX,STRING3 ;字符串的输出Number of digits MOV AH,09H INT 21H XOR AX,AX MOV AL,DIGIT ;将统计的数字送AX CALL DISPLAY ;调用输出两位数字的子程序 CALL ENDLINE LEA DX,STRING4 ;字符串的输出Number of others MOV AH,09H IN
7、T 21H XOR AX,AX MOV AL,OTHERS ;将统计的数字送AX CALL DISPLAY ;调用输出两位数字的子程序MOV AH,4CHINT 21H ENDLINE PROC NEAR;控制输出格式,输出回车换行子程序 MOV AH,02H MOV DL,0AH INT 21H ;输出换行符 MOV AH,02H MOV DL,0DH INT 21H ;输出回车符 RET ENDLINE ENDP DISPLAY PROC NEAR;输出两位数字的子程序(输出两位数字为十进制) MOV BL,10 DIV BL ;AX/BL,AL=商,AH余数 PUSH AX ;保存AX中的信息 MOV DL,AL ADD DL,30H MOV AH,02H INT 21H ;输出十位数 POP AX ;出栈送AX MOV DL,AH ADD DL,30H MOV AH,02H INT 21H ;输出个位数 RET DISPLAY ENDP CODES ENDS END START四、实验运行结果如下:(附截图)注:两位数为十进制专心-专注-专业