当前位置:文档之家› 微机原理课程设计报告(程序)

微机原理课程设计报告(程序)

微机原理课程设计报告班级:电科1201 姓名:李建学号:3120504023课程设计目的结合微型计算机原理课程的学习,进一步巩固已学的知识,同时针对微型计算机原理知识的具体应用,学会对系统中DOS和BIOS的使用。

学会使用全屏幕编辑程序—PE,弄懂汇编程序的上机过程以及如何运用DEBUG软件进行汇编程序的调试。

课程设计内容1.字符串匹配设计为掌握提示信息的设置方法及读取键入信息的方法。

编写程序实现两个字符串比较。

如相同,则显示“MA TCH”,否则,显示“NO MATCH”。

程序流程图程序代码为:DA TA SEGMENTDATA1 DB 40DB ?DB 40 DUP(?)DATA2 DB 40DB ?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,'$'DA TA ENDSCASE SEGMENTASSUME CS:CASE,DS:DATASTART: MOV AX,DATAMOV DS,AXLEA DX,DISPP1MOV AH,9INT 21HMOV DX,OFFSET DA TA1MOV AH,0AHINT 21HCALL ENTERLEA DX,DISPP2MOV AH,9INT 21HMOV DX,OFFSET DA TA2MOV AH,0AHINT 21HCALL ENTERMOV AL,DATA1+1MOV AH,0MOV BL,DATA2+1MOV BH,0CMP AL,BLJNZ L2MOV CL,BLMOV SI,OFFSET DA TA1+2MOV DI,OFFSET DATA2+2L1: MOV DX,DS:[SI]CMP DX,DS:[DI]JNE L2INC DIINC SILOOP L1MOV DX,1JMP L3L2: MOV DX,0L3: CMP DX,0JZ L4MOV DX,OFFSET DISPP4MOV AH,9INT 21HJMP L5L4: MOV DX,OFFSET DISPP5MOV AH,9INT 21HL5: MOV AH,4CHINT 21HENTER PROCLEA DX,DISPP3MOV AH,9INT 21HRETENTER ENDPCASE ENDSEND START运行结果:2.字符和数据的显示设计为掌握字符和数据的显示方法。

编写程序,先显示信息:INPUT STRING,THE END FLAG IS$,再接收字符。

如为0-9,则计数器加1,并显示数据;如为非数字,则直接显示,但不计数。

程序代码为:DA TA SEGMENTDATA1 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:','$'DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA START: MOV AX,DA TAMOV DS,AXMOV SI,00HMOV CL,0MOV BX,OFFSET DATA1LEA DX,DISPP1MOV AH,9INT 21HL1: MOV AH,1INT 21HCMP AL,03HJZ L4CMP AL,0DHJZ L3MOV [BX+SI],ALINC SICMP AL,30HJNB kkJMP L1kk: CMP AL,39HJNA L2JMP L1L2: INC CLJMP L1L3: LEA DX,DISPP2MOV AH,9INT 21HLEA DX,DISPP3MOV AH,9INT 21HADD CL,30HMOV [BX+SI+1],CLMOV AL,0AHMOV [BX+SI+2],ALMOV AL,'$'MOV [BX+SI+3],ALMOV DX,BXMOV AH,9INT 21HJMP L4L4: MOV AH,4CHINT 21HCODE ENDSEND START运行结果:3.接收年、月、日信息并显示的设计为掌握响铃使用方法,并掌握年、月、日输入方法。

编写程序,先显示“WHAT IS THE DA TE(MM/DD/YY)?”并响铃一次,然后接收键盘输入的月/日/年信息,并显示。

