-1

だから私はシステムスピーカーをビープ音にする必要がありますそして私はこれを手に入れました

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を1000ずつ増やす必要があります。

4

1 に答える 1

0

そのコードがビープ音を鳴らし、何度もビープ音を鳴らしたい場合は、おそらくそれを呼び出すのが最も簡単です。ビープ音のルーチンのように、最終的に何かが機能するようになったときはいつでも、それをそのままにして、最後にRETを付けて呼び出します。

現状では、ALはその最初のOUT呼び出しによって破損するため、おそらく他の何か、BXでNを渡す必要があります。

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-「宿題」タブがあります!

于 2012-04-04T11:56:23.420 に答える