我正在尝试在 16 位 Turbo Pascal 7 程序(不要问...)中使用高性能计数器,该程序在 WinXP DOS 框中运行。我可以使用内联 $0F、$31 执行 RDTSC 指令,并将 AX 和 DX 的内容设置为看起来合理的值,但我如何访问 EAX、EDX 的上半部分并将结果写入 2 个长字全局变量?
最佳答案
如果我正确阅读了我的文档,那么您可以通过使用操作码的 0x66 前缀从实模式访问 32 位寄存器。因此,内联“$66 $50”应该具有以下效果:它将 EAX 作为 32 位值压入堆栈。然后你只需弹出下半部分和上半部分作为两个正常的(16 位)pop
操作码(你会先得到下半部分)。对于 EDX,请使用“$52”而不是“$50”。
(我没试过这个。)
关于assembly - 在 16 位 Turbo Pascal 中访问高性能计数器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5576070/