使用 int 21h, 2Ch 显示系统时间
Display system time using int 21h, 2Ch
我正在尝试使用 int 21h, 2Ch 显示系统时间,所以我开始以 CH 显示小时,但我没有得到任何输出,我也不知道为什么。能否请你帮忙?这是我的第一段代码:
Data_segment_name segment para
H db ?
hh db ?
M db ?
mm db ?
Data_segment_name ends
Stack_segment_name segment para stack
Stack_segment_name ends
Code_segment_name segment
Main_prog proc far
assume SS:Stack_segment_name,CS:Code_segment_name,DS:Data_segment_name
mov AX,Data_segment_name ; load the starting address of the data
mov DS,AX ; segment into DS reg.
mov ah,2ch
int 21h
mov ah,ch
mov bl,10
div bl
mov H,al
mov hh,ah
mov dl,30h
add dl,H
mov ah,02h
int 21h
mov dl,30h
add dl,hh
mov ah,02h
int 21h
mov ax,4c00h ; exit program
int 21h
Main_prog endp
Code_segment_name ends
end Main_prog
为了完整起见并感谢用户 Ruud 和 Elderbug,这是对该程序的更正:
mov ah, 2ch
int 21h
mov al, ch
mov ah, 0
mov bl, 10
div bl
下面是其余代码的较短替代方案:
;;; No more need to store in variables
add ax, 3030h ;Convert together
push ax
mov dl, al ;H
mov ah, 02h
int 21h
pop dx
mov dl, dh ;hh
int 21h
我正在尝试使用 int 21h, 2Ch 显示系统时间,所以我开始以 CH 显示小时,但我没有得到任何输出,我也不知道为什么。能否请你帮忙?这是我的第一段代码:
Data_segment_name segment para
H db ?
hh db ?
M db ?
mm db ?
Data_segment_name ends
Stack_segment_name segment para stack
Stack_segment_name ends
Code_segment_name segment
Main_prog proc far
assume SS:Stack_segment_name,CS:Code_segment_name,DS:Data_segment_name
mov AX,Data_segment_name ; load the starting address of the data
mov DS,AX ; segment into DS reg.
mov ah,2ch
int 21h
mov ah,ch
mov bl,10
div bl
mov H,al
mov hh,ah
mov dl,30h
add dl,H
mov ah,02h
int 21h
mov dl,30h
add dl,hh
mov ah,02h
int 21h
mov ax,4c00h ; exit program
int 21h
Main_prog endp
Code_segment_name ends
end Main_prog
为了完整起见并感谢用户 Ruud 和 Elderbug,这是对该程序的更正:
mov ah, 2ch
int 21h
mov al, ch
mov ah, 0
mov bl, 10
div bl
下面是其余代码的较短替代方案:
;;; No more need to store in variables
add ax, 3030h ;Convert together
push ax
mov dl, al ;H
mov ah, 02h
int 21h
pop dx
mov dl, dh ;hh
int 21h