Ich habe jetzt anhand Toasters A20 - Genuine - Dokument meinen eigenen Copde zum aktivieren des A20 - Gates geschrieben. Dieser fällt aber etwas anderes aus als seiner. welcher von beiden ist schneller?
Toasters:
Activate_A20_Gate:
; aktiviere das A20Gate
; warte auf den Controller, bis man einen Befehl senden kann
Wait_Keyboard:
in al,64h
test al,00000010b
jnz Wait_Keyboard
; sende den Befehl
mov al,0D0h
out 64h,al
; warte, bis man das Status Byte lesen kann
Wait_Byte:
in al,64h
test al,00000001b
jz Wait_Byte
; lese das Output Byte (und setze Bit 1)
in al,60h
or al,00000010b
mov bl,al
; warte auf den Controller, bis man einen Befehl senden kann
Wait_Keyboard_2:
in al,64h
test al,00000010b
jnz Wait_Keyboard_2
; sende den Befehl
mov al,0D1h
out 64h,al
; warte, bis man das Status Byte lesen kann
Wait_Keyboard_3:
in al,64h
test al,00000010b
jnz Wait_Keyboard_3
; sende das Output Byte (und aktiviere damit das A20Gate)
mov al,bl
out 60h,al
retf
meiner:
WaitKeyboard:
xor ax, ax
in al, 0x64
bt ax, 1
jc WaitKeyboard
mov al, 0xD0
out 0x64, al
WaitData:
xor ax, ax
in al, 0x64
bt ax, 1
jnc WaitData
xor ax, ax
in al, 0x60
mov bl, al
WaitKeyboard2:
xor ax, ax
in al, 0x64
bt ax, 1
jc WaitKeyboard2
mov al, 0xD1
out 0x64, al
WaitKeyboard3:
xor ax, ax
in al, 0x64
bt ax, 1
jc WaitKeyboard3
mov al, bl
or al, 00000010b
out 0x60, al
mit der schnelligkeit soll bitte nicht der gesamt code betrachtet werden, sondern nur diese befehle
test
und
bt
ich hab in meinemm asm-tut bt kennen gelernt , er verwendet test. was ist schneller??