无忧启动论坛

 找回密码
 注册
搜索

求解grldr内置菜单中0x82b9含义

查看数: 4149 | 评论数: 11 | 收藏 1
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2021-8-4 16:17

正文摘要:

本帖最后由 201287zr 于 2021-8-4 16:21 编辑 最近正在学习grub4dos,看到grldr内置菜单中有这么一句不知什么作用: 不知chenall大神、不点大师、yaya大佬,可否指点一二,能否在更新说明中完善一下相关 ...

回复

captain_g 发表于 2021-8-5 08:30:13
就是 和 0xff 进行“按位与”运算
看结果为多少
plusv 发表于 2021-8-4 18:06:38
201287zr 发表于 2021-8-4 17:57
谢谢指点,我再实际操作了下,是这样的:
calc *0x82b8=0x1FF3F803F
calc *0x82b9=0x1FF3F80

我很久没用 Grub4Dos 了,

如果有类似 Debug 的 Dump 语法就很容易懂了.


201287zr 发表于 2021-8-4 17:57:42
plusv 发表于 2021-8-4 17:36
>我觉得0x82b9,如实际值为0x1FF3F803F

你不可这样解读,

谢谢指点,我再实际操作了下,是这样的:
calc *0x82b8=0x1FF3F803F
calc *0x82b9=0x1FF3F80
calc *0x82ba=0x1FF3F
calc *0x82bb=0x1FF
calc *0x82bc=0x1
只能看出具体含意的脉络,大概的意思该是差不多了,但0x1FF特别是0xFF的指向不明,一般磁头数为1是合理的,不会是255。FF应有特殊含义吧,而5个地址的字节数不一样,是程序内存就是这样吗?没有固定字节大小吗?我不懂编程,不知道是不是bug。

点评

我很久没用 Grub4Dos 了, 如果有类似 Debug 的 Dump 语法就很容易懂了. [attachimg]484450[/attachimg]  详情 回复 发表于 2021-8-4 18:06
plusv 发表于 2021-8-4 17:36:51
本帖最后由 plusv 于 2021-8-4 17:45 编辑
201287zr 发表于 2021-8-4 17:33
这样理解好像不对,以上面为例,*0x82b9=0x1FF3F80,我又试了下*0x82b8=0x1FF3F803F
对比发现,0x80代表 ...

>我觉得0x82b9,如实际值为0x1FF3F803F

你不可这样解读,
你要解读 1 个字节.

0x82b9=3F.

PS:
>"我觉得0x82b9,如实际值为0x1FF3F803F"
意义是
0x82b8=?? 磁头数
0x82b9=3F 每磁道扇区数
0x82ba=80 真正驱动器号
0x82bb=3F 最大每磁道扇区数(低位)
0x82bc=FF
0x82bd=01


点评

谢谢指点,我再实际操作了下,是这样的: calc *0x82b8=0x1FF3F803F calc *0x82b9=0x1FF3F80 calc *0x82ba=0x1FF3F calc *0x82bb=0x1FF calc *0x82bc=0x1 只能看出具体含意的脉络,大概的意思该是差不多了,但  详情 回复 发表于 2021-8-4 17:57
201287zr 发表于 2021-8-4 17:33:04
本帖最后由 201287zr 于 2021-8-4 17:39 编辑
plusv 发表于 2021-8-4 16:56
依你的讯息,
用直觉猜的.

这样理解好像不对,以上面为例,*0x82b9=0x1FF3F80,我又试了下*0x82b8=0x1FF3F803F
对比发现,0x80代表的应是“真正驱动器号”,那高位的0x1FF3F,应分别代表“磁头数”、“每磁道扇区数”,但发现0x82B8是4字节,实际操作中得出的0x1FF3F803F明显是5个字节,对比后得出0x1FF3F803F:3F代表“最大每磁道扇区数”、“每磁道扇区数”?那高位的0x1FF是什么鬼?0x1代表的是磁头数,还多个字节出来,还是0x82b8不是4个字节?搞不懂
综上分析,我觉得0x82b9,如实际值为0x1FF3F803F,代表的意思可能是“0x1磁头数、0x3F每磁道扇区数、0x80真正驱动器号、0x3F最大每磁道扇区数(低位)”,但多出来的字节FF不知怎么理解。

点评

