Assembly 8086中的打印系统时间

Assembly 8086中的打印系统时间,assembly,x86,x86-16,Assembly,X86,X86 16,我想在8086程序中打印当前时间,但为什么它只打印奇怪的字符 此外,当我的系统中的时间为9:50时,CH值为15,CL值为33 org 100h data segment hour db " " min db " " data ends printf MACRO str lea dx, str mov ah, 9 int 21h endm code segment start: mov ah, 2Ch int 21h mov hour, CH m

我想在8086程序中打印当前时间,但为什么它只打印奇怪的字符

此外,当我的系统中的时间为9:50时,CH值为15,CL值为33

org 100h   

data segment
hour db " "
min db " "
data ends

printf MACRO str
    lea dx, str
    mov ah, 9
    int 21h
endm

code segment

start:

mov ah, 2Ch
int 21h    

mov hour, CH
mov min, CL 

printf hour
printf min

ret
你可以试试这个

.小型模型 .堆栈64 数据 显示数据库24小时-> 人力资源数据库?,,':' 最小分贝?,?,'HH:MM',10,13',$' 密码 开始: MOV-AX,@DATA MOV-DS,AX MOV-AH,2CH INT 21H 莫夫艾尔,CH 空空导弹 添加AX,3030H MOV HR,啊 MOV HR+1,铝 莫夫艾尔酒店 空空导弹 添加AX,3030H 莫夫敏,啊 移动最小值+1,铝 LEA DX,DISP MOV啊,09H INT 21H INT 3 结束-开始 终止

您的小时/分钟值是整数。int 21h/ah=9需要一个字符串地址。15h是小时21的十六进制值,33h是分钟51的十六进制值。要将十六进制或二进制值转换为十进制数,StackOverflow中有很多示例。