+ -
当前位置:首页 → 问答吧 → 急---日历的程序,求加注释!!!本人初学者

急---日历的程序,求加注释!!!本人初学者

时间:2010-12-21

来源:互联网

data segment
mes1 db 'input month:','$'
month db 2 dup(?)

mes2 db 'input week:','$'
week db ?
week1 db ?
week2 db ?

mes3 db 'input day:','$'
days db 2 dup(?)
xingqi db ' SUN MON TUE WED THU FRI SAT ','$'
data ends

stack segment
stack ends

code segment
assume ds:data,cs:code,ss:stack

main: mov ax,data
mov ds,ax

output macro x
lea dx,x
mov ah,9
int 21h
endm

hhhc macro ;换行回车
mov dl,0ah
mov ah,2
int 21h
mov dl,0dh
mov ah,2
int 21h
endm

kongge macro x ;空格
local t1
mov cx,x
t1:mov dl,20h
mov ah,2
int 21h
loop t1
endm

output mes1
mov ah,1
int 21h
mov month,al
mov ah,1
int 21h
mov [month+1],al
hhhc

output mes2
mov ah,1
int 21h
and al,0fh ;高位清零
mov week1,al
mov al,7
sub al,week1
mov week2,al
hhhc

output mes3
mov ah,1
int 21h
mov [days],al
mov ah,1
int 21h
mov [days+1],al
hhhc

and days,0fh ;天数计数
mov al,days
mov bl,10
mul bl
mov days,al
mov al,[days+1]
and al,0fh
add days,al

kongge 16

mov dl,month ;显示月份
mov ah,2
int 21h
mov dl,month+1
mov ah,2
int 21h
hhhc

mov cx,35 ;边框
t2:mov dl,'='
mov ah,2
int 21h
loop t2
hhhc

output xingqi ;星期
hhhc

cmp week1,7
kongge 2
je m1
c1:kongge 5
dec week1
jnz c1

go:
mov bl,0
c2:mov al,bl
inc al
daa ;十进制调整(+6)
mov bl,al
mov cl,4
shr al,cl
or al,20h
add al,0ah ;调整十位
mov dl,al
mov ah,2
int 21h
mov al,bl
and al,0fh
or al,30h
mov dl,al
mov ah,2
int 21h
kongge 3
dec days
jz next1 ;132

cmp week2,0
je c3
dec week2
jz c4
jmp c2
c3:
mov week2,6
jmp c2

next1:jmp jieshu

c4:hhhc
kongge 2
mov week2,7
jmp c2

m1:mov bl,0 ;第一天周日
m2:mov al,bl
inc al
daa ;十进制调整(+6)
mov bl,al
mov cl,4
shr al,cl
or al,30h ;调整十位
mov dl,al
mov ah,2
int 21h
mov al,bl
and al,0fh
or al,30h
mov dl,al
mov ah,2
int 21h
kongge 3
dec days
jz jieshu
cmp week2,0
je m3
dec week2
jz m4
jmp m2

m3:mov week2,6
jmp m2

m4:hhhc
kongge 2
mov week2,7
jmp m2

jieshu:
hhhc
mov cx,35 ;边框
t3:mov dl,'='
mov ah,2
int 21h
loop t3
hhhc
mov ah,4ch
int 21h
code ends
end main ;195

作者: senhehe   发布时间: 2010-12-21

注释了一半 不写了

  数学差劲

  操作能解释出来
  目的却说不出个所以然

作者: znxllyuan   发布时间: 2010-12-21

把你写的那点发上来吧,解释一下操作也行啊,多谢了!!!

作者: senhehe   发布时间: 2010-12-21

太长了。。。。你先看一睛,再问你不懂的几个关键点吧。别一看到就怕了,就想问别人噢

作者: flowerjack   发布时间: 2010-12-21

main: mov ax,data
mov ds,ax

output macro x ;这是一个显示字符串的宏 哑元X为字符串首地址
lea dx,x
mov ah,9
int 21h
endm

hhhc macro ;换行回车的宏 无参  
mov dl,0ah
mov ah,2
int 21h
mov dl,0dh
mov ah,2
int 21h
endm

kongge macro x ;空格宏 哑元X为重复次数
local t1
mov cx,x
t1:mov dl,20h
mov ah,2
int 21h
loop t1
endm

output mes1 ;显示字符串input month:
mov ah,1 ;带回显的键盘输入
int 21h
mov month,al ;输入的字符存入month缓冲区  
mov ah,1
int 21h  
mov [month+1],al ;月份存入month字单元
hhhc ;换行回车

output mes2 ;显示字符串input week:
mov ah,1
int 21h ;等待输入
and al,0fh ;高位清零
mov week1,al ;低位送WEEK1单元
mov al,7  
sub al,week1 ;这步没看懂 脑袋混浆浆的 计算一周剩余天数干什么?
mov week2,al
hhhc ;换行回车

output mes3 ;显示input day:
mov ah,1
int 21h ;等待输入
mov [days],al  
mov ah,1
int 21h
mov [days+1],al ;天\存入DAYS字单元
hhhc ;换行回车

and days,0fh ;天数计数
mov al,days  
mov bl,10
mul bl ;这个是要转换为十进制形式吧
mov days,al
mov al,[days+1]
and al,0fh
add days,al

kongge 16 ;16个空格

mov dl,month 
mov ah,2
int 21h  
mov dl,month+1
mov ah,2
int 21h ;显示月份
hhhc ;换行回车

  mov cx,35 
t2:mov dl,'='
mov ah,2
int 21h
loop t2 ;设置边框
hhhc

output xingqi ;显示星期
hhhc ;换行回车

cmp week1,7 ;是周日么
kongge 2 ;2个空格
je m1 ;是转ML(好邪恶的标号~)

作者: znxllyuan   发布时间: 2010-12-21

太及时太感谢了啊

作者: senhehe   发布时间: 2010-12-21

引用 5 楼 senhehe 的回复:
太及时太感谢了啊


 我晕 我才写了一半就写不下去了 还感谢。。

  我最打怵的就是数学 后面的操作懂 目的一时半会看不懂

作者: znxllyuan   发布时间: 2010-12-21