汇编语言程序设计实验报告
统计键盘输入字符和数字个数实验报告
姓名:房皓学号:13410801班级:北信科交流生
任课教师:李济生
一、
1.
2.
3.
4.
二、实验目的学习循环程序结构,掌握编写循环处理程序的方法和技巧。通过循环结构程序熟悉汇编语言程序设计的主要方法。了解和掌握程序设计过程中算法的选择。掌握汇编语言的调试方法。实验内容
从键盘输入一系列字符(每种字符不超过9)并以回车符结束,统计出字母、数字及其它字符的个数,最后要在屏幕上显示计数结果。
三、实验程序设计思路
本程序在数据段中定义三个字节变量X,Y,Z分别存放数字、字母、及其它字符的个数。并采用:
MOVAH,1
INT21H
等待键盘循环输入,输入字符的ASCII码放在AL寄存器中。
每输入一个字符,就统计其是否为数字、字母以及其他字符,统计用比较的方法采用和分界值比较,分界值为0、9、A、Z、a、z,介于0~9的为数字,介于A~Z及a~z的为字母,其他为其他字符。若是数字,就令X加1,若是字母,就令Y加1,其他则令Z加1。最后用INT的9号功能输出提示字符,用2号功能输出X,Y,Z。
四、实验结果分析
实验运行结果截图:
测试数据:1234asdf,./;ASDF23[]
输出结果:
NUMBER:6
CHARACTER:8
OTHER:6
结果正确
实验结果分析:
本程序采用:
MOVAH,1
INT21H
等待键盘循环输入,输入字符的ASCII码放在AL寄存器中。
每输入一个字符,就统计其是否为数字、字母以及其他字符,统计用比较的方法采用和分界值比较,分界值为0、9、A、Z、a、z,介于0~9的为数字,介于A~Z及a~z的为字母,其他为其他字符。同过验证,实验结果是正确的。
五、
有:
1、
2、实验体会通过本次实验我加强了自己的上机操作能力并对理论知识有了更深一步的理解,主要在debug环境下调试程序,不能单步执行INT21H,而应用g命令跳到INT21H的下一条指令。可以用
MOVAH,1
INT21H
放入循环中从而实现循环输入,并可对每个输入的字符做判断,使程序简明易懂。
学习了循环程序结构,掌握了一定的编写循环处理程序的方法和技巧。
知道了程序设计过程的算法并不单一,需要根据具体情况选择最有效的算法,节省时间和空间。3、4、
附件:
源程序:
DATASEGMENT
XDB30H;X存放数字个数
YDB30H;Y存放字母个数
ZDB30H;Z存放其他字符
MESS1DB0DH,0AH,'NUMBER:','$'
MESS2DB0DH,0AH,'CHARACTER:','$'
MESS3DB0DH,0AH,'OTHER:','$'
DATAENDS
CODESEGMENT
ASSUMECS:CODE,DS:DATA
START:
MOVAX,DATA
MOVDS,AX
NEXT0:MOVAH,1
INT21H;输入字符
CMPAL,0DH
JZNEXT2;回车则转到NEXT2
CMPAL,30H
JBOTHER_;小于30H,其他字符
CMPAL,3AH
JLNUMBER_;大于等于30H,小于3AH,数字
JLOTHER_
CMPAL,5BH
JLCHAR_
CMPAL,61H
JLOTHER_
CMPAL,7BH
JLCHAR_
JMPOTHER_
NUMBER_:INCX
CMPX,3AH
JNENEXT0
ADDX,7
JMPNEXT0
CHAR_:INC
CMP
JNZ
ADD
JMPYY,3AHNEXT0Y,7NEXT0
Z
Z,3AH
NEXT0
Z,7
NEXT0;大于等于3AH,小于41H,其他字符;大于等于41H,小于5BH,字母;大于等于5BH,小于61H,其他字符;大于等于61H,小于7BH,字母;大于等于7BH,其他字符;字符数+1;和3AH比较;等于3AH的话,X+7->X;跳回继续输入OTHER_:INCCMPJNZADDJMP
NEXT2:MOVAH,9
MOVDX,OFFSETMESS1
INT21H;显示“NUMBER:”MOVAH,2
MOVDL,X;输入X即数字个数INT21H
MOV
MOV
INT
MOV
MOV
INTAH,9DX,OFFSETMESS221HAH,2DL,Y21H
MOVAH,9
MOVDX,OFFSETMESS3
INT21H
MOVDL,ZINT21HMOVAH,4CHINT21HENDS
ENDSTARTCODE