1


私はアセンブリコードを少し学びましたが、インターネット上にはこれに関する優れたチュートリアルがあまりないことも学びました。特定のデバイスに信号を送信することについて疑問に思っていました
。パラレル ポート、usb (おそらく)
正しい方向に導くために誰かが共有できるコードがあるかどうか疑問に思っていました。そして、あなたが信号で知らなかった場合、私は電圧を送ることを意味します.

要約すると、アセンブリを使用して特定のポートと対話する方法を知りたいと

思います。現在、アセンブリを実行するために DosBox を使用し、フラット アセンブラを使用してプログラムしています。これはすべてウィンドウ 8 で実行されています。

よろしくお願いします、36redsoxfan

4

2 に答える 2

1

私は fasm の専門家ではありません...しかし、この投稿によると... fasm の場合とそうでない場合があります...

http://board.flatassemblyr.net/topic.php?t=8638

BIOS を Bidirectional Parallel port mode (SPP) として設定します

これにより、I/O パーミッションが設定されます。

mov eax,101                      ; SYS_IOPERM 
mov ebx,Base_Parallel         ; 378H 
mov ecx,Size                      ; 3 
mov edx,1                         ; Turn ON 
int 80H 
test eax,eax 
js Error_Set_IO 

書くには:

mov dx,37ah 
in al,dx 
and al,11011111b             ; reset bit 5 ( Write mode) 
out dx,al   

mov al,0ffh                         ; turn on all 8 pin 
mov dx,378h 
out dx,al                           ; Write byte 

読むには:

mov dx,37ah 
in     al,dx 
or     al,00100000b          ; set bit 5 ( Read mode) 
out   dx,al 

mov dx,378h 
in    al,dx                        ; Read byte 
于 2013-02-08T23:26:17.627 に答える
0

すでに述べたように、in と out を使用して正しいポートに正しいビットを書き込むだけです。大きな問題は、Windows ボックスでユーザー モードで実行している場合、これを行うための十分なアクセス許可がないことです。カーネル モード ドライバーとして実行する必要があります (それでも、アセンブリ レベルのハードウェア アクセスを行うのではなく、OS が提供するインターフェイスを呼び出している可能性があります)。私自身は DosBox を使用したことはありませんが、一般に、このようなエミュレーターは基盤となるハードウェアへのアクセスのみをエミュレートします。そのため、エミュレートされたパラレル ポートへの書き込みが可能になる場合がありますが、ハードウェアの電圧レベルは実際には変更されません。パラレル ポート - これはまだ Windows の制限の対象です。

オプションは、正確に何をしたいかによって少し異なります。いくつかの可能なオプション:

  • ハードウェアにアクセスするアセンブリをいじりたいだけで、実際に物理ハードウェアにアクセスする必要がない場合は、少なくともいくつかのハードウェアをエミュレートし、このエミュレートされたハードウェアでのアセンブリ操作の結果を表示するエミュレータを見つけることができます。 .
  • Windows 環境でアセンブリを使用して物理ハードウェアにアクセスする場合は、単にエミュレートされたデバイスではなく、Windows ドライバーを使用してコマンドを物理ハードウェアに渡すエミュレーターがあるかどうかを確認する必要があります。
  • Windows 環境外でアセンブリを使用して物理ハードウェアにアクセスする場合は、アセンブリ コードがハードウェアに直接アクセスできるようにする OS またはブートローダーを見つける必要があります。
  • アセンブリである必要がない場合は、他のオプションを利用できます (これは、私が過去に Windows 環境でパラレル ポートをいじったときに行った方法です)。
于 2013-02-09T06:43:39.830 に答える