Как я могу включить программу ASM в свою программу Turbo Basic?
Я нашел эту процедуру ASM для нажатия клавиши. Подпрограмма ASM для нажатия клавиши. Теперь я хотел бы включить ее в подпрограмму Turbo Basic, но не знаю, как это сделать. Кто-нибудь может сказать мне, как это делается? Спасибо
РЕДАКТИРОВАТЬ: Я нашел способ: $INLINE, но как я могу преобразовать свой код asm в машинный язык, чтобы я мог встроить его в свою базовую программу?
РЕДАКТИРОВАТЬ: Мне не удалось поместить этот QBASIC с кодом Asm в программу TURBO BASIC. Буду благодарен за любую помощь, как это сделать:
DECLARE FUNCTION GetKeyH% ()
CLS
DO
LOCATE 10, 10
PRINT "Key = "; HEX$(GetKeyH%); " "
LOOP UNTIL INKEY$ = CHR$(27)
END
и ЧАСТЬ ASM:
Dosseg
.model medium, basic
.286
.stack
.code
Even
public getkeyh ; make getkeyh public
getkeyh proc far basic uses bp dx ; save registers
in al,60h
xchg dx,ax
xor ax,ax ; assume no key
test dl,10000000b
jnz short getkeyhD
mov al,dl
getkeyhD: ret
getkeyh endp ; end of procedure
end ; end of assembly code
РЕДАКТИРОВАТЬ: большое СПАСИБО за ответ г-на Майкла Петча ниже. Более того, я мог видеть, что эта процедура ASM также является решением для нажатых клавиш CTL и ALT.
0 ответов
Вы можете использовать
DEBUG.COM
чтобы ввести код сборки, затем выполните шестнадцатеричный дамп, чтобы получить машинный код.
Выглядит это так:
D:\>DEBUG
-A 100
0ABD:0100 IN AL,60
0ABD:0102 XCHG DX,AX
0ABD:0103 XOR AX,AX
0ABD:0105 TEST DL,80
0ABD:0108 JNZ 10C
0ABD:010A MOV AL,DL
0ABD:010C RET
0ABD:010D
-R CX
CX 0000 :D
-N KEY.COM
-W
Writing 000D bytes
-Q
D:\>HEXDUMP KEY.COM
00000000 E4 60 92 31 C0 F6 C2 80 75 02 88 D0 C3 .`.1....u....
D:\>
Теперь вы можете инкапсулировать каждый машинный код с помощью
$INLINE
.
$INLINE &HE4, &H60, &H92, &H31, &HC0, &HF6, &HC2, &H80, &H75, &H02, &H88, &HD0
Как предложил @Michael Petch, не включайте последний машинный код (&HC3
) в вашем
$INLINE
метастатирование.
Примечание: пока
HEXDUMP.EXE
это моя собственная программа, вы можете легко найти любой шестнадцатеричный редактор, доступный в Интернете, для просмотра содержимого двоичного файла.