|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
assume cs:code
data segment ;2F │/ │ │3A │: │ │20 │空格 | ASCII 码
db 09,'/',08,'/',07,' ',04,':',02,':',00
data ends
code segment
start: mov ax,data ;将用到的端口号码和符号依次放入内存 以备调用
mov ds,ax
mov bx,0b800h ;设定显示
mov es,bx
mov si,0
mov bx,0
mov cx,11 ;设定循环次数 依次将端口号码符号进入
s: push cx
mov al,[si]
cmp al,2fh
je s0
cmp al,3ah
je s0
cmp al,20h
je s0 ;以上6句判断是否是符号 符号不参与端口调取
out 70h,al
in al,71h
mov ah,al
mov cl,4
shr ah,cl
and al,00001111b
add ah,30h
add al,30h ;端口读取 和 BCD码 转换
mov byte ptr es:[bx+160*12+2*30],ah
mov byte ptr es:[bx+160*12+2*30+2],al ;按byte型取 显示相应日期时间
jmp short s1 ;下面是符号显示的代码 显示日期时间的代码 需要跳过
s0:mov byte ptr es:[bx+160*12+2*30],al ; 按byte型取 接上面 je 跳转符号插入日期与时间中间
add bx,2
jmp short s2 ;因为这里符号只占1字节所以 bx+2(byte)
s1: add bx,4 ; 因为这里数据是 分开ah al 各占1个字节 所以要bx+4(byte )
s2: inc si
pop cx
loop s
in al,60h
cmp al,10h ;Q键的扫描码
je quit
jmp short start
;这几句是让显示的时间动起来(网上找的答案上这么写的) 其实我现在也没明白 60h 端口是啥意思 cmp al,10h什么扫描码也不懂
quit: mov ax,4c00h ;按Q键可以跳转到程序结束
int 21h
code ends
end start
求教 mov al,60h cmp al,10h 何意思?
|
|