所以我需要让系统扬声器发出嘟嘟声,我得到了这个
program lab1;
begin
asm
MOV AL, 10110110b
OUT 43h, AL
MOV AX, 1000 ||<------ 1000 is N
OUT 42h, AL
MOV AL, AH
OUT 42h, AL
IN AL, 61h
OR AL, 00000011b
OUT 61h, AL
MOV CX, 1000
@N1:MOV DX, 0
@N:NOP
NOP
NOP
NOP
DEC DX
JNZ @N
LOOP @N1
IN AL, 61h
AND AL, 11111100b
OUT 61h, AL
end
end
我现在需要在循环中完成所有这些并且N需要增加10000增加
答案 0 :(得分:0)
好吧,如果那段代码发出哔哔声并且您想要发出一次以上的哔声,那么调用它可能最容易。每当你最终得到一些工作时,比如你的哔哔程序,不管它,把RET放在最后并调用它。
实际上,AL被第一个OUT调用破坏了,所以也许你应该把N传递给其他东西,BX,也许。
MOV CX,10
MOV BX,1000
@nextN:
PUSH CX
PUSH BX
CALL beep;
POP BX
POP CX
ADD BX,1000
LOOP @nextN
RET
..
@beep:
MOV AL, 10110110b
OUT 43h, AL
MOV AX, BX
..
RET
PS - 有一个'家庭作业'标签!