vb.net只要能調(diào)用API函數(shù)CallWindowProc就可以。
網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)!專注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、重慶小程序開發(fā)公司、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了伍家崗免費(fèi)建站歡迎大家使用!
匯編碼用Byte或Long數(shù)組儲(chǔ)存,如果下標(biāo)為0,那么你就可以:
Call CallWindowProc(數(shù)組(0),0,0,0,0)
然后把4個(gè)0 POP出去,中間是你要執(zhí)行的匯編碼,匯編碼最后是
ret等返回的。
VB?我不熟,下面是用匯編寫的,我運(yùn)行過可以的。
//--------------------------------
.model?small
.586
.stack
.code
idstring?db?49?dup('$')
start:
mov?ax,@code
mov?ds,ax
lea?di,idstring
mov?eax,80000002h
cpuid
mov?dword?ptr?[di],eax
mov?dword?ptr?[di+4],ebx
mov?dword?ptr?[di+8],ecx
mov?dword?ptr?[di+12],edx
mov?eax,80000003h
cpuid
mov?dword?ptr?[di+16],eax
mov?dword?ptr?[di+20],ebx
mov?dword?ptr?[di+24],ecx
mov?dword?ptr?[di+28],edx
mov?eax,80000004h
cpuid
mov?dword?ptr?[di+32],eax
mov?dword?ptr?[di+36],ebx
mov?dword?ptr?[di+40],ecx
mov?dword?ptr?[di+44],edx
mov?ah,09h
lea?dx,idstring
int?21h
mov?ah,4ch
int?21h
end?start
//-------------------------------------------------------
程序確實(shí)可以執(zhí)行,輸出CPU的ID等信息。
注意:DOS下或MS-DOS下使用。
這是典型對(duì).net構(gòu)架不理解造成的!
只要是.net編程,一定使用的是.net類庫(kù),必須是同運(yùn)行版本的.net支持方可運(yùn)行。而所謂的vb.net只是說(shuō)編程的語(yǔ)言層使用的是vb語(yǔ)言而已。該語(yǔ)言在.net構(gòu)架下被編譯成為IL語(yǔ)言(MSIL,嚴(yán)格說(shuō)來(lái)是IL的一個(gè)子集)。而上層的語(yǔ)言只是產(chǎn)生軟件時(shí)所使用的一個(gè)不同語(yǔ)言規(guī)則而已,與IL已經(jīng)沒有任何相關(guān)性了。上層語(yǔ)言無(wú)論是C#還是VB,甚至是Java(J#)均只適應(yīng)編程人員的一個(gè)策略,與整個(gè)構(gòu)造沒有多大的相關(guān)性。
.net的最終目的就是讓不同的語(yǔ)言編程人員能協(xié)同工作,那么語(yǔ)言在其中的區(qū)別沒有多大了,所有的運(yùn)行核心都是由.net完成的,沒有必須依賴于.net。這是沒有任何疑問的。
vb.net就是.net,只是表示用VB語(yǔ)言人的稱呼,用C#的則稱其為C#.net,但不管是哪種,它是無(wú)法脫離.net的。
第一個(gè)for完成對(duì)delay_time參數(shù)的控制,即共循環(huán)多少次內(nèi)部循環(huán)
第二個(gè)for(內(nèi)部循環(huán)),完成對(duì)j從0到199的控制,共循環(huán)200次。
翻譯成匯編就是:
(R0為傳遞參數(shù))
DELAY:
MOV R1,#200
DJNZ R1,$
DJNZ R0,DELAY
RET