微机程序报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
惠州学院
电子信息与电气工程学院
程序设计报告
课程名称:微机原理与接口技术
班级:15电气2班
姓名:肖子浩1507080601232
钟智威1507080601238
指导老师:谢珩
2017.11.04
一、实验目的
熟练掌握汇编指令的使用,学会用汇编语言写程序实现简单的功能。
二、实验内容
编一程序,分别统计从内存单元TEMP处开始的连续100个字节单元中大、小写字母、数字和其他字符的个数,最后在屏幕上显示结果(假设结果不超过两位数)。扩展:键盘输入一段字符串,统计各字符个数并分类在屏幕上显示。
三、程序
DATA segment
MESS DB 0DH,0AH,'Input String: $'
UP DB 0 ;大写个数初值置0
DOW DB 0 ;小写个数初值置0
NUM DB 0 ;数字个数初值置0
ELS DB 0 ;其他字符个数初值置0
ZS DB 0 ;输入字符总数初值置0
UP_C DB 100 DUP ('$')
DOW_C DB 100 DUP ('$')
NUM_C DB 100 DUP ('$')
ELS_C DB 100 DUP ('$')
CRLF DB 0DH,0AH,'$'
DATA ENDS
code segment
assume cs:code, ds:data
MAIN PROC FAR
START:
PUSH DS
XOR AX,AX
PUSH AX
MOV AX,DATA
MOV DS,AX
MOV AH,09 ;选择09函数,显示字符串
MOV DX,OFFSET MESS ;DX = 数据的偏移地址
INT 21H ;调用21H中断
NEXT:
MOV AH,01
INT 21H
CMP AL,0DH
JNZ GOON
JMP DISP_1 ;显示结果
GOON:
INC ZS
CMP AL,'A';比较AL和A的ASCii码
JL NO_UP ;若刚才比较结果小于A的ASCii码,跳到NEXT
CMP AL,'Z';比较AL和Z的ASCii码
JG NO_UP ;若刚才比较结果大于Z的ASCii码,跳到NO_UP
INC UP ;大写字母个数+1
MOV BX,OFFSET UP_C ;BX指向空间NUM_
MOV CX,0
MOV CL,UP
ADD BX,CX ;BX指向地址后移位
DEC BX ;前移1位
MOV[BX],AL ;把AL内容存在BX指向地址下
JMP NEXT
NO_UP:
CMP AL,'a';比较AL和a的ASCii码
JL NO_DOW ;若刚才比较结果小于a的ASCii码,跳到NEXT
CMP AL,'z';比较AL和z的ASCii码
JG NO_DOW ;若刚才比较结果大于z的ASCii码,跳到NO_DOW
INC DOW ;小写字母个数+1
MOV BX,OFFSET DOW_C
MOV CX,0
MOV CL,DOW
ADD BX,CX ;BX指向地址后移位
DEC BX ;前移1位
MOV[BX],AL ;把AL内容存在BX指向地址下
JMP NEXT
NO_DOW:
CMP AL,'0';比较AL和0的ASCii码
JL NO_NUM ;若刚才比较结果小于0的ASCii码,跳到NEXT
CMP AL,'9';比较AL和9的ASCii码
JG NO_NUM ;若刚才比较结果大于9的ASCii码,跳到NO_NUM
INC NUM ;数字个数+1
MOV BX,OFFSET NUM_C ;BX指向空间NUM_C
MOV CX,0
MOV CL,NUM
ADD BX,CX ;BX指向地址后移位
DEC BX ;前移1位
MOV[BX],AL ;把AL内容存在BX指向地址下
JMP NEXT
NO_NUM:
INC ELS
MOV BX,OFFSET ELS_C
MOV CX,0
MOV CL,ELS
ADD BX,CX
DEC BX
MOV[BX],AL
JMP NEXT
DISP_1:
CALL CRLF_P
MOV AL,UP
CALL DISP_CZR
MOV AH,09
LEA DX,UP_C
INT 21H
CALL CRLF_P
MOV AL,DOW
CALL DISP_CZR
MOV AH,09
LEA DX,DOW_C
INT 21H
CALL CRLF_P
MOV AL,NUM
CALL DISP_CZR
MOV AH,09
LEA DX,NUM_C
INT 21H
CALL CRLF_P
MOV AL,ELS
CALL DISP_CZR
MOV AH,09
LEA DX,ELS_C
INT 21H
CALL CRLF_P
MOV AL,ZS
CALL DISP_CZR
CALL CRLF_P
MOV AX,4C00H
INT 21H
ENDD:
RET