微机原理课程设计报告(程序)
更新时间:2024-03-19 17:32:01 阅读量: 综合文库 文档下载
微机原理课程设计报告
班级:电科1201 姓名:李建 学号:3120504023
课程设计目的
结合微型计算机原理课程的学习,进一步巩固已学的知识,同时针对微型计算机原理知识的具体应用,学会对系统中DOS和BIOS的使用。学会使用全屏幕编辑程序—PE,弄懂汇编程序的上机过程以及如何运用DEBUG软件进行汇编程序的调试。
课程设计内容
1. 字符串匹配设计
为掌握提示信息的设置方法及读取键入信息的方法。编写程序实现两个字符串比较。如相同,则显示“MATCH”,否则,显示“NO MATCH”。 程序流程图
入口 段寄存器及堆栈初始化 显示“请输入字符串1” 使用INT 21H的0AH号子功能,接收键入的字符串 显示“请输入字符串2” 指针SI指向串1的首字符 SI指向的字符和串2中所有字符做比较 相等? SI加1,指向串1中下一字符 串1中的字符取完 显示“NO MATCH” 显示“MATCH” 返回DOS
程序代码为:
DATA SEGMENT
DATA1 DB 40 DB ?
DB 40 DUP(?) DATA2 DB 40 DB ?
DB 40 DUP(?)
DISPP1 DB 'input the first line:$',0DH,0AH,'$' DISPP2 DB 'input the second line:$',0DH,0AH,'$' DISPP3 DB 0DH,0AH,'$'
DISPP4 DB 'MATCH!$',0DH,0AH,'$' DISPP5 DB 'NO MATCH!$',0DH,0AH,'$' DATA ENDS
CASE SEGMENT
ASSUME CS:CASE,DS:DATA START: MOV AX,DATA MOV DS,AX LEA DX,DISPP1 MOV AH,9 INT 21H
MOV DX,OFFSET DATA1 MOV AH,0AH INT 21H CALL ENTER LEA DX,DISPP2 MOV AH,9 INT 21H
MOV DX,OFFSET DATA2 MOV AH,0AH INT 21H CALL ENTER
MOV AL,DATA1+1 MOV AH,0
MOV BL,DATA2+1 MOV BH,0 CMP AL,BL JNZ L2
MOV CL,BL
MOV SI,OFFSET DATA1+2 MOV DI,OFFSET DATA2+2 L1: MOV DX,DS:[SI] CMP DX,DS:[DI] JNE L2
INC DI INC SI LOOP L1 MOV DX,1 JMP L3 L2: MOV DX,0 L3: CMP DX,0 JZ L4
MOV DX,OFFSET DISPP4 MOV AH,9 INT 21H JMP L5
L4: MOV DX,OFFSET DISPP5 MOV AH,9 INT 21H
L5: MOV AH,4CH INT 21H ENTER PROC
LEA DX,DISPP3 MOV AH,9 INT 21H RET ENTER ENDP CASE ENDS
END START 运行结果:
2. 字符和数据的显示设计
为掌握字符和数据的显示方法。编写程序,先显示信息:INPUT STRING,THE END FLAG IS$,再接收字符。如为0-9,则计数器加1,并显示数据;如为非数字,则直接显示,但不计数。 程序代码为:
DATA SEGMENT
DATA1 DB 40 DUP(?)
DISPP1 DB 'input string,the end flag is IS,quit with ctrl-c',0DH,0AH,'$' DISPP2 DB 0DH,0AH,'$'
DISPP3 DB 'the input string is:','$' DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV SI,00H MOV CL,0
MOV BX,OFFSET DATA1 LEA DX,DISPP1 MOV AH,9 INT 21H L1: MOV AH,1 INT 21H CMP AL,03H JZ L4
CMP AL,0DH JZ L3
MOV [BX+SI],AL INC SI
CMP AL,30H JNB kk JMP L1
kk: CMP AL,39H JNA L2 JMP L1 L2: INC CL
JMP L1 L3: LEA DX,DISPP2 MOV AH,9 INT 21H
LEA DX,DISPP3 MOV AH,9 INT 21H ADD CL,30H
MOV [BX+SI+1],CL MOV AL,0AH
MOV [BX+SI+2],AL MOV AL,'$'
MOV [BX+SI+3],AL MOV DX,BX MOV AH,9 INT 21H JMP L4
L4: MOV AH,4CH INT 21H
CODE ENDS END START 运行结果:
3. 接收年、月、日信息并显示的设计
为掌握响铃使用方法,并掌握年、月、日输入方法。编写程序,先显示“WHAT IS THE DATE(MM/DD/YY)?”并响铃一次,然后接收键盘输入的月/日/年信息,并显示。 程序流程图
程序代码为: CRLF MACRO
MOV AH,02H MOV DL,0DH INT 21H
MOV AH,02H MOV DL,0AH INT 21H ENDM
DATA SEGMENT
MESS DB 'PLEASE INPUT MONTH,DAY ,YEAR(MM/DD/YY)',0DH,0AH,'$' MESS1 DB 0DH,0AH,'MONTH ERROR,PLEASE INPUT AGAIN',0DH,0AH,'$'
MESS2 DB 0DH,0AH,'DAY ERROR,PLEASE INPUT AGAIN',0DH,0AH,'$' ERROR DB 0DH,0AH,'ERROR,PLEASE INPUT AGAIN',0DH,0AH,'$' MARK DB ? REG DW ? DATA ENDS
STACK SEGMENT STA DW 32 DUP(?) TOP DW ? STACK ENDS CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX MOV ES,AX
MOV SP,TOP HEAD: MOV MARK,0 MOV AH,09H
MOV DX,OFFSET MESS INT 21H MOV AH,02H MOV DL,07H
INT 21H CALL GETNUM CMP MARK,01H JE HEAD PUSH DX
CALL GETNUM CMP MARK,01H JNE K1 POP DX JMP HEAD K1: PUSH DX
CALL GETNUM CMP MARK,01H JNE K2 POP DX POP DX JMP HEAD
K2: MOV AX,DX
CALL DISP NOP
MOV AH,02H
MOV DL,'-' INT 21H
POP DX POP AX PUSH DX
MOV REG,AX AND AX,00FFH CMP AX,0012H JBE W1
MOV AH,09H LEA DX,MESS1 INT 21H JMP START
W1: MOV AX,REG CALL DISPP MOV AH,02H MOV DL,'-' INT 21H POP AX
MOV REG,AX AND AX,00FFH CMP AX,31H JBE W2
MOV AH,09H LEA DX,MESS2 INT 21H JMP START
W2: MOV AX,REG CALL DISPP MOV AX,4C00H INT 21H DISPP PROC NEAR MOV BL,AL MOV DL,BL MOV CL,04 ROL DL,CL AND DL,0FH CALL DISPL MOV DL,BL AND DL,0FH CALL DISPL RET
DISPP ENDP
DISPL PROC NEAR ADD DL,30H CMP DL,3AH
JB DDD ADD DL,27H
DDD: MOV AH,02H INT 21H RET
DISPL ENDP
DISP PROC NEAR PUSH BX PUSH CX PUSH DX PUSH AX MOV AL,AH CALL DISPP POP AX CALL DISPP POP DX POP CX POP BX RET DISP ENDP
GETNUM PROC NEAR PUSH CX XOR DX,DX
GGG: MOV AH,01H INT 21H CMP AL,0DH JZ PPP
CMP AL,20H JZ PPP
SUB AL,30H CMP AL,0 JB KKK CMP AL,0AH JB GETS JMP KKK
GETS: MOV CL,04 SHL DX,CL XOR AH,AH ADD DX,AX JMP GGG KKK: PUSH AX PUSH DX
MOV AH,09H
MOV DX,OFFSET ERROR
INT 21H
MOV MARK,01H POP DX POP AX PPP: PUSH DX MOV AH,02H MOV DX,07H INT 21H CRLF
POP DX POP CX
RET GETNUM ENDP CODE ENDS END START 运行结果:
4. 将键盘输入的小写字母转换成大写字母的设计
为了解小写字母的大写字母在计算机内的表示方法,并学习如何进行转换。编写程序,接收键盘字符,并将其中的小写字母转变为大写字母,然后显示在屏幕上。 程序流程图
入口 段寄存器和堆栈初始化 BX指向字符行缓冲区首址 偏移指针SI清0 INT 21H的01H号子功能接收键入字符 是—C键 是回车键 是小写字母 小写字母的ASCII码值转换为 大写字母的ASCII码值 存入字符行缓冲区[BX+SI]单元 SI+1指向下一单元 显示转换后的字符行缓冲区内容 返回DOS
程序代码为: DATA SEGMENT
T1 DB 'INPUT A STRING:','$' T2 DB 'THE RESUIT IS:','$'
D1 DB 100 DUP (?) D2 DB 100 DUP (?)
DISPP1 DB 0DH,0AH,'$' DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA START:
MOV AX,DATA MOV DS,AX
MOV DX,OFFSET T1 MOV AH,9 INT 21H LEA BX,D1 LEA SI,D2 L1: MOV AH,1 INT 21H
MOV [BX],AL INC BX
CMP AL,0DH JZ L2
CMP AL,61H JB L3
CMP AL,7AH JA L3
SUB AL,20H MOV [SI],AL INC SI JMP L4
L3: MOV [SI],AL INC SI L4: JMP L1
L2: MOV BYTE PTR [BX],'$' MOV BYTE PTR [SI],'$' LEA DX,D1 MOV AH,9 INT 21H
CALL ENTER MOV AH,9 LEA DX,T2 INT 21H LEA DX,D2 INT 21H
MOV AH,4CH INT 21H
ENTER PROC LEA DX,DISPP1 MOV AH,9 INT 21H RET
ENTER ENDP CODE ENDS END START 运行结果:
5. 学生成绩名次表设计
为进一步熟悉排序方法。编写程序,将0-100之间的10个成绩存入首地址为1000H的存储区中。1000H+i表示学号为i的学生成绩。编写程序使得在2000H开始的区域排出名次表。2000H+i为学号i的学生的名次。 程序代码为:
CRLF MACRO MOV AH,02H MOV DL,0DH INT 21H
MOV AH,02H MOV DL,0AH INT 21H ENDM
DATA SEGMENT
STUNUM EQU 10
MESS1 DB 'Please input 10 score',0DH,0AH,'$' ERROR DB 'Input error,try again',0DH,0AH,'$' MESS2 DB 'The order is:',0DH,0AH,'$' EMARK DB ? ORG 1000H SCORE DB 10 DUP(?) ORG 2000H SEQU DB 10 DUP(?) DATA ENDS
STACK SEGMENT
STA DW 12 DUP(?) TOP DW ? STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK START: MOV AX,DATA
MOV DS,AX MOV ES,AX
MOV SP,TOP MOV AH,09H MOV DX,OFFSET MESS1 INT 21H
MOV SI,OFFSET SCORE MOV CX,STUNUM
MOV EMARK,0 UUU: CALL GETNUM CMP EMARK,01H JE START MOV [SI],DL INC SI LOOP UUU MOV CX,STUNUM MOV DI,OFFSET SEQU VVV: CALL SCAN MOV AL,STUNUM SUB AL,CL INC AL
MOV BX,DX PUSH AX PUSH BX PUSH CX XOR AH,AH MOV BH,0AH DIV BH MOV CL,4 SHL AL,CL ADD AL,AH MOV DH,AL POP CX POP BX POP AX
MOV [DI+BX],DH LOOP VVV MOV AH,09H LEA DX,MESS2 INT 21H
MOV CX,STUNUM MOV SI,OFFSET SEQU WWW: MOV AL,[SI]
CALL DISPI
PUSH DX PUSH AX
MOV AH,02 MOV DL,20H INT 21H
POP AX POP DX
INC SI
LOOP WWW MOV AH,4CH INT 21H
SCAN PROC NEAR PUSH CX MOV CX,STUNUM MOV AL,00H MOV BX,OFFSET SCORE MOV SI,BX CCC: CMP AL,[SI] JAE JJJ
MOV AL,[SI] MOV DX,SI SUB DX,BX JJJ: INC SI LOOP CCC ADD BX,DX MOV BYTE PTR [BX],00H POP CX RET SCAN ENDP
DISPI PROC NEAR PUSH CX
MOV BL,AL MOV DL,BL
MOV CL,04 ROL DL,CL AND DL,0FH CALL DISPL
MOV DL,BL AND DL,0FH CALL DISPL POP CX RET DISPI ENDP
DISPL PROC NEAR
ADD DL,30H MOV AH,02H INT 21H RET
DISPL ENDP
GETNUM PROC NEAR PUSH CX
XOR DX,DX GGG: MOV AH,01H
INT 21H CMP AL,0DH JZ RRR SUB AL,30H JB ERR CMP AL,09H JBE GETS JMP ERR GETS: MOV CL,04
SHL DX,CL XOR AH,AH
ADD DX,AX JMP GGG ERR: MOV AH,09H MOV DX,OFFSET ERROR INT 21H
MOV EMARK,01H RRR: PUSH DX
CRLF POP DX POP CX
RET GETNUM ENDP CODE ENDS
END START 运行结果:
6. 从键盘输入数据并显示设计
为掌握接收键盘数据的方法,并了解将键盘数据显示时须转换为ASCII码的原理。编写程序,将键盘接收到的四位十六进制数据转换为等值的二进制数,再显示在终端上。 程序流程图
入口 段寄存器和堆栈初始化 显示“请输入十六进制数” 调用GETNUM,接收键入数值,保存在BX中 计数值16送CX BX中内容循环左移1位 BL送DL,屏蔽掉DL高7位 DL加30H,变成二进制数对应字符的SCASCII码 显示 CX减1为0? 返回DOS
程序代码为:
DATA SEGMENT
CUE DB 'PLEASE INPUT SIXTEEN DATA',0DH,0AH,'$' CHA DB 0DH,0AH,'CHANGE NUM :',0DH,0AH,'$' DATA ENDS CODE SEGMENT
ASSUME CS:CODE,DS:DATA START:MOV AX,0 MOV AX,DATA MOV DS,AX
MOV DX,OFFSET CUE ;显示输入十六进制数 MOV AH,9 INT 21H CALL SHOW MOV AH,4CH INT 21H
SHOW PROC NEAR MOV CL,4 MOV CH,4 MOV BX,0
LP1: MOV AH,01H INT 21H
SUB AL,'0' ;存放差值 CMP AL,9 JNG LP
SUB AL,7
LP: ROL BX,CL ;十六进制数存放到BX中 OR BL,AL DEC CH JNZ LP1
MOV DX,OFFSET CHA MOV AH,9 INT 21H MOV CX,16
LP2: SHL BX,1 ;二进制转化 JC LP3 MOV DL,0 JMP NEXT LP3: MOV DL,1 NEXT: ADD DL,'0' MOV AH,2 INT 21H LOOP LP2 RET
SHOW ENDP CODE ENDS END START
运行结果
课程设计心得体会
通过对这程序的制作,使我对汇编语言的基本知识的使用更加熟练,同时也增加了我对汇编语言的一些认识,在作业完成过程中通过和同学的交流,也增加了合作的技巧。通过查阅资料也学到了一些课本上没有的东西,拓宽了自己的知识面,增加了学好汇编语言的信心。
在这次课程设计中,我真正体会到了合作的重要性,遇到很多问题时,当我看书查资料不能解决时,这是去找同学讨论一下,收获很大,可以使很多问题迎刃而解,直到问题最终解决。
本程序还存在不少缺点和不足,但通过这次课程设计的却找出了自己在学习上的不足,对以后的学习也有指导作用。我相信在以后的学习中会克服这些不足,达到熟练掌握汇编语言的目的!
正在阅读:
微机原理课程设计报告(程序)03-19
英语泛读教程2-王守仁-答案04-06
区公安局长2014年述职报告(精选多篇)09-26
2019中考数学专题训练 一元一次不等式组的实际应用(含解析)12-27
第3章 电子货币与网上支付 习题答案03-29
网络道德建设02-17
深圳红树林水质调查报告04-21
湘潭大学信息工程学院2014届《C语言程序设计》期末考试题(内网上机考试题,外网是看不到,绝密!!!)10-01
第3章组建优秀的创业团队04-21
政府公共支出绩效评价的经济学分析(一)12-31
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 微机
- 原理
- 课程
- 程序
- 报告
- 设计
- 中级工程机械修理工理论题答案 - 图文
- 走向高考·高考物理总复习·人教实验版:第十章综合测试题
- 如何做个会说话的人(深度好文)
- 行动导向教学方法
- 预防医学试题
- 挑战杯大学生创业大赛策划书
- 自制美白嫩肤面膜专业知识文档
- 2015尔雅四大名著鉴赏100考试题
- 苏教版二年级上册科学全册教案含教学计划
- 建筑工程安全防护、文明施工措施项目清单及费用计算参考表
- 新沂市踢球山乡八年级数学下册第九章中心对称图形 平形四边形94
- 红外 波普分析 - 图文
- 2017小学语文四年级上册第二单元集体备课教案 - 图文
- 高一语文下学期第一次月考试卷
- 马哲论文
- 泉沟镇中心幼儿园食堂防尘
- 征文 我爱祖国我爱党
- Perl练习题
- 内蒙古农业大学及各学院简介
- 高中数学学科课堂教学设计的理论与实践虞涛- 建平中学