精品一区二区中文在线,无遮挡h肉动漫在线观看,国产99视频精品免视看9,成全免费高清大全

實現在Windows下直接讀寫內存的方法

時間:2023-05-01 08:05:50 計算機論文 我要投稿
  • 相關推薦

實現在Windows下直接讀寫內存的方法

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

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

表1

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

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

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

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

; MEMORY.DEF 模塊定義文件

NAME

Memory

DESCRIPTION'demonstrate an intergrated menu'

EXETYPEWINDOWS

STUB'WINSTUB.EXE'

CODEPRELOAD MOVEABLE DISCARDABLE

DATAPRELOAD MOVEABLE MULTIPLE

HEAPSIZE1024

STACKSIZE8192

EXPORTSWndProc

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

MEMORY.RC

直接讀寫內存的資源定義文件

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

#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區域[&R]"

BEGIN

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

IDM-TIME

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

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

END

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

IDM-EXIT

END

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

MEMORY.H

直接讀寫內存的頭文件

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

#define IDM-INT03H 101

#d

[1] [2] [3] 

【實現在Windows下直接讀寫內存的方法】相關文章:

語文讀寫學習方法11-01

內存·什么是內存電壓04-26

教育隨筆:讀寫結合的寫作教學方法05-01

精細直接積分法的積分方法選擇05-01

一種直接基于位移的抗震設計方法04-29

錯覺性結合現象研究的方法:對注意的直接操縱05-02

什么是內存04-26

直接04-29

直接推導攝動運動方程的一種方法05-01

從全站儀內存數據到AutoCAD圖形的轉換方法探討04-28