扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
VB 我不熟,下面是用汇编写的,我运行过可以的。
在巨鹿等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供网站设计制作、成都网站制作 网站设计制作定制网站开发,公司网站建设,企业网站建设,品牌网站制作,网络营销推广,外贸网站制作,巨鹿网站建设费用合理。
//--------------------------------
.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
//-------------------------------------------------------
程序确实可以执行,输出CPU的ID等信息。
注意:DOS下或MS-DOS下使用。
vb:
微软研发的(Visual Basic)是一种工具,用的语言是Basic
Basic是比尔盖兹发家致富的一大工具
主要用来做桌面程序,C/S系统
后来因为Delphi的冲击,被强占一部分市场
VB.net:
现在有了.NET : Microsoft Visual .NET
最新出了2005版(2007出的)
微软用来抗衡Java的新产品
主要市场是企业级开发,和SUN的java ee竞争尤为劲烈
在企业级开发里,基本上是java ee和.net平分秋色,其他的靠边站
在C/S B/S里表色都还算不错
用的语言有Basic c++
不过,目前在.NET平台里最流行的还是C#语言的开发
ASP.net winform,ADO.net技术都是使用 c#
C:经久不衰的语言
主要应用在嵌入式编程,硬件驱动程序设计中
说白了是计算机底层的编程设计
优点是可以嵌入汇编,可以直接与硬件打交道,做底层开发
缺点是在企业级开发中,几乎无用武之地
c++ :我非常钦慕的语言,又ATT的贝尔实验室研发
主要开发工具是微软的Visual C++和Borload的BCB(Borload C++ Builder)
优点在于含有大量的库,如MFC,可直接调用windows库函数干很多事情
其中的消息处理机制令我感觉尤为经典
缺点是,要想精通真不容易
主要领域一是做桌面程序,像QQ,迅雷这种桌面软件
领域二是做游戏后台开发,大部分游戏(包括魔兽等)后台语言就是使用C++
C# :
C# 与 C++ 比较的话,最重要的特性就是 C# 是一种完全面向对象的语言,而 C++ 不是,另外 C# 是基于 IL 中间语言和 .NET Framework CLR 的,在可移植性,可维护性 和强壮性都比 C++ 有很大的改进
C# 的设计目标是用来开发快速稳定可扩展的应用程序,当然也可以通过 Interop 和 Pinvoke 完成一些底层操作,但是对于一些和底层系统相关很紧密的程序(譬如说驱动程序),还是建议用 C++ 来写
其实在VB中是不能直接使用汇编语言的,但是可以采用变通的方法,将汇编语言编译成二进制代码后,就可以在VB中使用了。
下面的代码以二进制代码的方式实现了无符号长整数的位移操作,因为VB不支持无符号长整数,要实现相同的功能比较麻烦而且效率低,要用汇编语言就简单多了。
Option
Explicit
Private
Declare
Function
CallWindowProc
Lib
"user32"
Alias
"CallWindowProcA"
(ByVal
lpPrevWndFunc
As
Long,
ByVal
hWnd
As
Long,
ByVal
Msg
As
Long,
ByVal
wParam
As
Long,
ByVal
lParam
As
Long)
As
Long
Private
Sub
Form_Load()
bin(0)
=
H824448B
bin(1)
=
H448B088B
bin(2)
=
H108B0424
bin(3)
=
H1089EAD3
bin(4)
=
H10C2C033
bin(5)
=
H90909000
a
=
HFFFFFFFF
b
=
8
CallWindowProc
VarPtr(bin(0)),
VarPtr(a),
VarPtr(b),
0,
Debug.Print
Hex(a)
End
Sub
这段代码执行了a=a8这样一个操作
其中
bin(0)
=
H824448B
bin(1)
=
H448B088B
bin(2)
=
H108B0424
bin(3)
=
H1089EAD3
bin(4)
=
H10C2C033
bin(5)
=
H90909000
是下面的C++代码编译后的二进制代码
long
CALLBACK
a_lm(HWND
a,
UINT
b,
UINT
c,
UINT
d)
{
(*(UINT*)a)=(*(UINT*)b);
return
0;
}
其对应的汇编语言如下
mov
eax,dword
ptr
[esp+8]
mov
ecx,dword
ptr
[eax]
mov
eax,dword
ptr
[esp+4]
mov
edx,dword
ptr
[eax]
shr
edx,cl
mov
dword
ptr
[eax],edx
xor
eax,eax
ret
10h
nop
nop
nop
用long
CALLBACK
a_lm(HWND
a,
UINT
b,
UINT
c,
UINT
d)这种形式,就可以直接用CallWindowProc来调用。
以上就是在VB中使用汇编(二进制代码)的一种方法,实际上用起来还是比较麻烦的,需要编译后在可执行文件中将代码接取出来
.Net语言是建立在FrameWork的基础上的,对于编译过的文件而言,都是使用的类汇编中间型语言了,而与什么语言编写已经没有关系了。所以只要是.Net语言编写的DLL,可以在.Net语言间任意调用。
汇编语言源程序是用汇编语言编写的。高级语言源程序是用C语言、C++、Java、C#、VB.NET等高级语言编写的。源程序经过汇编或编译后会生成中间代码或二进制代码,由运行时解释执行或直接执行。
编程方法:VB.NET编程语言是一种真正的面向对象编程语言(VB4-VB6
只能称为基于对象而不是面向对象,最明显的特征就是
VB4-VB6
都不支持类的继承),和传统
Visual
Basic
并不完全兼容。
运行机制:解释语言,就是他的程序是假的,只是一个代码包,还需要系统里面一个程序来读取运行,这就是VB效率不高的原因,还有就是为什么经常要用到运行库的原因
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流