微机原理课程设计-万年历
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
微机原理课程设计
万年历的制作
目录
实验目的 (3)
实验内容 (3)
实验流程图 (3)
实验程序 (5)
调试结果 (11)
心得体会 (14)
实验目的:
结合微型计算机原理课程的学习,进一步巩固已学习的知识,同时针对微型计算机原理知识的具体应用,学会对系统中的DOS和BIOS的使用。学会使用编写软件EDIT,弄懂汇编程序的上机过程以及如何运用DEBUG软件进行汇编程序的调试。通过单步调试,加深对汇编语言的内容了解。
实验内容:
接受年月日信息并显示,编写程序,先显示“What is the data?”,并响铃一次,然后再显示year,接收键盘输入的年,输入正确后,显示month,从键盘输入月,输入正确后,再显示day,从键盘输入日期的信息,并显示。对于时间的算法,闰年时,二月有29天,而平年,二月有28天,其它月份有30天或是31天。若输入年月日时产生错误,警告并重新输入。
实验流程图:
子程序getnum流程图:
实验程序:
assume cs:code,ds:data
data segment
cr equ 0dh
lf equ 0ah
string1 db 'What is the data?','$'
string2 db cr,lf,'Year :','$'
string3 db cr,lf,'Month :','$'
string4 db cr,lf,'Day :','$'
string5 db cr,lf,'ERROR! Input again:','$' buff1 db 5
db ?
db 5 dup(?)
buff2 db 3
db ?
db 3 dup(?)
buff3 db 3
db ?
db 3 dup(?)
data ends
code segment
start:mov ax,data
mov dx,offset string1 mov ah,9
int 21h
call delay
call warning
call delay
call getnum
mov dl,0dh
mov ah,02h
int 21h
mov dl,0ah
mov ah,02h
int 21h
call dispyear
mov dl,'-'
mov ah,02h
int 21h
call dispmonth
mov dl,'-'
mov ah,02h
int 21h
mov ax,4c00h
int 21h
getnum proc near
repea0:mov dx,offset string2
mov ah,9
int 21h
mov dx,offset buff1
mov ah,0ah
int 21h
mov cx,4
mov si,offset buff1
inc si
check:inc si
mov al,[si]
sub al,30h
mov ah,0h
cmp ax,9h
ja repea
cmp ax,0h
jb repea
loop check
mov si,offset buff1
mov ah,'$'
mov [si+6],ah
jmp repeat0
repea:call error
call warning
jmp repea0
repeat0:mov dx,offset string3
mov ah,9
int 21h
mov dx,offset buff2
mov ah,0ah
int 21h
mov si,offset buff2
call address
cmp al,0dh
jz repeat01
cmp ax,12h
ja repeat01
cmp ax,0
jbe repeat01
mov si,offset buff2
mov [si+4],ah
jmp repeat1
repeat01:call error
call warning
jmp repeat0
repeat1:mov dx,offset string4
mov ah,9
int 21h
mov dx,offset buff3
mov ah,0ah
int 21h
mov si,offset buff3
call address
cmp ax,31h
ja repeat11
cmp ax,0
jbe repeat11
mov si,offset buff2
call address
cmp ax,2h
jz feb
div dl
cmp ah,0h
jz doumonth
mov si,offset buff2
call address
cmp ax,8h
ja downmonth1
jmp over doumonth:mov si,offset buff2
call address
cmp ax,7h
ja downmonth2
mov si,offset buff3
call address
cmp ax,31h
jz repeat11
jmp over downmonth2:jmp over repeat11:call error
call warning
jmp repeat1