微机原理实验3
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验三接收年月日信息并显示的程序
班级:学号:姓名:
一.实验目的:
掌响响铃符方法,掌握年同,月,日输入方法。
二.实验内容:
显示输入提示信息并响铃一次,铁后接收键盘输入的月/日/年信息,并显示。若输入月份日期不对,刚显示错误提示并要求重新输入。
三:程序
DATAS SEGMENT
masg db 'what is the date?',13,10,'$'
mess1 db 'please input the month:',13,10,'$'
mess2 db 13,10,'please input the day:',13,10,'$'
mess3 db 13,10,'please input the year:',13,10,'$'
errmess db 13,10,'error!!please input right date!',13,10,'$'
mon db 2 dup(?)
day db 2 dup(?)
year db 4 dup(?)
DATAS ENDS
STACKS SEGMENT
db 200 dup(?) ;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
main proc far
MOV AX,DATAS
MOV DS,AX
lea dx,masg
mov ah,9
int 21h
call sound
;input month
lea dx,mess1
mov ah,9
int 21h
mov cx,2
mov si,0
lop1:
mov al,mon[si]
mov ah,1
int 21h
mov mon[si],al
inc si
loop lop1
;判断月份是否输入正确 compar1:
mov bl,mon[0]
sub bl,30h
mov al,10
mul bl
mov cl,mon[1]
sub cl,30h
sub ch,ch
add ax,cx
cmp ax,1
jl err
cmp ax,12
jg err
;判断日期是否输入正确;input day
lea dx,mess2
mov ah,9h
int 21h
mov cx,2
mov si,0
lop2:
mov al,day[si]
mov ah,1
int 21h
mov day[si],al
inc si
loop lop2
compar2:
mov bl,day[0]
sub bl,30h
mov al,10
mul bl
mov cl,day[1]
sub cl,30h
sub ch,ch
add ax,cx
cmp ax,1
jl err
cmp ax,30
jg err
;input year
lea dx,mess3
int 21h
mov cx,4
mov si,0
lop3:
mov al,year[si]
mov ah,1
int 21h
mov year[si],al
inc si
loop lop3
jmp exit
err: lea dx,errmess
mov ah,9h
int 21h
jmp exit
exit: MOV AH,4CH
INT 21H
main endp
;-------------------------------------------------- ;发声子程序
sound proc near
push ax
push dx
mov cx,1111111111111111b
mov bx,10000
mov ax,cx
mov dx,cx
in al,61h
and al,11111100b
trig:xor al,2
out 61h,al
mov cx,bx
delay:loop delay
dec dx
jne trig
pop dx
pop ax
ret
sound endp
;-------------------------------------------------- CODES ENDS
END START