2013-02-12 109 views
1

我想創建一個動畫程序集8086,由鍵盤控制,使用Ctrl和左右移位。組裝鍵盤輸入8086

我想看看如何從鍵盤在8086收到輸入,並且不是如何找出按下的鍵是Ctrl或Shift(通常,這是按鍵)。

非常感謝!

+3

什麼操作系統此上運行? – 2013-02-12 09:50:44

+0

Windows 7和8 – Falcon 2013-02-12 16:19:19

回答

1

您確定不想使用左右箭頭鍵嗎?控制和轉移的問題是他們不「返回」一個鍵,他們修改了另一個被按下的鍵。這是在鍵盤中斷處理程序(9,IIRC)中處理的,你可以「鉤住」它。我認爲查看「Bios數據區」會更容易,並觀察中斷處理程序跟蹤控制狀態和切換鍵的位置。在我看來,BDA在40h段。鍵盤狀態標誌在... 17h和18h?不要拿我的話來說這些偏移,查看它。拉爾夫布朗的中斷名單。這一切都假定「8086」的意思,就像......古物。 :)

+0

嗨,謝謝! 這些鍵並不重要,我將如何使用左右箭頭鍵來做到這一點? – Falcon 2013-02-12 16:14:16

0

假設你只在BIOS下運行,可能會發現使用更高級別的BIOS鍵盤中斷更容易 - 用於一般按鍵的int 0x16 AH=0x01,以及用於ctrl/shift等的int 0x16 AH=0x02可能是可能的,儘管存在是一些其他的可能性(包括其他INT 0x16命令和先前曾建議的 - 低級鍵盤int 0x09和BIOS數據區..我強烈推薦第二個Ralf Brown's Interrupt List - 一個很好的資源!

+0

謝謝! INT 0x16啊= 0x02會給我只有標誌,我怎麼會從用戶獲得輸入本身? – Falcon 2013-02-12 16:23:07

+0

您應該能夠從int 0x16 AH = 0x01中查看掃描和/或ASCII碼來告訴您這一點 – Michael 2013-02-12 21:57:37

1

BIOS保存密鑰的16個字母的緩衝區。這意味着如果操作系統是太慢了,每當它讀取下一個按鍵就從緩衝區中讀取。

您可以使用int 16h,將ah設置爲02h,將al設置爲緩衝區中的下一個字符。不過,如果你正在檢查的緩衝區的狀態(是否有鍵)看this.它基本上進入啊02H的更深入

既然你問的是方向鍵,下面是他們的十六進制代碼:

  1. ü爲0x18
  2. d 0x19
  3. 大號0x1B
  4. ř0x1A的