江苏大学微机原理课程设计报告_第1页
江苏大学微机原理课程设计报告_第2页
江苏大学微机原理课程设计报告_第3页
江苏大学微机原理课程设计报告_第4页
江苏大学微机原理课程设计报告_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、微机原理课程设计一课程设计目的:结合微型计算机原理课程的学习,进一步巩固已学的知识,同时针对微型计算机原理知识的具体应用,学会对系统中DOS和BIOS的使用。学会使用全屏幕编辑程序PE,弄懂汇编程序的上机过程以及如何运用DEBUG软件进行汇编程序的调试。二课程设计的任务:实验一实验要求:字符串匹配的设计编写程序实现两个字符串比较,如相同,则显示“MATCH”;否则,显示“NO MATCH”。流程图:显示“NO MATCH”SI加1,指向下一字符串1字符已取完?返回 DOS相等?显示“MATCH”入口段寄存器堆栈初始化显示请输入字符串1 用INT 21H的0AH号子功能,接收字符串显示请输入字符

2、串2SI指向串1的首字符SI指向的字符和字符串2比较NYNY程序CRLF MACRO ;显示回车 MOV DL,0DH MOV AH,02H INT 21H MOV AH,02H MOV DL,0AH INT 21H ENDMDATA SEGMENTMESS1 DB MATCH,0DH,0AH,$MESS2 DB NO MATCH,0DH,0AH,$MESS3 DB INPUT STRING1!,0DH,0AH,$MESS4 DB INPUT STRING2!,0DH,0AH,$MAXLEN1 DB 100STRING1 DB 100 DUP(?)MAXLEN2 DB 100STRING2 D

3、B 100 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATASTART: MOV AX,DATA MOV DS,AX MOV ES,AX MOV AH,09H MOV DX,OFFSET MESS3 INT 21H ;显示提示信息1 MOV AL,MAXLEN1 MOV BX,OFFSET STRING1 MOV BX,AL ;最大字符缓冲 MOV AH,0AH MOV DX,OFFSET STRING1 INT 21H ;接收键入的字符串1 CRLF MOV AH,09H MOV DX,OFFSET MESS4 INT 21H

4、 ;显示提示信息2 MOV AL,MAXLEN2 MOV BX,OFFSET STRING2 MOV BX,AL ;最大字符缓冲设置 MOV AH,0AH MOV DX,OFFSET STRING2 INT 21H ;接收键入的字符串2 CRLFCLD LEA SI,STRING1 ;字符串1的地址送给SI MOV CL,SI+1 ;字符串1的字符数送给CX MOV CH,0BEING: LEA DI,STRING2 ;字符串2的地址送给DI MOV DL,DI+1 ;字符串2的字符数送给DX MOV DH,0J1: MOV AL,SI+2 ;字符串1的第一个字符在字符串2中匹配 CMP DI

5、+2,AL JE J3 ;匹配成功则跳转J2: INC DI ;指向字符串2下一个字符 DEC DX JZ NOMAT ;字符串2完,不匹配 JMP J1 ;字符串2没完,重新匹配J3: DEC CX JZ MATCH ;字符串1完,匹配 DEC DX JZ NOMAT ;字符串2完,不匹配 INC SI ;指向串1下一个字符 INC DI ;指向串2下一个字符 MOV AL,SI+2 CMP DI+2,AL JE J3 ;匹配,跳转 DEC DX JZ NOMAT ;字符串2完,不匹配 LEA SI,STRING1 ;重新从串1的第一个字符匹配 MOV CL,SI+1 MOV CH,0 JM

6、P J1MATCH: MOV AH,09H ;输出匹配信息 MOV DX,OFFSET MESS1 INT 21H JMP NEXTNOMAT: MOV AH,09H ;输出不匹配信息 MOV DX,OFFSET MESS2 INT 21H NEXT: MOV AH,4CH ;程序终止 INT 21HCODE ENDS END START 运行结果实验二实验要求:从键盘输入数据并显示的设计为掌握键盘接受数据的方法,并了解将键盘数据显示时必须转换为ASCII码的原理,编写程序,将键盘接受到的四位十六进制数据转换为等值的二进制数显示。流程图:程序:DATA SEGMENTCUE DB PLEASE

7、 INPUT SIXTEEN DATA,0DH,0AH,$CHA DB 0DH,0AH,CHANGE NUM :,0DH,0AH,$DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART:MOV AX,0 MOV AX,DATA MOV DS,AX MOV DX,OFFSET CUE ;显示输入十六进制数 MOV AH,9 INT 21H CALL SHOW MOV AH,4CH INT 21HSHOW PROC NEAR MOV CL,4 MOV CH,4 MOV BX,0LP1: MOV AH,01H INT 21H SUB AL,0 ;存放差值

