为什么不能访问相同段内的数据(有例子)

wfh_178 2011-02-25 08:54:11
上代码:


[SECTION MyGate]
BITS 32
ALIGN 32
start_gate:
inc byte [teststr]
jmp $
teststr db "test"
end_gate:



上面的代码处于ring0,从ring3的段跳入,TSS应该准备好了

但执行到inc byte[teststr]引发异常,求原因?
...全文
82 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Areslee 2011-02-28
  • 打赏
  • 举报
回复
DS的值设置正确了吗?
要取中断号很简单啊。。。。。。查PIC可以知道是不是硬中断,然后检查返回地址处的代码就可以确定是软中断还是异常了
MSOKD 2011-02-25
  • 打赏
  • 举报
回复
可以告诉我你这些r0,r3代码的写法是看那些书的吗,现在我只看了老罗的书感觉还有好多东西都不懂,
wfh_178 2011-02-25
  • 打赏
  • 举报
回复
但是我在进入ring3之前的ring0段访问这块数据段都是没有问题的

我也试图把上面的代码改为mov al,byte [teststr],也是引发异常
zara 2011-02-25
  • 打赏
  • 举报
回复
代码段,往往是“读取+执行”权限,没有“写入”权限,所以就异常了。根据你的编译语法设置,将这个段加入 Writable 权限再试试?
wfh_178 2011-02-25
  • 打赏
  • 举报
回复
实在找不到原因,如果想在中断函数里面取得中断号, 如何做呢?这样至少知道是个什么样子的异常

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