VB内嵌汇编的模块示例
0 Reply , Posted in 程序代码 on 2017 08, 2017
VB内嵌汇编的模块示例,利用该模块可以在VB中直接编写汇编代码,格式和汇编基本一致,
可以在IDE环境中运行,实现方式还是跟网上大部分内嵌汇 编的方法一样,调用CallWindowProc
函数来运行,本模块是在运行的过程中解析指令的,所以可以在IDE环境中运行,支持几乎所有的
X86指令
(当然,特权指令即使写了也执行不了),以及寻址方式,可以在VB中顺便学习一下汇编
下面是一段利用本模块查询CPU是否可以执行CPUID指令的代码,来演示该模块的基本格式:
VBScript code
AsmBegin '汇编代码开始
'如果程序可以改变EFLAGE的第21位,那么就可以执行CPUID指令
PUSHFD '将扩展标志压入堆栈
POP EAX '然后弹出到EAX
MOV ECX, EAX '转移到ECX中
XOR_ EAX, &H200000 '改变第21位 由于XOR指令与VB中的XOR关键字重名,所以在后面加了下划线
PUSH EAX '改变后压入堆栈
POPFD '再弹出到标志寄存器
PUSHFD '再压入堆栈
POP EAX
XOR_ EAX, ECX '检查第21位是否为1,如果是,就说明可以执行CPUID
JZ 2, True '后面的True是可选参数,改变了JZ原来的定义,不是跳到特定的地址,而是往前或往后跳转多少字节
'默认该参数为False,还是按照原来的定义
'可以执行
CPUID
'前面的JZ实际是跳到这里来了,2是中间的指令长度
RET '返回到主程序
AsmEnd '结束汇编并运行代码,如果传入可选参数False,则不执行代码
源码示例:本地下载