8、 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,16LP2: 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 RETSHOW ENDPCODE ENDS END START运行结果:实验三字符和数据的显示设计实验要求:为掌握字符和数据的显示方法。编写程序,先显示信息

9、:INPUT STRING,THE END FLAG IS $,再接收字符。如为0-9,则计数器加1,并显示数据;如为非数字,则直接显示,但不计数。流程图:入口段寄存器初始化非数字字符计数器BX清0显示提示信息INT 21H的01子功能接收键入字符是“$”字符?是回车键?非09?计数器BX加1回车换行调用DISP,显示计数结果返回DOSYNYN实验程序:DATA SEGMENT DATA1 DB 40 DUP(?) DISPP1 DB input string,the end flag is CR,quit with ctrl-c,0DH,0AH,$ DISPP2 DB 0DH,0AH,$ D

10、ISPP3 DB the input string is:,$DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV SI,00H MOV CL,0 MOV BX,OFFSET DATA1 LEA DX,DISPP1 MOV AH,9 INT 21HL1: 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 L1kk: CMP AL,39H JNA L2 JMP L

11、1L2: 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 L4L4: MOV AH,4CH INT 21HCODE ENDS END START运行结果:实验四实验要求:从键盘按收输入字符,如是数字N,则响铃N次,如不是数字或数字是0,则不响流程图:入口段寄存器及堆栈段初始

12、化INT 21H的1号子功能,读入数字BP为0?对应次数送入CX发出响铃,输出字符 延时返回DOS是09?次数BP减1是CtrlC?YYNNNY程序:DATA SEGMENTCUE DB PLEASE INPUT NUM,0DH,0AH,$DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX LEA DX,CUE MOV AH,09H INT 21HLOP: MOV AH,01H INT 21H CMP AL,0DH ;回车转到PPP JE PPP CMP AL,39H ;大于39H从新输入 JA LO

13、P; SUB AL,2FH XOR AH,AH MOV BP,AX LOP1: DEC BP JZ LOP MOV AH,02H ;响铃 MOV DL,07H INT 21H MOV CX,0FFFFH ;延迟LOP2: LOOP LOP2 JMP LOP1 PPP: MOV AH,4CH INT 21H CODE ENDS END START运行结果:实验五实验要求:接收年,月,日信息并显示的设计:掌握响铃使用方法,并掌握年,月,日输入方法。编写程序,先显示“WHAT IS THE DATE(MM/DD/YY)?”并响铃一次,然后接收键盘输入的月/日/年信息,并显示。流程图:开始初始化,清错

14、误标志显示提示信息,响铃一次调用键读入子程序,读月有出错标志吗? 调用键读入子程序,读日 有出错标志吗? 调用键读入子程序,读年有出错标志吗?显示年,月,日返回DOS程序:CRLF MACRO MOV AH,02H MOV DL,0DH INT 21H MOV AH,02H MOV DL,0AH INT 21HENDMDATA SEGMENTMESS 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,0A

15、H,DAY ERROR,PLEASE INPUT AGAIN,0DH,0AH,$ERROR DB 0DH,0AH,ERROR,PLEASE INPUT AGAIN,0DH,0AH,$MARK DB ?REG DW ?DATA ENDSSTACK SEGMENTSTA DW 32 DUP(?)TOP DW ?STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACKSTART: MOV AX,DATAMOV DS,AXMOV ES,AXMOV SP,TOP HEAD: MOV MARK,0 MOV AH,09HMOV DX,OFFS

16、ET MESSINT 21H MOV AH,02H ;响铃一次MOV DL,07HINT 21H CALL GETNUM ;键入月值CMP MARK,01HJE HEADPUSH DXCALL GETNUM ;键入日值CMP MARK,01HJNE K1POP DXJMP HEADK1: PUSH DXCALL GETNUM 键入年值CMP MARK,01HJNE K2POP DXPOP DXJMP HEADK2: MOV AX,DXCALL DISP ;显示年值 NOPMOV AH,02HMOV DL,- INT 21H POP DX POP AX PUSH DX MOV REG,AX AN

17、D AX,00FFH CMP AX,0012H JBE W1 MOV AH,09H LEA DX,MESS1 INT 21H JMP STARTW1: 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 STARTW2: MOV AX,REG CALL DISPP ;显示日值 MOV AX,4C00H INT 21H DISPP PROC NEAR MOV B

18、L,AL MOV DL,BL MOV CL,04 ROL DL,CL AND DL,0FH CALL DISPL MOV DL,BL AND DL,0FH CALL DISPL RETDISPP ENDPDISPL PROC NEAR ADD DL,30H CMP DL,3AH JB DDD ADD DL,27HDDD: MOV AH,02H INT 21H RETDISPL ENDPDISP 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

19、 RET DISP ENDPGETNUM PROC NEAR PUSH CX XOR DX,DXGGG: 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 KKKGETS: MOV CL,04 SHL DX,CL XOR AH,AH ADD DX,AX JMP GGGKKK: PUSH AX PUSH DX MOV AH,09H MOV DX,OFFSET ERROR INT 21H MOV MARK,01H POPDX POP AXP

