




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、微机原理课程设计设计报告一、设计目的1、对微机原理课程中所学的理论知识进行进一步巩固和加深。2、学会查阅相关手册与资料,培养独立分析与解决问题的能力。3、学会使用屏幕编辑程序MASM 对汇编程序的编写,调试和运行。4、了解对系统中 DOS 和 BIOS 的使用,弄懂汇编程序的上机过程以及如何运用 DEBUG 软件进行汇编程序的调试。二、设计内容本次为期一周的课程设计,主要编写调试了 5 个程序,题目如下:1、字符串匹配设计为掌握提示信息的设置方法及读取键入信息的方法。编写程序实现两个字符串比较。如相同,则显示“MATCH” ,否则,则显示“NO MATCH” 。2、从键盘上输出数据并显示 为掌
2、握接收键盘数据的方法,并了解将键盘数据显示时须转换为 ASCII 码的原理。编写程序,将键盘接收到的四位十六进制数据转换为等值的二进制数,再显示在终端上。 3、字符和数据的显示设计为掌握字符和数据的显示方法,编写程序,先显示信息:INPUT STRING,THE END FLAG IS$,再接收字符。如为 0-9,则计数器加 1,并显示数据;如为非数字,则直接显示,但不计数 4、学生成绩名次表设计 为进一步熟悉排序方法。编写程序,将 0-100 之间的 30 个成绩存入首址为1000H 的存储区中。1000H+i 表示学号为 i 的学生成绩。编写程序使得在 2000H开始的区域排除名次表。20
3、00H+i 为学号 i 的学生的名次。三、具体设计程序设计一:字符串匹配设计程序设计一:字符串匹配设计为掌握提示信息的设置方法及读取键入信息的方法。编写程序实现两个字符串比较。如相同,则显示“MATCH” ,否则,则显示“NO MATCH” 。流程图流程图段寄存器及堆栈初始化显示“input string1:”使用 INT 21H 的 0AH 号子功能,接收输入的字符串显示“input string2:”使用 INT 21H 的 0AH 号子功能,接收输入的字符串指针 SI 指向串 1 的首字符指针 DI 指向串 2 的首字符用 repz cmpsb 指令判断相 等?显示“MATCH”显示“N
4、O MATCH”NY返回 DOS程序程序DATA SEGMENTDAT1 DB INPUT STRING1:,$ ;$保持当前地址DAT2 DB INPUT STRING2:,$DAT3 DB MATCH!,0AH,0DH,$ ;0DH 为回车 ASCII 码,0AH 为换行 ASCII 码DAT4 DB NOT MATCH!,0AH,0DH,$STRING1 DB 50 ;最长长度 DB ? ;实际长度 DB 50 DUP(?) ;存储空间STRING2 DB 50 DB ? DB 50 DUP(?)DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,E
5、S:DATASTART: MOV AX,DATA ;数据段设置 MOV DS,AX MOV ES,AX MOV AH,09H ;字符串显示,显示DAT1,显示 DS:DX MOV DX,OFFSET DAT1 INT 21H MOV AH,0AH ;字符串缓冲输入,接收输入字符串 MOV DX,OFFSET STRING1 INT 21H MOV DL,0AH ;输出换行 MOV AH,02H INT 21H MOV AH,09H MOV DX,OFFSET DAT2 ;显示 DAT2 INT 21H MOV AH,0AH MOV DX,OFFSET STRING2 INT 21H MOV D
6、L,0AH ;输出换行 MOV AH,02H INT 21H LEA SI,STRING1 ;比较 LEA DI,STRING2 ADD SI,2 ;串 1 首字符SI+2 ADD DI,2 ;串 2 首字符DI+2 CLD ;DF=0 MOV CX,50 REPZ CMPSB ;CX0 或 ZF=1 时重复,DS:SI 和 ES:DI 所指的两个字节相同则继续比较,如果比较相等,ZF=1,则继续比较下一个字节,DI 和 SI 分别加1(DF=0 时),CX-1 JZ MATCHNMATCH:MOV AH,09H MOV DX,OFFSET DAT4 ;输出不匹配 INT 21H JMP NE
7、XTMATCH: MOV AH,09H MOV DX,OFFSET DAT3 ;输出匹配 INT 21HNEXT: MOV AH,4CH INT 21HCODE ENDS END START小结小结在设计过程中,我把程序分成了宏定义显示回车,数据段定义,初始化,开始比较,匹配时再比较,不匹配时SI指向串1首字符,DI指向新字符重新开始比较等模块。且运用指令REPZ CMPSB进行字符串比较处理,设计的过程中要注意很多细节,如初始化时调用INT 21H的0A号功能接收字符串,要注意缓冲区的第一个字节存放最大字符数,第二个字节存放实际字符数。本次设计让我对DOS功能条用与字符串指令有了更深的了解与
8、认识。程序设计二:从键盘上输出数据并显示程序设计二:从键盘上输出数据并显示为掌握接收键盘数据的方法,并了解将键盘数据显示时须转换为 ASCII 码的原理。编写程序,将键盘接收到的四位十六进制数据转换为等值的二进制数,再显示在终端上。流程图流程图:程序程序DATA SEGMENTSTRING1 DB PLEASE INPUT A NUMBER(SUCH AS:1234):,13,10,$BUFFER LABEL BYTE ;定义一个 BUFFER,接受字符串,LABEL 定义变量类型DL 加 30H,变成二进制数位对应字符的 ASCII 码显示返回 DOSCX 减 1 为 0?入口段寄存器及堆栈
9、初始化显示“请输入十六进制数”调用 GETNUM,接收键入数值,保存在 BX 中计数值 16 送 CXBX 中内容循环左移一位BL 送 DL,屏蔽掉 DL 高 7 位YNYMAX DB 5 ;在 MAX 中存入最多接受长度(以回车结束,包括回车) ,若超过长度,响铃提示,不再接受ACL DB ? ;ACL 中存入实际输入的字符串长度,以回车结束,包括回车.BUFER DB 5 DUP(?) ;实际接受的字符串存在以 BUFER 开始的地址中.STRING2 DB THE RESULT IS :,13,10,$DATA ENDSSTACKAREA SEGMENTDB 20 DUP(?) STAC
10、KAREA ENDSCODE SEGMENTMAIN PROC FARASSUME CS:CODE,DS:DATA,SS:STACKAREASTART:MOV AX,DATA ;输出 STRING1MOV DS,AXLEA DX,STRING1 MOV AH,09H ;输出 DS:DX 的字符串INT 21H ;输出第一行字,回车(13)换行(10)LEA DX,BUFFERMOV AH,0AH ;字符串缓冲输入INT 21H MOV DL,0AH ;输入换行,以免输入数据被 STRING2 覆盖MOV AH,02HINT 21H ;输出 STRING2 LEA DX,STRING2MOV A
11、H,09HINT 21H ;输出第二行字MOV SI,0 LOOP1: MOV CX,04HMOV BL,BUFERSIMOV AL,BLINC SICMP AL,40H ;判断字符是否属于 0-9 对应的字符串为3039HJB NEXT ;低于则转移SUB AL,27H ;AE 转换到对应的 1015NEXT: SUB AL,30H ;将 ASCII 码的值转换成对应的十六进制数MOV BL,ALDPLAY:MOV AH,02H ;开始显示一个字符,字符在 DL 里(0、1)MOV DL,0TEST AL,00001000B ;TEST 指令:结果不送到目的寄存器的与与操作,用于判断高字节是
12、否为 0,7?,JZ ZERO MOV DL,1 ;第四位等于 1 输出 1(7)ZERO:INT 21H ;第四位等于 0 输出 0(=【SI】?CX-1=0?NYYN将BCD码存入对应名次表单元显示空格显示完?YNN成绩名次表主程序流程图 SCAN子程序流程图程序:程序:CRLF MACRO ;宏定义,回车换行 MOV AH,02H MOV DL,0DH INT 21H MOV AH,02H MOV DL,0AH INT 21HENDMDATA SEGMENTSTUNUM EQU 30 ;学生数MESS1 DB Please input 30 score:,0DH,0AH,$ ;提示信息E
13、RROR DB Input error,try again,0DH,0AH,$ ;报错信息MESS2 DB The order is:,0DH,0AH,$EMARK DB ? ;报错标志 ORG 1000H ;存放成绩地址SCORE DB 30 DUP(?) ;成绩表 ORG 2000H ;存放名次地址SEQU DB 30 DUP(?) ;名次表DATA ENDSSTACK SEGMENT ;堆栈段定义STA DW 32 DUP(?)TOP DW ?STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACKSTART: MOV A
14、X,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 ;30人 MOV EMARK,0 ;报错标志清0 UUU: CALL GETNUM ;调用子函数读取成绩 CMP EMARK,01H ;判断是否出错 JE START ;出错则重新开始 MOV SI,DL ;没出错则存入成绩 INC SI ;指向下一个成绩单元地址 LOOP UUU ;判断30个成绩是否读取完 MOV CX,STUNUM MOV
15、DI,OFFSET SEQU ;名次表首址VVV: CALL SCAN ;调用扫描子程序 MOV AL,STUNUM ;学生总数 SUB AL,CL ;计算名次 INC AL MOV BX,DX ;学号 PUSH AX ;将名次转换成压缩BCD码方便显示 PUSH BX PUSH CX XOR AH,AH ;AH清零 MOV BH,0AH DIV BH ;被除数是AX MOV CL,4 SHL AL,CL ;AL左移四位 ADD AL,AH MOV DH,AL POP CX POP BX POP AX MOV DI+BX,DH ;存入名次 LOOP VVV ;判断是否存完 MOV AH,09H
16、 ;显示名次提示信息 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 ;返回DOS INT 21H SCAN PROC NEAR ;扫面子函数,每调用一遍,找出成绩表;中最高成绩,记录其学号,并将此成绩;清0PUSH CX MOV
17、CX,STUNUM MOV AL,00H MOV BX,OFFSET SCORE MOV SI,BX CCC: CMP AL,SI ;实现选出最高成绩 JAE JJJ ;0则跳转 MOV AL,SI ;最高成绩存入AL MOV DX,SI SUB DX,BX JJJ: INC SI LOOP CCC ADD BX,DX MOV BYTE PTR BX,00H ;成绩清零 POP CX RETSCAN ENDPDISPI PROC NEAR ;显示子程序 PUSH CX MOV BL,AL ;显示高4位 MOV DL,BL MOV CL,04 ROL DL,CL AND DL,0FH CALL
18、DISPL MOV DL,BL ;显示低4位 AND DL,0FH CALL DISPL POP CX RETDISPI ENDPDISPL PROC NEAR ;将名次转换成对应的ASCII码值并显示 ADD DL,30H MOV AH,02H INT 21H RET DISPL ENDP GETNUM PROC NEAR ;读取成绩子函数 PUSH CX XOR DX,DX ;清0,用于存放成绩GGG: MOV AH,01H INT 21H ;键盘字符输入 CMP AL,0DH JZ RRR ;如果是回车则结束 SUB AL,30H JB ERR ;小于0则报错 CMP AL,09H JB
19、E GETS ;如果在09之间则存成绩至DX JMP ERR ;否则报错GETS: MOV CL,04 SHL DX,CL ;将DX中已有数值左移四位 XOR AH,AH ADD DX,AX ;紧接着将数据存在DX中低四位 JMP GGG ;跳转继续读取数据ERR: MOV AH,09H ;显示报错信息 MOV DX,OFFSET ERROR INT 21H MOV EMARK,01H ;报错标志置1RRR: PUSH DX CRLF ;回车换行 POP DX POP CX RET GETNUM ENDPCODE ENDS END START小结小结本次设计的是学生成绩名次表,首先将其分为主程序和子程序,主程序分为初始化,显示输出,SI 指向成绩表首址,调程序度学生成绩送SI中,CX 为 0 判断循环,DI 指向名次表首址,调子程序扫描成绩表,计算名次,填入 DX 学号对应名次表单元,返回 DOS。子程序则分为 CX 入栈保存,AL 中放最低成绩00H,BX,SI 指向成绩表首址,ALSI
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030钢护柱行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030果蔬产业行业市场现状供需分析及投资评估规划分析研究报告
- 混合纳米流体微量润滑铣削7050铝合金实验研究
- 稻壳活性炭的改性及其对四环素吸附性能研究
- 发酵干酒糟营养价值分析及其对黄羽肉鸡的饲喂效果研究
- 松滋市农产品电子商务发展影响因素及优化策略研究
- 细节层次优化策略-全面剖析
- 2024年度安徽省护师类之护师(初级)押题练习试卷A卷附答案
- 人美版小学六年级上册美术学生评优计划
- 中医医院财务审计报告范文
- MOOC 国情分析与商业设计-暨南大学 中国大学慕课答案
- MOOC 大学体育-华中科技大学 中国大学慕课答案
- 《光伏发电工程工程量清单计价规范》
- 国家卫生部《综合医院分级管理标准》
- DB64++1996-2024+燃煤电厂大气污染物排放标准
- 初中八年级数学课件-最短路径-将军饮马问题
- 信息论与编码期末考试题(全套)
- 医院医学伦理审查委员会章程
- 房地产销售价格优惠申请表-
- 绿化自动滴灌系统施工方案
- 处理突发事件流程图
评论
0/150
提交评论