实验内容:编程,以"年/月/日 时:分:秒"的格式,显示当前的日期、时间。
assume cs:code
data segment
db "20xx/xx/xx xx:xx:xx",0 ;以0结尾,作为循环终止标志,跳出循环
db 9,8,7,4,2,0 ;[20] 分别对应着年月日时分秒的存放单元
data ends
code segment
start:
;初始化数据
mov ax,data
mov ds,ax
mov si,2 ;从xx开始
mov bx,20
mov cx,6 ;做六次循环
;根据bx的值挑选出时间信息,并将其放入到data数据段中
;参数:bl 返回值:数字十位ah 数字个位al
time:
push cx
;在屏幕中间显示当前时钟的
mov al,[bx]
out 70h,al
in al,71h
mov ah,al ;暂存al的值
mov cl,4
shr al,cl
and ah,00001111b ;剥离低位
add al,30h
add ah,30h
mov ds:[si],ax
inc bx
add si,3
pop cx
loop time
mov ax,0b800h
mov es,ax
mov di,12*160+40*2
mov si,0
;将data数据段显示到屏幕上
show:
mov ch,0
mov cl,[si]
jcxz ok ;判断字符串是否为0,是则跳出循环
mov byte ptr es:[di],cl ;注意字节的分配,别用两个字节
add di,2
inc si
jmp short show
ok:
jmp short start ;使程序一直循环,起到即时性作用
mov ax,4c00h
int 21h
code ends
end start
; 错误信息:operand must have size
; 编译软件不能确定是8位数的,还是16位数的。