2013-02-08 35 views
1


我已經學會了一些彙編代碼,並且還了解到在互聯網上沒有那麼多好的教程。我想知道發送信號到某些設備
前。並行端口,USB(可能)
我想知道是否有任何代碼可以分享給我帶來正確的方向。如果你不知道信號,我的意思是發出電壓。


因此,總結一下,我想知道如何與裝配的某些端口進行交互

我目前使用DosBox運行程序集,並使用平面彙編程序進行編程。這是所有在窗口中運行8

由於提前,36redsoxfan程序集I/O編程

+0

in xx yy,out xx? – 2013-02-08 23:22:02

回答

1

我不是專家FASM ......但是,根據這個帖子...可能會或可能不會對FASM ...

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

設置BIOS爲雙向並行端口模式(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 
+0

謝謝:D我會試試看,並告訴你它是否有效 – 36redsoxfan 2013-02-08 23:29:10

+0

請做!我會很有興趣知道! – PGallagher 2013-02-08 23:29:46

+0

它不適用於我,因爲我得到了錯誤'Base Parallel is undefined'。我想我只是使用C/C++,因爲無論如何,訪問 – 36redsoxfan 2013-02-08 23:35:32

0

這是寫正確的位來使用和出正確的端口的所有問題,因爲已經說明。最大的問題將是,如果你在Windows系統下以用戶模式運行,你將不會有足夠的權限讓你這樣做 - 你需要作爲內核模式驅動程序運行(即使你是可能會調用OS提供的接口,而不是執行彙編級硬件訪問)。我自己並沒有使用DosBox,但通常這樣的模擬器只會模擬訪問底層硬件 - 因此它可能允許您寫入模擬並行端口,但這實際上並不會改變電壓級別你的硬件並行端口 - 這仍然受到Windows的限制..

你的選擇然後取決於你想要做什麼。一些可能的選項:

  • 如果你只是想玩弄裝配訪問硬件,但不需要實際上訪問物理硬件,那麼你也許可以找到一個模擬器,這將效仿至少一些硬件和向您展示在此仿真硬件上進行裝配操作的結果。
  • 如果您想在Windows環境中使用匯編訪問物理硬件,那麼您可能必須環視四周,看看是否有任何使用Windows驅動程序的模擬器將命令傳遞給物理硬件,而不僅僅是一個仿真設備。
  • 如果你想使用Windows環境以外的程序集來訪問物理硬件,那麼你只需要找到一個OS或引導程序,它允許你的彙編代碼直接訪問硬件。
  • 如果不需要組裝,那麼還有其他選項可用(這是我在過去使用Windows環境中的並行端口時所走過的路徑)。