|
主题 : : 实验14 完成 [待解决] |
回复[ 1次 ]
点击[ 361次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2010-12-17 13:49 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-04-08 17:43 |
assume cs:code
code segment
start: mov si,9
mov ax,0b800H
mov es,ax
mov bx,[160*12+30*2]
mov di,2
mov dx,1
mov bp,2
mov cx,6
a: push cx
mov ax,si
out 70H,al
in al,71H
mov ah,al
mov cl,4
shr ah,cl
and al,00001111B
add ah,30H
add al,30H
mov byte ptr es:[bx],ah
mov byte ptr es:[bx+1],12
mov byte ptr es:[bx+2],al
mov byte ptr es:[bx+3],12
cmp di,0
jne s
cmp dx,0
jne s1
cmp bp,0
jne s2
jmp short ok
s: mov byte ptr es:[bx+4],'/'
mov byte ptr es:[bx+5],10
dec di
dec si
jmp short ok
s1: mov byte ptr es:[bx+4],0
mov byte ptr es:[bx+5],0
sub si,3
dec dx
jmp short ok
s2: mov byte ptr es:[bx+4],':'
mov byte ptr es:[bx+5],10
sub si,2
dec bp
jmp short ok
ok: add bx,6
pop cx
loop a
mov ax,4c00H
int 21H
code ends
end start | | |
|
|
|
|
[第1楼]
[ 回复时间:2011-03-05 22:44 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-12-01 22:13 |
assume cs:code
code segment
start: mov ax,0
mov al,9
mov si,0
mov cx,6
s: push cx
push ax
out 70h,al ;将al送入端口70h
in al,71h ;从端口71h处读出单元内容
mov ah,al
mov cl,4
shr ah,cl
and al,00001111b ;al分成两个表示BCD码值的数据
add ah,30h
add al,30h ;BCD码+30h=10进制数对应的ASCII码
mov bx,0b800h
mov es,bx
mov byte ptr es:[160*12+40*2][si],ah ;显示十位数码
mov byte ptr es:[160*12+40*2+2][si],al ;显示个位数码
pop ax
dec ax ;指向前一数据单元
jmp s1
s0: pop cx
add si,6
loop s
mov ax,4c00h
int 21h
s1: cmp ax,10
ja s0
cmp ax,0
je s0
cmp ax,6
ja s2 ;ax>6,为年/月/日
je s3 ;ax=6,为日结尾
jb s4 ;ax<6,为时:分:秒
s2: mov byte ptr es:[160*12+40*2+4][si],'/' ;添加'/'
jmp s0
s3: sub ax,2
jmp s0
s4: sub ax,1
mov byte ptr es:[160*12+40*2+4][si],':' ;添加':'
jmp s0
code ends
end start | | |
|