看到有些代碼使用inportb、outportb函數(shù),其中portid這個參數(shù)直接使用了16進制地址(并且在注釋中指明這個地址是計時器或揚聲器什么的),那請問這個端口地址是如何確定的?直接這樣使用……難道所有的計算機都是這個值?制定了標準端口地址?硬件決定的?那如何自己查詢每個端口地址?難道都得查那個什么表?那表是怎么出來的?windows中“附件”“系統(tǒng)信息”查到的值太籠統(tǒng)。小白第一次接觸,要是問得有些幼稚,還請各位高手包涵~
3 回答

明月笑刀無情
TA貢獻1828條經(jīng)驗 獲得超4個贊
題目中,提到了windows,看來樓主所說的計算機,是常用的PC機。
PC機,是80年代初期由 IBM 公司開發(fā)的硬件系統(tǒng),微軟開發(fā)的軟件系統(tǒng)。
PC機內(nèi)部的端口地址,都是 IBM 公司設(shè)計的,并向外公開了這些數(shù)據(jù)(就是樓主說的什么表)。
此后,其它公司相繼開發(fā)了自己品牌的PC機,其中的端口地址,都和 IBM 的相同,這就叫“兼容”機。
目前,常見的各個品牌的兼容 PC 機,其端口地址都是兼容 IBM 的。
如果這些技術(shù)數(shù)據(jù),和 IBM 設(shè)計的不同,就不是兼容機。

一只名叫tom的貓
TA貢獻1906條經(jīng)驗 獲得超3個贊
看具體情況了。
比如串口,匯編中可以直接使用sbuf,計算機上地址一般都是0x3F8或0x2F8,這些都是有規(guī)定的,就是你說的所謂的表。
表是人為規(guī)定的,大家都按照這個標準做就可以了。
做的多了,自然就記住了。

呼喚遠方
TA貢獻1856條經(jīng)驗 獲得超11個贊
inportb、outportb這兩個函數(shù)只能在dos下用,windows nt下不允許直接訪問端口的。
在dos下很多端口都是標準的,是確定的,可以直接用。操作之前你必須事先知道硬件的端口地址。
添加回答
舉報
0/150
提交
取消