我看到这段代码在CRO上生成并显示方波。
data segment
base_add equ 0ef40h
porta equ base_add+0
portb equ base_add+1
portc equ base_add+2
control_word equ base_add+3
data ends
code segment
assume cs:code, ds:data
start : mov ax, data
mov ds, ax
mov dx, control_word
mov al, 80h
out dx, al
up2:
mov cx, 000ffh
mov al, 00h
mov dx, portb
mov al, 00h
here1: out dx,
loop here1
mov cx, 00ffh
mov al, 0ffh
here2: out dx, al
loop here2
mov ah, 0bh ; LINE1
int 21h
or al, al ; LINE2
jz up2
mov ah, 4ch
int 21h
code ends
end start
接近尾声,mov ah, 0Bh
中断和or al, al
的用途是什么?
不是or al, al
基本上只是al
吗?有什么需要明确提到它?
我甚至试图找出0Bh中断的作用,但我无法理解我读到的内容。任何有关这方面的帮助将不胜感激。
谢谢!
答案 0 :(得分:2)
这是MSDOS汇编代码。
mov ah, 0Bh ; LINE1
int 21h
调用DOS以检查标准输入上的字符是否可用。如果没有可用的字符,则此调用将返回0;当字符可用时,此调用将返回0xFF。返回值将通过al
寄存器返回,所以
or al, al ; LINE2
jz up2
将测试一个字符是否可用(or al, al
仅在al
为零时才为零),如果没有任何内容可读,则跳转到 up2 。
提示:如果您正在使用DOS,请抓住Ralf Brown的中断列表副本