微机原理课程设计-万年历

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档