20、PP: PUSH DX MOV AH,02H MOV DX,07H INT 21H CRLF POP DX POP CX RET GETNUM ENDPCODE ENDSEND START运行结果:实验六实验要求:将键盘输入的小写字母转换成大写字母的设计为了解小写字母和大写字母在计算机内的表示方法,并学习如何进行转换,编写程序,接受键盘字符,并将其中的小写字母转变为大写字母,然后显示在屏幕上。流程图: 实验程序:DATA SEGMENT DATA1 DB 20 DUP(?) DISPP1 DB please input letters, end with enter, exit with ct

21、rl-c,0DH,0AH,$DISPP2 DB the inverted litter is:, 0DH, 0AH,$ DISPP3 DB 0DH,0AH,$DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV SI,00H MOV BX,OFFSET DATA1 LEA DX,DISPP1 MOV AH,9 INT 21HL1: MOV AH,1 INT 21H CMP AL,03H JZ L4 CMP AL,0DH JZ L3 CMP AL,61H JZ L2 SUB AL,20H JMP

22、 L2 L2: MOV BX+SI,AL INC SI JMP L1 L3: LEA DX,DISPP3 MOV AH,9 INT 21H LEA DX,DISPP2 MOV AH,9 INT 21H MOV BX+SI,AL MOV AL,0AH MOV BX+SI+1,AL MOV AL,$ MOV BX+SI+2,AL MOV DX,BX MOV AH,9 INT 21H LEA DX,DISPP3 MOV AH,9 INT 21H JMP L4 L4: MOV AH,4CH INT 21H CODE ENDS END START 运行结果: 实验九实验要求:学生成绩名次表设计 为进一步

23、熟悉排序方法,编写程序,将0100之间的30个成绩存入首地址为1000H的存储区中,1000H+i的学生成绩。编写程序使得在2000H开始的区域排出名次表。2000H+i为学号i的学生的名次。 流程图:实验程序:DATA SEGMENTEN EQU 0DHTA EQU 0AHInMark DB 3DB ?DB 3 DUP(?)S1 DB Please Input The Mark(00-99),EN,TA,$S2 DB Student ,$S3 DB Namelist,$ORG 1000H ;指定内存位置1000HMark DB 30 DUP(?) ;设定学生人数为30 人ORG 2000H

24、;指定内存位置2000HNamelist DB 30 DUP(?)DATA ENDSSTACK SEGMENTSTACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART: MOV AX,DATAMOV DS,AXDISPSTR MACRO S ;宏定义显示字符串PUSH AX ;DOS 功能调用对AX内容影响需保护MOV DX,OFFSET SMOV AH,9HINT 21HPOP AXENDMDISPSIN MACRO D ;宏定义显示单字符PUSH AXMOV DL,DMOV AH,02HINT 21HPOP AXENDMENTA

25、MACRO ;宏定义回车换行PUSH AXMOV DL,ENMOV AH,2INT 21HMOV DL,TAINT 21HPOP AXENDMDISPSTR S1 ;宏调用显示“Please Input”MOV CX,30MOV DI,OFFSET Mark CALL InputM ;调用输入成绩子程序InputMENTAMOV CX,30 ;排序并生成名次表MOV DI,OFFSET NamelistM1: MOV AX,31SUB AX,CXMOV DI,ALINC DILOOP M1MOV CX,29MOV SI,OFFSET MarkMOV DI,OFFSET NamelistXOR

26、BX,BXCALL PaiXu ;调用排序子程序PaiXuDISPSTR S3ENTA ;排序并生成名次表MOV CX,30 MOV SI,OFFSET NamelistMOV DI,OFFSET MarkCALL List ;调用显示名次表子程序ListMOV AH,4CHINT 21H ;结束返回DOS ZhuanHuan PROC NEAR ;十六进制转ASC码输出子程序PUSH BXMOV BH,0AHDIV BHPOP BXADD AL,0ADD AH,0DISPSIN ALDISPSIN AHRETZhuanHuan ENDPInputM PROC NEAR ;学生成绩输入子程序I

27、1: MOV AX,31SUB AX,CXDISPSTR S2XOR AH,AHCALL ZhuanHuan ;换码输出学号DISPSIN :MOV DX,OFFSET InMarkMOV AH,0AHINT 21HENTAMOV SI,OFFSET InMarkADD SI,2 ;SI指向输入数据MOV BH,SIMOV BL,SI+1SUB BH,0SUB BL,0MOV AL,0AHXOR AH,AHMUL BH ;十位数乘以10再加个位ADD AL,BLMOV DI,AL ;存储成绩INC DILOOP I1RETInputM ENDPPaiXu PROC NEAR ;排序子程序P1:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论