>我觉得0x82b9,如实际值为0x1FF3F803F 你不可这样解读, 你要解读 1 个字节. 0x82b9=3F.  详情 回复 发表于 2021-8-4 17:36
plusv 发表于 2021-8-4 17:32:50
201287zr 发表于 2021-8-4 17:23
这样理解好像不对,以上面为例,*0x82b9=0x1FF3F80,我又试了下*0x82b8=0x1FF3F803F
对比发现,0x80代表 ...

我是依你的讯息解读的.

如果 格式 是 4 字节就不会得到 5 字节,
你要依格式取得每个字节的意思.

另外
*0x82b9=0x1FF3F80
*0x82b8=0x1FF3F803F
*0x82b8=3F
*0x82b9=80
201287zr 发表于 2021-8-4 17:30:07
plusv 发表于 2021-8-4 16:56
依你的讯息,
用直觉猜的.

这样理解好像不对,以上面为例,*0x82b9=0x1FF3F80,我又试了下*0x82b8=0x1FF3F803F
对比发现,0x80代表的应是“真正驱动器号”,那高位的0x1FF3F,应分别代表“磁头数”、“每磁道扇区数”,但发现0x82B8是4字节,实际操作中得出的0x1FF3F803F明显是5个字节,对比后得出0x1FF3F803F:3F代表“每磁道扇区数”、“FF是磁头数”?那高位的0x1是什么鬼?
201287zr 发表于 2021-8-4 17:23:13
plusv 发表于 2021-8-4 16:56
依你的讯息,
用直觉猜的.

这样理解好像不对,以上面为例,*0x82b9=0x1FF3F80,我又试了下*0x82b8=0x1FF3F803F
对比发现,0x80代表的应是“真正驱动器号”,那高位的0x1FF3F,应分别代表“磁头数”、“每磁道扇区数”,但发现0x82B8是4字节,实际操作中得出的0x1FF3F803F明显是5个字节,对比后得出0x1FF3F803F:3F代表“每磁道扇区数”、“FF是磁头数”?那高位的0x1是什么鬼?

点评

我是依你的讯息解读的. 如果 格式 是 4 字节就不会得到 5 字节, 你要依格式取得每个字节的意思. 另外 *0x82b9=0x1FF3F80 *0x82b8=0x1FF3F803F *0x82b8=3F *0x82b9=80  详情 回复 发表于 2021-8-4 17:32
201287zr 发表于 2021-8-4 17:01:30
2011yaya2007777 发表于 2021-8-4 16:49
0x82b9是ud启动时的盘符。bios识别为硬盘时,为0x80 。识别为软盘时,为0。

感谢yaya大佬 回复。ud启动时的盘符是什么意思?以上面的为例,*0x82b9=335051532(16进制为0x1FF3F80),那高位0x1FF3F有没有具体含义呢(代表什么)?
plusv 发表于 2021-8-4 16:56:29
依你的讯息,
用直觉猜的.

0000:82B8    4字节(即双字) UD分区:磁头数,每磁道扇区数,真正驱动器号,最大每磁道扇区数(低位)
0000:82A0    4字节(即双字) 当前根所在的驱动器(current root drive)

*0x82A0=*0x82b9&0xff
当前根所在的驱动器=0x80=hd0

82B8 4字节
表示:
82B8 磁头数
82B9 每磁道扇区数
82BA 真正驱动器号
82BB 最大每磁道扇区数(低位)


点评

这样理解好像不对,以上面为例,*0x82b9=0x1FF3F80,我又试了下*0x82b8=0x1FF3F803F 对比发现,0x80代表的应是“真正驱动器号”,那高位的0x1FF3F,应分别代表“磁头数”、“每磁道扇区数”,但发现0x82B8是4字节,  详情 回复 发表于 2021-8-4 17:33
2011yaya2007777 发表于 2021-8-4 16:49:31
0x82b9是ud启动时的盘符。bios识别为硬盘时,为0x80 。识别为软盘时,为0。

点评

感谢yaya大佬 回复。“ud启动时的盘符”是什么意思?以上面的为例,*0x82b9=335051532(16进制为0x1FF3F80),那高位0x1FF3F有没有具体含义呢(代表什么)?  详情 回复 发表于 2021-8-4 17:01

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-5-4 18:04

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表