2012-04-04 23 views
-1

Also muss ich System Lautsprecher Signalton machen, und ich habe dieseWie mache ich eine Schleife in Assembler?

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 

und ich brauche jetzt all dies in einer Schleife zu machen und auch, dass N von 1000 10000 Erhöhung

Antwort

0

Nun bekommen muss, Wenn dieser Code piepst und Sie mehr als einmal piepen möchten, ist es wahrscheinlich am einfachsten, ihn zu nennen. Wann immer du endlich etwas funktionierst, wie deine Pieproutine, lass es in Ruhe, setze ein RET auf das Ende und rufe es an.

Wie es ist, AL wird durch diesen ersten OUT-Aufruf beschädigt, also sollten Sie vielleicht das N in etwas anderes, BX, möglicherweise übergeben.

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 - es gibt eine Registerkarte "Hausaufgaben"!

Verwandte Themen