关于vista引导代码的机器码。

zhgwbzhd 2009-06-09 09:51:03
vista的引导扇区的代码。

0000:EB 52

0054:FA //CLI
0055:33C0 //XOR AX,AX
0057:8ED0 //MOV SS,AX [SS=0]
0059:BC007C //MOV SP,7C00 [SP=7C00]
005C:FB //STI
005D:68C007 //PUSH 07C0 这个应该是这个意思吧
0060:1F //POP DS DS=07C0
0061:1E //PUSH DS 下面要跳的段基址
0062:686600 //PUSH 0066 下面要跳的偏移
0065:CB //RETF 跳到07C0:0066 也就是 0000:7C66 处执行

由于MBR代码会读该扇区到 0000:7C00,也就是接着执行这里
可是下面的代码如何解释呢??
0066:88 16 0E 00 66 81 3E 03 00 4E 54 46 53

如果解释为
0066:88 16 0E 00 //MOV BYTE [000E],DL 可是上面还没有给DL赋值呢啊。

谢谢高手指点啊。
...全文
120 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhgwbzhd 2009-06-15
  • 打赏
  • 举报
回复
谢谢!007.
这个中断确实是一个测试作用。
十分感谢你提供的资料。

我从google上输入int1A确没有找到。汗。。。。
zhgwbzhd 2009-06-15
  • 打赏
  • 举报
回复
终于找到了 微软的 官方资料了。
真不容易啊。

http://www.microsoft.com/whdc/system/platform/hwsecurity/BitLockerReq.mspx

右边的 “BitLockerReq.doc”文档中


BIOS 92.12.5
The TCG BIOS Interface must implement the TCG_StatusCheck function.
The input parameters must be interpreted as follows:
• AX = BB00h.
• All other registers are ignored.

The TCG_StatusCheck function has the following return requirements:
• EAX = 0h or EAX [31:16] = TCG_INTERFACE_SHUTDOWN and EAX [15:0] = TCG_PC_TPM_ERROR if the interface has been shut down.
• EBX = 41504354h.
• ECX = version (described below).
• EDX = feature flags (currently 0).
• ESI = 32-bit physical address of the TCG Event log. This must not be zero.
• EDI = 32-bit physical address of the first byte of the last event of the log.
• CF = 0.
• CS, DS, ES, SS, ESP and EBP must be preserved.

The version (ECX) must indicate a TPM version of at least 1.2. The fields are as follows:
• Bits 7:0(CL)=TCG BIOS Minor Version (02h for v1.2).
• Bits 15:8(CH)=TCG BIOS Major Version (01h for v1.0).
• Bits 23:16=Errata Level (00h for v1.2, 01h for v1.21).
• Bits 31:24=Reserved, must be 0.

A BIOS that wants to explicitly indicate that the TCG BIOS Interface is not supported should ensure that the following return conditions are met:
• EAX is non-zero.
• EBX is not explicitly set to 41504354h.
• CF is set.

Suggested verification metrics:
• Call function with EAX = 1234BB00h, EBX = AABBCCDDh, ECX = FFFF0000h and verify on return registers are as expected.
• Verify ECX [15:0] returns a version >= 0x0102h (according to current TCG Specification version).
• Verify ECX [23:16] returns correct errata version, 0 or 1 if ECX [15:0] == 0x0102h. Verify ECX [23:16] is not FFh.
• Verify ECX [31:24] returns 0h.
• Verify function returns correct EAX value after interface has been shut down.


高兴中 。。。。。。。。。。。。。。
pla_007 2009-06-12
  • 打赏
  • 举报
回复
刚才google了一下,找到一些资料,是做一个“TCG_STATUS”的检测。
+/*
+ * BIOS call "INT 1Ah, (AH)=BBh,(AL)=00h" TCG_StatusCheck
+ * Call with %ah = 0xBB
+ * %al = 0x00
+ *
+ * Return: %eax = TCG_STATUS
+ * %ebx = 'TCPA'
+ *
+ * Ref:
+ * TCG PC Client Specific Implementation Specification for Conventional BIOS v1.2,
+ * Section 12.5 (page 85)
+ */
+tcg_statuscheck:
+ movw $0xbb00, %ax /* TCG_StatusCheck */
+ int $0x1a
+ test %eax, %eax
+ jnz tcg_end /* if eax != 0 */


如还想知道更多的材料,自己要花时间去看一下,具体可以参看以下网站:

http://sourceforge.jp/projects/openpts/wiki/PlatformBiosInt1AhInfo

http://www.trustedcomputinggroup.org/


zhgwbzhd 2009-06-12
  • 打赏
  • 举报
回复
恩第一个问题我基本上明白了。

是因为前面要读取该启动扇区到某个指定的位置。

所以要用到 INT13,并且已经把 DL 的值设定为硬盘了。

所以这里开始也没有改变DL 的值,所以直接就可以用了。

如果是MBR程序,估计就不会这样了。

第2个问题。

关于 INT1A 的 ax=bb00的中断

现在还没有搞明白。
hz_yck 2009-06-10
  • 打赏
  • 举报
回复
dl 可能是中断的返回值吧

int 1a, ax = bb00我也没找到
zhgwbzhd 2009-06-09
  • 打赏
  • 举报
回复
另外啊。
怎么vista用到了一个 INT1A 的 ax=bb00的中断??
这个是干嘛的??

没找到这个中断的作用啊!

谢谢!
内容概要:本文围绕“考虑用户侧柔性负荷的社区综合能源系统优化调度”展开研究,基于Matlab代码实现,构建了涵盖电、热等多种能源形式耦合的社区级综合能源系统模型。研究重点在于将用户侧具有可调节特性的柔性负荷纳入优化框架,通过建立以经济性和低碳性为目标的优化调度模型,结合YALMIP等优化工具调用Cplex求解器进行求解,在保障用户用能需求的前提下,提升系统对可再生能源的消纳能力,降低综合用能成本,并增强系统运行的灵活性与智能化水平。该研究为社区能源系统的高效、可持续运行提供了可复现的技术方案与仿真验证路径。; 适合人群:具备电力系统、能源系统等相关专业知识基础,熟悉Matlab编程环境与基本优化建模方法的研究生、科研人员及从事能源领域技术研发的工程技术人员。; 使用场景及目标:①用于高校及科研机构开展综合能源系统、需求侧响应、柔性负荷建模等方向的课题研究与算法验证;②为城市社区、产业园区等实际场景的能源管理系统开发提供优化算法支持与案例参考;③帮助研究人员深入掌握多能流协同优化、YALMIP/Cplex应用、日前调度建模及柔性负荷响应机制的代码实现方法。; 阅读建议:建议读者结合提供的Matlab代码实例,逐步搭建并调试仿真模型,重点关注目标函数的设计逻辑、各类物理约束(如功率平衡、设备出力、储能动态等)的数学表达以及柔性负荷参与调度的建模方式,可进一步拓展至不确定性优化、多时间尺度调度等进阶场景进行深化研究。

21,500

社区成员

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

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