微机原理课程设计报告(程序)
更新时间:2024-01-02 21: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
运行结果
课程设计心得体会
通过对这程序的制作,使我对汇编语言的基本知识的使用更加熟练,同时也增加了我对汇编语言的一些认识,在作业完成过程中通过和同学的交流,也增加了合作的技巧。通过查阅资料也学到了一些课本上没有的东西,拓宽了自己的知识面,增加了学好汇编语言的信心。
在这次课程设计中,我真正体会到了合作的重要性,遇到很多问题时,当我看书查资料不能解决时,这是去找同学讨论一下,收获很大,可以使很多问题迎刃而解,直到问题最终解决。
本程序还存在不少缺点和不足,但通过这次课程设计的却找出了自己在学习上的不足,对以后的学习也有指导作用。我相信在以后的学习中会克服这些不足,达到熟练掌握汇编语言的目的!
正在阅读:
微机原理课程设计报告(程序)01-02
军事机器人12-31
大别山支教团第三届志愿者招募笔试试题12-01
科学说课稿《有趣的食物链》12-17
安妮海瑟薇奥斯卡的英文获奖感言02-16
市场调查的目的和要求07-04
沪科版14.1 电阻和滑动变阻器(第一课时 电阻)05-17
微生物菌落特征形态总结大全(带图片)11-09
江苏计算机考试三级偏软历年真题07-01
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 微机
- 原理
- 课程
- 程序
- 报告
- 设计
- 新人美版四年级上册美术教案
- 工作计划之制定学习计划表格
- 英语写作万能范文模板
- 预防医学试题
- 如何做个会说话的人(深度好文)
- 瑞利勋爵对现代声学基础理论的开创性贡献
- C语言实验报告模板
- 挑战杯大学生创业大赛策划书
- 政治会考知识点 政治
- 南京市城市设计导则
- 2015年考研英语模拟试题
- 有害化学物质含量规定
- 中级工程机械修理工理论题答案 - 图文
- 2014年皋兰县人民医院抗菌药物临床合理应用工作情况汇报
- 办公自动化环境下医院档案管理探讨
- 2014年教学工作总结
- 2017小学语文四年级上册第二单元集体备课教案 - 图文
- 村“两委”换届选举工作电视访谈提纲
- 2014新目标英语八下U-1 阅读资料 第83届奥斯卡最佳歌曲提名之If I Rise
- 马哲论文