我写了一个带有中断1ah的代码,我这样做了:
mov al, ch
and al, 0fh
mov dl, al
现在,例如时间是“18:36”,它将打印小时,并且只打印8.因为我希望程序执行此操作。但是,我该怎么做才能显示“1”?
P.S:我测试了掩蔽较低的蚕食,但这不是我的答案。答案 0 :(得分:1)
这是在CH
注册表中打印小时数所需的代码。
mov bl, cl ;Save-guard the minutes!
mov dl, ch
mov cl, 4 ;On 8086 you need to use CL
shr dl, cl ;High nibble
add dl, 30h ;Make character
mov ah, 02h ;DOS PrintChar
int 21h
mov dl, ch
and dl, 0fh ;Low nibble
add dl, 30h ;Make character
mov ah, 02h ;DOS PrintChar
int 21h
因为在8086上没有立即移位计数,所以必须使用CL
寄存器。因此,有必要将CL
寄存器中的分钟移动到另一个寄存器,如BL