milewang
驱动牛犊
驱动牛犊
  • 注册日期2004-11-11
  • 最后登录2005-06-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1371回复:11

高手请进!

楼主#
更多 发布于:2005-01-27 10:23
本人想读取某一特定物理地址的内存,如0x1b,使用内联汇编,下面的做法编译时报错,做法如下:
          unsigned int base;

_asm{
PUSH DS
PUSH EBX
XOR DS,DS
MOV EBX, 1BH
MOV DWORD PTR base, DS:[EBX]
POP EBX
POP DS
}
出错提示信息:
Compiling - a.cpp for i386
a.cpp(95) : error C2415: improper operand type
a.cpp(97) : error C2415: improper operand type
BUILD: Compile errors: not linking d:\work\process directory
BUILD: Done
95行的位置是MOV EBX, 1BH

最新喜欢:

aasa2aasa2
milewang
驱动牛犊
驱动牛犊
  • 注册日期2004-11-11
  • 最后登录2005-06-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-01-27 10:26
做法哪里出问题了,高手请指正!!
fslife
驱动大牛
驱动大牛
  • 注册日期2004-06-07
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望49点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-01-27 11:08
操作类型不匹配,就这两行:
XOR DS,DS
MOV DWORD PTR base, DS:[EBX]

注销了就没错误了,你看看能不能用别的寄存器来调整一下。
在交流中学习。。。
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
地板#
发布于:2005-01-27 11:45
_asm{
PUSH DS
PUSH EBX
XOR EBX,EBX
MOV DS,BX
MOV EBX, 1BH
MOV DWORD PTR base, DS:[EBX]
POP EBX
POP DS
}
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-01-27 11:56
 MOV DWORD PTR base, DS:[EBX]
改成
MOV  base, DWORD PTR DS:[EBX]
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-01-27 12:05
_asm{
PUSH DS
PUSH EBX
XOR EBX,EBX
MOV DS,BX
MOV EBX, 1BH
MOV DWORD PTR base, DS:[EBX]
POP EBX
POP DS
}
 

对了,我粗心,毕竟是大牢,对了XOR DS, DS无这条指令。8086汇编上都是,xor ax, ax
mov ds,ax
没错
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
milewang
驱动牛犊
驱动牛犊
  • 注册日期2004-11-11
  • 最后登录2005-06-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2005-01-27 13:51
谢谢各位,但是我就是想访问物理地址是0x1b内存,该怎么做
milewang
驱动牛犊
驱动牛犊
  • 注册日期2004-11-11
  • 最后登录2005-06-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2005-01-27 13:55
_asm{
push ds
push eax
xor eax,eax
mov ds,eax
mov eax,27
mov base,eax
pop eax
pop ds
}
还是不对
milewang
驱动牛犊
驱动牛犊
  • 注册日期2004-11-11
  • 最后登录2005-06-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2005-01-27 13:59
好了,谢谢各位,都有分
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
9楼#
发布于:2005-01-27 15:41
确保你在DOS的16位下
USHORT base;
_asm{
push ds
push ax
xor ax,ax
mov ds,ax
mov ax,27
mov base, word ptr ds:[ax]
pop ax
pop ds
}
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2005-01-27 16:04
确保你在DOS的16位下
USHORT base;
_asm{
push ds
push ax
xor ax,ax
mov ds,ax
mov ax,27
mov base, word ptr ds:[ax]
pop ax
pop ds
}
 

Windows下需要找一个空闲段描述符,自己加入一个段描述符,直接作线性地址一对一映射到物理地址,然后将该描述符对应的索引装入段寄存器,就可以访问了。
离题的问题:
wowocock,看来您也是从DOS年代过来的,现在年纪几何?说不定,咱俩差不多
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
milewang
驱动牛犊
驱动牛犊
  • 注册日期2004-11-11
  • 最后登录2005-06-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2005-02-17 10:49
如果在WINDOWS下用驱动访问物理地址是0x1b的内存,该如何做,各位高手请赐教,不胜感激!
游客

返回顶部