汇编语言实验报告2分类统计字符个数_第1页
汇编语言实验报告2分类统计字符个数_第2页
汇编语言实验报告2分类统计字符个数_第3页
汇编语言实验报告2分类统计字符个数_第4页
全文预览已结束

下载本文档

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

文档简介

汇编语言实验报告2分类统计字符个数一、实验内容:通过分支程序设计实现字母、数字及其它字符的分类统计计数。二、实验要求:程序接受用户键入的一行字符(字符个数不超过80个,该字符串用回车符结束),并按字母、数字及其它字符分类计数,然后将结果存入以letter、digit和other为名的存储单元中。输出可以用十六进制数形式。可以进一步考虑更细节的统计分类。说明:数据变量的定义,单个字符的输入、字符串的输出、结果数字的输出,都是需要考虑的问题。分类主要是数字:09,字母AZ 和az ,其它。对应的ASCII码为 30H39H, 41H5AH, 61H7AH,.1、单个字符的输入,可以使用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、计数得到的是二进制数值,在输出时要考虑转换成哪种进制形式的字符来显示。三、实验源代码如下:DATAS 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 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 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 ;字符串的输出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 INT 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 ;出栈

温馨提示

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

评论

0/150

提交评论