Как я могу включить программу 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 это моя собственная программа, вы можете легко найти любой шестнадцатеричный редактор, доступный в Интернете, для просмотра содержимого двоичного файла.

Другие вопросы по тегам