程序流程图程序代码为:CRLF MACROMOV AH,02HMOV DL,0DHINT 21HMOV AH,02HMOV DL,0AHINT 21HENDMDA TA 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,0AH,'DAY ERROR,PLEASE INPUT AGAIN',0DH,0AH,'$' ERROR DB 0DH,0AH,'ERROR,PLEASE INPUT AGAIN',0DH,0AH,'$' MARK DB ?REG DW ?DA TA ENDSSTACK SEGMENTSTA DW 32 DUP(?)TOP DW ?STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TA,ES:DA TA,SS:STACKSTART: MOV AX,DATAMOV DS,AXMOV ES,AXMOV SP,TOPHEAD: MOV MARK,0MOV AH,09HMOV DX,OFFSET MESSINT 21HMOV AH,02HMOV DL,07HINT 21HCALL GETNUMCMP MARK,01HJE HEADPUSH DXCALL GETNUMCMP MARK,01HJNE K1POP DXJMP HEADK1: PUSH DXCALL GETNUMCMP MARK,01HJNE K2POP DXPOP DXJMP HEADK2: MOV AX,DXCALL DISPNOPMOV AH,02HMOV DL,'-'INT 21HPOP AXPUSH DXMOV REG,AXAND AX,00FFHCMP AX,0012HJBE W1MOV AH,09HLEA DX,MESS1INT 21HJMP STARTW1: MOV AX,REG CALL DISPPMOV AH,02HMOV DL,'-'INT 21HPOP AXMOV REG,AXAND AX,00FFHCMP AX,31HJBE W2MOV AH,09HLEA DX,MESS2INT 21HJMP STARTW2: MOV AX,REG CALL DISPPMOV AX,4C00HINT 21HDISPP PROC NEARMOV BL,ALMOV DL,BLMOV CL,04ROL DL,CLAND DL,0FHCALL DISPLMOV DL,BLAND DL,0FHCALL DISPLRETDISPP ENDPDISPL PROC NEARADD DL,30HCMP DL,3AHADD DL,27HDDD: MOV AH,02HINT 21HRETDISPL ENDPDISP PROC NEARPUSH BXPUSH CXPUSH DXPUSH AXMOV AL,AHCALL DISPPPOP AXCALL DISPPPOP DXPOP CXPOP BXRETDISP ENDPGETNUM PROC NEARPUSH CXXOR DX,DXGGG: MOV AH,01HINT 21HCMP AL,0DHJZ PPPCMP AL,20HJZ PPPSUB AL,30HCMP AL,0JB KKKCMP AL,0AHJB GETSJMP KKKGETS: MOV CL,04SHL DX,CLXOR AH,AHADD DX,AXJMP GGGKKK: PUSH AXPUSH DXMOV AH,09HMOV DX,OFFSET ERRORMOV MARK,01HPOP DXPOP AXPPP: PUSH DXMOV AH,02HMOV DX,07HINT 21HCRLFPOP DXPOP CXRETGETNUM ENDPCODE ENDSEND START运行结果:4.将键盘输入的小写字母转换成大写字母的设计为了解小写字母的大写字母在计算机内的表示方法,并学习如何进行转换。

编写程序,接收键盘字符,并将其中的小写字母转变为大写字母,然后显示在屏幕上。

程序流程图程序代码为:DA TA SEGMENTT1 DB 'INPUT A STRING:','$' T2 DB 'THE RESUIT IS:','$'D1 DB 100 DUP (?)D2 DB 100 DUP (?)DISPP1 DB 0DH,0AH,'$'DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TA START:MOV AX,DATAMOV DS,AXMOV DX,OFFSET T1MOV AH,9INT 21HLEA BX,D1LEA SI,D2L1: MOV AH,1INT 21HMOV [BX],ALINC BXCMP AL,0DHJZ L2CMP AL,61HJB L3CMP AL,7AHJA L3SUB AL,20HMOV [SI],ALINC SIJMP L4L3: MOV [SI],ALINC SIL4: JMP L1L2: MOV BYTE PTR [BX],'$'MOV BYTE PTR [SI],'$'LEA DX,D1MOV AH,9INT 21HCALL ENTERMOV AH,9LEA DX,T2INT 21HLEA DX,D2INT 21HMOV AH,4CHINT 21HENTER PROCLEA DX,DISPP1MOV AH,9INT 21HRETENTER ENDPCODE ENDSEND START运行结果:5.学生成绩名次表设计为进一步熟悉排序方法。

相关主题