欧美另类日韩中文色综合,天堂va亚洲va欧美va国产,www.av在线播放,大香视频伊人精品75,奇米777888,欧美日本道免费二区三区,中文字幕亚洲综久久2021

推薦文檔列表

實現(xiàn)在Windows下直接讀寫內(nèi)存的方法

時間:2021-10-01 09:54:46 計算機論文 我要投稿

實現(xiàn)在Windows下直接讀寫內(nèi)存的方法

Windows以它一致的圖形用戶界面、完善的內(nèi)存管理等特點,已被廣大用戶所接受,但在Windows下,計算機已運行在保護模式,雖然Windows已提供了一整套的內(nèi)存管理函數(shù),用戶還是不可訪問指定地址的內(nèi)存,致使許多中、小型企業(yè)開發(fā)的計算機插件無法在Windows下使用,因為編寫驅(qū)動程序是很費事的。他們僅希望能直接讀、寫電路板所占的內(nèi)存即可。本文介紹的是在Windows 3.1下,用Borland C 3.1編程環(huán)境,實現(xiàn)用戶對內(nèi)存直接讀寫的方法,讀者不難將它移植到其它編程語言。

1.利用Windows提供的各個段選擇符標號,在C源程序中將選擇符標號說明為外部變量。其對照表如下:

表1

2.利用宏定義MAKELONG(段內(nèi)偏移量,&段選擇符標號)即可得到一個長指針。

3.經(jīng)上述方法得到的指針與C語言中定義的指針是一樣的。

4.如果使用的段是D000H或E000H或其它上位內(nèi)存時,需改動Windows的系統(tǒng)配置文件SYSTEM.INI,利用字符編輯器,在[386Enh]小節(jié)中加入EmmExclude=xxxxyyyy一行,禁止Windows使用這段存儲空間。值xxxx和yyyy是16位內(nèi)存范圍。如開發(fā)的插件占用D000H段的64K,則應(yīng)加入這樣一行:EmmExclude=d000-dfff。

利用這一方法,已使我們自己開發(fā)的電路板(占用D000H段),在Windows控制下成功地運行了?紤]到讀者沒有相應(yīng)的硬件,這里以讀取中斷向量、計算機ROM的制造時間和對DOS用戶通訊區(qū)的讀寫為例,詳見以下程序。對于DOS用戶通訊區(qū)的內(nèi)容,讀者可用DOS的DEBUG程序檢查(D命令)和修改(E命令)。DOS的用戶通訊區(qū)在0040∶00F0H處開始,共計16個字節(jié)。在修改時請注意:從0040∶00F0H開始存放可顯示ASCII碼字符串,并以0結(jié)尾。

; MEMORY.DEF 模塊定義文件

NAME

Memory

DESCRIPTION'demonstrate an intergrated menu'

EXETYPEWINDOWS

STUB'WINSTUB.EXE'

CODEPRELOAD MOVEABLE DISCARDABLE

DATAPRELOAD MOVEABLE MULTIPLE

HEAPSIZE1024

STACKSIZE8192

EXPORTSWndProc

/*----------

MEMORY.RC

直接讀寫內(nèi)存的資源定義文件

----------*/

#include "memory.h"

MemoryMenu MENU

BEGIN

POPUP"取中斷向量[&I]"

BEGIN

MENUITEM "int 0&3h", IDM-INT03H

MENUITEM "int &10h", IDM-INT10H

MENUITEM "int &21h", IDM-INT21H

END

POPUP "ROM區(qū)域[&R]"

BEGIN

MENUITEM "制造時間[&T]",

IDM-TIME

MENUITEM "取用戶通訊區(qū)[&U]", IDM-READ

MENUITEM "存用戶通訊區(qū)[&S]", IDM-WRITE

END

MENUITEM "\a退出[&X]",

IDM-EXIT

END

/*----------

MEMORY.H

直接讀寫內(nèi)存的頭文件

----------*/

#define IDM-INT03H 101

#d

[1] [2] [3]