求一个程序,微机原理,8086汇编语言,实现一个简单实用功能,如时钟显示
2个回答
展开全部
;求一个程序,微机原理,8086汇编语言,实现一个简单实用功能,如时钟显示
;
;在右上角显示时钟,按任一键结束
;用MASM5.0编译通过.
data segment
HH DB 0,0,':'
MM DB 0,0,':'
SS1 DB 0,0
data ends
code segment
main proc far
assume cs:code
start:
push ds
mov ax,0
push ax
mov ax,data
mov ds,ax
AGAIN:
mov ah,2ch ;读取系统时间 CH:CL--时:分 DH:DL--秒:百分秒
int 21h
MOV BX ,OFFSET HH
MOV AL,CH
CALL C16_10 ;转换AL中16进制为10进制,并填入相应位置
MOV BX ,OFFSET MM
MOV AL,CL ;分
CALL C16_10
MOV BX ,OFFSET SS1
MOV AL,DH ;秒
CALL C16_10
MOV AH,2 ;光标定位
MOV DH,0 ;首行
MOV DL,70 ;70列
MOV BH,0
INT 10H
MOV CX,8
MOV SI,OFFSET HH
NN1:
MOV AH,0EH ;电传方式写字符(一次1个)
MOV AL,[SI]
MOV BL,0
INT 10H
INC SI
LOOP NN1
MOV AH,1
INT 16H
JNZ DOWN ;按任一键结束
JMP AGAIN
DOWN:
RET
main endp
;============
C16_10 PROC NEAR
PUSH CX ;将AL中的16进制转为10进制
MOV AH,0
MOV CX,10D
DIV CL
ADD AX,3030H
MOV [BX],AL
INC BX
MOV [BX],AH
POP CX
RET
C16_10 ENDP
;=============
code ends
end start
;
;在右上角显示时钟,按任一键结束
;用MASM5.0编译通过.
data segment
HH DB 0,0,':'
MM DB 0,0,':'
SS1 DB 0,0
data ends
code segment
main proc far
assume cs:code
start:
push ds
mov ax,0
push ax
mov ax,data
mov ds,ax
AGAIN:
mov ah,2ch ;读取系统时间 CH:CL--时:分 DH:DL--秒:百分秒
int 21h
MOV BX ,OFFSET HH
MOV AL,CH
CALL C16_10 ;转换AL中16进制为10进制,并填入相应位置
MOV BX ,OFFSET MM
MOV AL,CL ;分
CALL C16_10
MOV BX ,OFFSET SS1
MOV AL,DH ;秒
CALL C16_10
MOV AH,2 ;光标定位
MOV DH,0 ;首行
MOV DL,70 ;70列
MOV BH,0
INT 10H
MOV CX,8
MOV SI,OFFSET HH
NN1:
MOV AH,0EH ;电传方式写字符(一次1个)
MOV AL,[SI]
MOV BL,0
INT 10H
INC SI
LOOP NN1
MOV AH,1
INT 16H
JNZ DOWN ;按任一键结束
JMP AGAIN
DOWN:
RET
main endp
;============
C16_10 PROC NEAR
PUSH CX ;将AL中的16进制转为10进制
MOV AH,0
MOV CX,10D
DIV CL
ADD AX,3030H
MOV [BX],AL
INC BX
MOV [BX],AH
POP CX
RET
C16_10 ENDP
;=============
code ends
end start
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个功能用汇编写,可以参照微机原理
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询