微机程序报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档