以下是代码,使用第三行的注释为CPUID命令执行以后各寄存器的值,执行CPUID后,我将EAX的值赋为EDX的值后,执行比较命令,但是,每次比较结果都是不相等,直接跳转到了noequ执行输出语句。我明明是按照EDX的值为EAX赋的值,为什么比较结果是不相等呢?
- Assembly code
mov eax,00000001hcpuidmov eax,0BFEBFBFFh ;eax=00000F41 ebx=00010800 ecx=0000441d edx=BFEBFBFF cmp eax,edxjne noequmov ax,BootMessagecall DispStrjmp yesequnoequ:mov ax,woqucall DispStryesequ:mov ax,0
------解决方案--------------------------------------------------------
int 21h是dos服务,但你的程序是mbr,那个时候dos还没装载所以不能用
你可以用bios的int 10h服务显示东西