都说汇编有用,可是学了一阵子了,却的确没体会出,用汇编能做什么?
谁能给讲解一下,给举个最有代表性的例子。。。ok??
35 个解决方案
#1
病毒、木马……这些东西,汇编几乎是唯一的选择。
#2
还有破解,嘿嘿
#3
pzou@163.com
其待中。。。。。。。。。。。。。
#4
不要指望用汇编写...
#5
懂得汇编的人写出程序来就是不一样,无论用什么语言,都可以
完全胜任
完全胜任
#6
好像控制洗衣机等的单片机 就得用汇编写吧 当然也可以用机器语言
#7
现在很少有专门用汇编来写程序的,像驱动程序,嵌入式设备的控制程序,也大多不用汇编来写了,但是有些功能(或者叫技巧)式其他任何高级语言不能实现的,比如代码混用,自修改,逐字节解密。。。。,当然这些都是被高级语言程序员嗤之以鼻的非结构化代码
#8
我能想到的似乎只有病毒和加密
#9
单片机中大量的使用到汇编。比如51机,才几十K的内存。
#10
很多啦!!!
自动化控制领域中
比如 数字彩电,现在的洗衣机,冰箱,微波炉,手机,商务通
汽车,导弹,只要CPU采用的是兼容386体系结构就是ASM的天下。
在PC 中很多对速度要求高的场合就会用ASM
在高级语言性能优化中也会采用ASM
人工智能决对使用ASM。
老兄:你也许是学的DOS的ASM 吧!假如你学的是WINASM 就会简单得多啦
而且对你了解WINDOWS写程会有很大的帮助的。即使你不用ASM,它对你学
VB,VC ,DELPHI ,CBUILDER 也有很大的帮助地。
所以我就回头学ASM 啦
现实很残酷学其他语言竞争很激烈,压力大,工资少,容易招裁,三十岁下班。
而学ASM 就好处多多,月薪1万,工作稳定,压力小,80岁下班。
ASM(爱什么) 语言优点,体积小,内存少,速度第一。
缺点:开发难,移植难,调试难,开发时间长。
我批:
开发难: 只要你熟悉它就不难。
移植难: 现在是IBM PC 和INTEL 386 天下 难道你要在苹果机上运行吗?
unix linunix windows dos 只是语法有不同而已
调试难: 使用自动化调式和测试工具会难吗?softic w32dasm ..
开发时间长: 使用ROSE UML 系统设计工具并能自动生成大部分代码,会长吗?
.386
.model flat,stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\user32.inc
includelib \masm32\lib\user32.lib ; calls to functions in user32.lib and kernel32.lib
include \masm32\include\kernel32.inc
includelib \masm32\lib\kernel32.lib
WinMain proto :DWORD,:DWORD,:DWORD,:DWORD
.DATA ; initialized data
ClassName db "SimpleWinClass",0 ; the name of our window class
AppName db "Our First Window",0 ; the name of our window
.DATA? ; Uninitialized data
hInstance HINSTANCE ? ; Instance handle of our program
CommandLine LPSTR ?
.CODE ; Here begins our code
start:
invoke GetModuleHandle, NULL ; get the instance handle of our program.
; Under Win32, hmodule==hinstance mov hInstance,eax
mov hInstance,eax
invoke GetCommandLine ; get the command line. You don't have to call this function IF
; your program doesn't process the command line.
mov CommandLine,eax
invoke WinMain, hInstance,NULL,CommandLine, SW_SHOWDEFAULT ; call the main function
invoke ExitProcess, eax ; quit our program. The exit code is returned in eax from WinMain.
WinMain proc hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow:DWORD
LOCAL wc:WNDCLASSEX ; create local variables on stack
LOCAL msg:MSG
LOCAL hwnd:HWND
mov wc.cbSize,SIZEOF WNDCLASSEX ; fill values in members of wc
mov wc.style, CS_HREDRAW or CS_VREDRAW
mov wc.lpfnWndProc, OFFSET WndProc
mov wc.cbClsExtra,NULL
mov wc.cbWndExtra,NULL
push hInstance
pop wc.hInstance
mov wc.hbrBackground,COLOR_WINDOW+1
mov wc.lpszMenuName,NULL
mov wc.lpszClassName,OFFSET ClassName
invoke LoadIcon,NULL,IDI_APPLICATION
mov wc.hIcon,eax
mov wc.hIconSm,eax
invoke LoadCursor,NULL,IDC_ARROW
mov wc.hCursor,eax
invoke RegisterClassEx, addr wc ; register our window class
invoke CreateWindowEx,NULL,\
ADDR ClassName,\
ADDR AppName,\
WS_OVERLAPPEDWINDOW,\
CW_USEDEFAULT,\
CW_USEDEFAULT,\
CW_USEDEFAULT,\
CW_USEDEFAULT,\
NULL,\
NULL,\
hInst,\
NULL
mov hwnd,eax
invoke ShowWindow, hwnd,CmdShow ; display our window on desktop
invoke UpdateWindow, hwnd ; refresh the client area
.WHILE TRUE ; Enter message loop
invoke GetMessage, ADDR msg,NULL,0,0
.BREAK .IF (!eax)
invoke TranslateMessage, ADDR msg
invoke DispatchMessage, ADDR msg
.ENDW
mov eax,msg.wParam ; return exit code in eax
ret
WinMain endp
WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
.IF uMsg==WM_DESTROY ; if the user closes our window
invoke PostQuitMessage,NULL ; quit our application
.ELSE
invoke DefWindowProc,hWnd,uMsg,wParam,lParam ; Default message processing
ret
.ENDIF
xor eax,eax
ret
WndProc endp
end start
自动化控制领域中
比如 数字彩电,现在的洗衣机,冰箱,微波炉,手机,商务通
汽车,导弹,只要CPU采用的是兼容386体系结构就是ASM的天下。
在PC 中很多对速度要求高的场合就会用ASM
在高级语言性能优化中也会采用ASM
人工智能决对使用ASM。
老兄:你也许是学的DOS的ASM 吧!假如你学的是WINASM 就会简单得多啦
而且对你了解WINDOWS写程会有很大的帮助的。即使你不用ASM,它对你学
VB,VC ,DELPHI ,CBUILDER 也有很大的帮助地。
所以我就回头学ASM 啦
现实很残酷学其他语言竞争很激烈,压力大,工资少,容易招裁,三十岁下班。
而学ASM 就好处多多,月薪1万,工作稳定,压力小,80岁下班。
ASM(爱什么) 语言优点,体积小,内存少,速度第一。
缺点:开发难,移植难,调试难,开发时间长。
我批:
开发难: 只要你熟悉它就不难。
移植难: 现在是IBM PC 和INTEL 386 天下 难道你要在苹果机上运行吗?
unix linunix windows dos 只是语法有不同而已
调试难: 使用自动化调式和测试工具会难吗?softic w32dasm ..
开发时间长: 使用ROSE UML 系统设计工具并能自动生成大部分代码,会长吗?
.386
.model flat,stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\user32.inc
includelib \masm32\lib\user32.lib ; calls to functions in user32.lib and kernel32.lib
include \masm32\include\kernel32.inc
includelib \masm32\lib\kernel32.lib
WinMain proto :DWORD,:DWORD,:DWORD,:DWORD
.DATA ; initialized data
ClassName db "SimpleWinClass",0 ; the name of our window class
AppName db "Our First Window",0 ; the name of our window
.DATA? ; Uninitialized data
hInstance HINSTANCE ? ; Instance handle of our program
CommandLine LPSTR ?
.CODE ; Here begins our code
start:
invoke GetModuleHandle, NULL ; get the instance handle of our program.
; Under Win32, hmodule==hinstance mov hInstance,eax
mov hInstance,eax
invoke GetCommandLine ; get the command line. You don't have to call this function IF
; your program doesn't process the command line.
mov CommandLine,eax
invoke WinMain, hInstance,NULL,CommandLine, SW_SHOWDEFAULT ; call the main function
invoke ExitProcess, eax ; quit our program. The exit code is returned in eax from WinMain.
WinMain proc hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow:DWORD
LOCAL wc:WNDCLASSEX ; create local variables on stack
LOCAL msg:MSG
LOCAL hwnd:HWND
mov wc.cbSize,SIZEOF WNDCLASSEX ; fill values in members of wc
mov wc.style, CS_HREDRAW or CS_VREDRAW
mov wc.lpfnWndProc, OFFSET WndProc
mov wc.cbClsExtra,NULL
mov wc.cbWndExtra,NULL
push hInstance
pop wc.hInstance
mov wc.hbrBackground,COLOR_WINDOW+1
mov wc.lpszMenuName,NULL
mov wc.lpszClassName,OFFSET ClassName
invoke LoadIcon,NULL,IDI_APPLICATION
mov wc.hIcon,eax
mov wc.hIconSm,eax
invoke LoadCursor,NULL,IDC_ARROW
mov wc.hCursor,eax
invoke RegisterClassEx, addr wc ; register our window class
invoke CreateWindowEx,NULL,\
ADDR ClassName,\
ADDR AppName,\
WS_OVERLAPPEDWINDOW,\
CW_USEDEFAULT,\
CW_USEDEFAULT,\
CW_USEDEFAULT,\
CW_USEDEFAULT,\
NULL,\
NULL,\
hInst,\
NULL
mov hwnd,eax
invoke ShowWindow, hwnd,CmdShow ; display our window on desktop
invoke UpdateWindow, hwnd ; refresh the client area
.WHILE TRUE ; Enter message loop
invoke GetMessage, ADDR msg,NULL,0,0
.BREAK .IF (!eax)
invoke TranslateMessage, ADDR msg
invoke DispatchMessage, ADDR msg
.ENDW
mov eax,msg.wParam ; return exit code in eax
ret
WinMain endp
WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
.IF uMsg==WM_DESTROY ; if the user closes our window
invoke PostQuitMessage,NULL ; quit our application
.ELSE
invoke DefWindowProc,hWnd,uMsg,wParam,lParam ; Default message processing
ret
.ENDIF
xor eax,eax
ret
WndProc endp
end start
#11
设计bios程序,呵呵,你不用汇编难道还有其他语言能实现吗?
#12
呵呵:)你不知道现在是越底层的东东越吃香吗???
我也是初学者。一起努力吧!你说汇编能做什么??
汇编能做的东西可多了!比如我门的编译器呀:)还有单片机呀!都是有汇编驱动的!
我也是初学者。一起努力吧!你说汇编能做什么??
汇编能做的东西可多了!比如我门的编译器呀:)还有单片机呀!都是有汇编驱动的!
#13
bios即将可以用C写啦
#14
┏━━━━━━━━━━━━━┓
┃※※※※★★★★★※※※※┃
┃※【终级掠食者—大白鲨】※┃
┃※※※※★★★★★※※※※┃
┗━━━━━━━━━━━━━┛
假如我回答正确了;
在结帐时请整理FAQ;
以便增加我的信誉分
┃※※※※★★★★★※※※※┃
┃※【终级掠食者—大白鲨】※┃
┃※※※※★★★★★※※※※┃
┗━━━━━━━━━━━━━┛
假如我回答正确了;
在结帐时请整理FAQ;
以便增加我的信誉分
#15
我用汇编做网页 哈哈
#16
我不信!汇编做网页?可能么?????
#17
操作系统(引导区那446字节的机器码用asm做相对来说是最直接的了,不过你要是喜欢用机器码,我没话说了)
最终形态编译器
最终形态编译器
#18
记得以前看过一篇将程序设计语言与女陔进行比较的文章:
汇编语言 典型的女强人, 几乎什么都能做,但做每件事情都得付出很大的代价
C语言 远非完美, 但可以接收, 是那种必须好好努力才能掌握的那种女陔.
PASCAL语言 刻板的女老师形像, 过分的强调规范掩盖了她宝贵的品质
.....
汇编语言 典型的女强人, 几乎什么都能做,但做每件事情都得付出很大的代价
C语言 远非完美, 但可以接收, 是那种必须好好努力才能掌握的那种女陔.
PASCAL语言 刻板的女老师形像, 过分的强调规范掩盖了她宝贵的品质
.....
#19
汇编好象很难学,小弟也正在进行中,我觉得汇编现在主要是用来做一些比较底层的东西,由于对硬件不熟悉,而且没有其他语言的基础,所以每看一页书都很艰难,你们是怎么学习的,越详细越好。
#20
有兴趣就去钻研,汇编真的很有用。手机控制程序就要用,想想现在手机多火呀。还不快学。
#21
维护的时候也是很有用的,比如你可以直接用汇编来检查机器,操作机器而不必依赖任何工具软件.
比如在电脑城买机器,什么软件都还没有装,你又想知道Cup是不是假的,怎么办?
用汇编读出Cup的型号代码就可以了.呵呵.
比如在电脑城买机器,什么软件都还没有装,你又想知道Cup是不是假的,怎么办?
用汇编读出Cup的型号代码就可以了.呵呵.
#22
汇编真的很好,可惜我没学会,有时看些东西费劲。。。
#23
我也是最近一两个星期开始喜欢上汇编的,感觉不错,多了解底层没有坏处。
#24
我都被它害死了,硬盘都被它搞坏了,现在不知怎么办,系统装上去了,请教大哥们帮一帮啊
#25
灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌
灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌
灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌水水灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌
灌灌灌水水水水灌灌灌灌灌灌灌灌灌灌灌灌水水灌灌灌灌灌灌灌灌灌灌灌灌灌水水灌灌灌灌灌灌
灌灌水水灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌水水灌灌灌灌灌灌
灌灌水水灌灌灌灌灌灌水水水水灌灌灌水水水水灌灌灌灌水水水水水灌灌灌水水水水水水灌灌灌
灌灌水水灌灌灌灌灌灌灌灌灌水水灌灌灌灌水水灌灌灌灌水水灌灌水水灌灌灌水水灌灌灌灌灌灌
灌水水水水水水灌灌灌灌灌灌水水灌灌灌灌水水灌灌灌灌水水灌灌水水灌灌灌水水灌灌灌灌灌灌
灌灌水水灌灌灌灌灌灌水水水水水灌灌灌灌水水灌灌灌灌水水灌灌水水灌灌灌水水灌灌灌灌灌灌
灌灌水水灌灌灌灌灌水水灌灌水水灌灌灌灌水水灌灌灌灌水水灌灌水水灌灌灌水水灌灌灌灌灌灌
灌灌水水灌灌灌灌灌水水灌灌水水灌灌灌灌水水灌灌灌灌水水灌灌水水灌灌灌水水灌灌灌灌灌灌
灌灌水水灌灌灌灌灌灌水水水水水灌灌水水水水水水灌灌水水灌灌水水灌灌灌灌水水水水灌灌灌
灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌
灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌水之王
灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌
灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌水水灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌
灌灌灌水水水水灌灌灌灌灌灌灌灌灌灌灌灌水水灌灌灌灌灌灌灌灌灌灌灌灌灌水水灌灌灌灌灌灌
灌灌水水灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌水水灌灌灌灌灌灌
灌灌水水灌灌灌灌灌灌水水水水灌灌灌水水水水灌灌灌灌水水水水水灌灌灌水水水水水水灌灌灌
灌灌水水灌灌灌灌灌灌灌灌灌水水灌灌灌灌水水灌灌灌灌水水灌灌水水灌灌灌水水灌灌灌灌灌灌
灌水水水水水水灌灌灌灌灌灌水水灌灌灌灌水水灌灌灌灌水水灌灌水水灌灌灌水水灌灌灌灌灌灌
灌灌水水灌灌灌灌灌灌水水水水水灌灌灌灌水水灌灌灌灌水水灌灌水水灌灌灌水水灌灌灌灌灌灌
灌灌水水灌灌灌灌灌水水灌灌水水灌灌灌灌水水灌灌灌灌水水灌灌水水灌灌灌水水灌灌灌灌灌灌
灌灌水水灌灌灌灌灌水水灌灌水水灌灌灌灌水水灌灌灌灌水水灌灌水水灌灌灌水水灌灌灌灌灌灌
灌灌水水灌灌灌灌灌灌水水水水水灌灌水水水水水水灌灌水水灌灌水水灌灌灌灌水水水水灌灌灌
灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌
灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌水之王
#26
学习汇编语言的同时可以学习到很多计算机底层的东西,但到实际应用中,我觉得作用不大,龙芯的指令集这么底层的东西都是用c编的。
总的说,别太指望靠汇编直接挣多少钱,但这门课必须学
另外,我听同学说,很多3d游戏使用汇编写的,是真的吗
我也是个初学者,看法有什么不妥之处还望执教
总的说,别太指望靠汇编直接挣多少钱,但这门课必须学
另外,我听同学说,很多3d游戏使用汇编写的,是真的吗
我也是个初学者,看法有什么不妥之处还望执教
#27
就像练太极,看起来慢悠悠的,骨子里全是硬功夫阿!
#28
mov ax,b800
mov ds,ax
mov di,0
mov byte ptr [di],41
int 20
它可以在DOS窗口显示一个‘A’,如果把它存成.COM文件,它只有13个字节,其实它已经是一个真正的程序了,虽然功能仅限与此,下至DOS1.0上至2000,XP。你用C试试能不能做一个小于13个字节同样功能的程序!
你要是让我用汇编编写一个“人员档案管理系统”,你不如直接扣动扳机......
mov ds,ax
mov di,0
mov byte ptr [di],41
int 20
它可以在DOS窗口显示一个‘A’,如果把它存成.COM文件,它只有13个字节,其实它已经是一个真正的程序了,虽然功能仅限与此,下至DOS1.0上至2000,XP。你用C试试能不能做一个小于13个字节同样功能的程序!
你要是让我用汇编编写一个“人员档案管理系统”,你不如直接扣动扳机......
#29
模拟器的底层好像要用到汇编
#30
不学汇编,你不一定会后悔。
学好汇编,你一定不会后悔。
学好汇编,你一定不会后悔。
#31
http://www.codediy.com/codebbs/index.asp
来上面看看,
怎么样写引导程序,
最有用啊。
来上面看看,
怎么样写引导程序,
最有用啊。
#32
老凶该结帐啦
#33
汇编应用二例则我为客户做的,你用其它语言试试:
1.一个1。7G的数据庫,要求维护,一次不超出1秒
2.做个矢量(算是3D吧)界面引擎,是为物理系做的,用图像显示麦克斯韦方程的时空,要求有无限小与无限大(时空)可显示
哈哈!其它语言------你行吗
1.一个1。7G的数据庫,要求维护,一次不超出1秒
2.做个矢量(算是3D吧)界面引擎,是为物理系做的,用图像显示麦克斯韦方程的时空,要求有无限小与无限大(时空)可显示
哈哈!其它语言------你行吗
#34
应用在某些场合,与具体CPU有关,估计楼主永远不会用。
#35
xiao_niao(小鸟)
刚刚对汇编产生了一点浓厚的兴趣,却几乎被你一句话打消。
你目的要达成了?你高兴了?
你会受诅咒的!!如果你不收回你说的话。
刚刚对汇编产生了一点浓厚的兴趣,却几乎被你一句话打消。
你目的要达成了?你高兴了?
你会受诅咒的!!如果你不收回你说的话。
#1
病毒、木马……这些东西,汇编几乎是唯一的选择。
#2
还有破解,嘿嘿
#3
pzou@163.com
其待中。。。。。。。。。。。。。
#4
不要指望用汇编写...
#5
懂得汇编的人写出程序来就是不一样,无论用什么语言,都可以
完全胜任
完全胜任
#6
好像控制洗衣机等的单片机 就得用汇编写吧 当然也可以用机器语言
#7
现在很少有专门用汇编来写程序的,像驱动程序,嵌入式设备的控制程序,也大多不用汇编来写了,但是有些功能(或者叫技巧)式其他任何高级语言不能实现的,比如代码混用,自修改,逐字节解密。。。。,当然这些都是被高级语言程序员嗤之以鼻的非结构化代码
#8
我能想到的似乎只有病毒和加密
#9
单片机中大量的使用到汇编。比如51机,才几十K的内存。
#10
很多啦!!!
自动化控制领域中
比如 数字彩电,现在的洗衣机,冰箱,微波炉,手机,商务通
汽车,导弹,只要CPU采用的是兼容386体系结构就是ASM的天下。
在PC 中很多对速度要求高的场合就会用ASM
在高级语言性能优化中也会采用ASM
人工智能决对使用ASM。
老兄:你也许是学的DOS的ASM 吧!假如你学的是WINASM 就会简单得多啦
而且对你了解WINDOWS写程会有很大的帮助的。即使你不用ASM,它对你学
VB,VC ,DELPHI ,CBUILDER 也有很大的帮助地。
所以我就回头学ASM 啦
现实很残酷学其他语言竞争很激烈,压力大,工资少,容易招裁,三十岁下班。
而学ASM 就好处多多,月薪1万,工作稳定,压力小,80岁下班。
ASM(爱什么) 语言优点,体积小,内存少,速度第一。
缺点:开发难,移植难,调试难,开发时间长。
我批:
开发难: 只要你熟悉它就不难。
移植难: 现在是IBM PC 和INTEL 386 天下 难道你要在苹果机上运行吗?
unix linunix windows dos 只是语法有不同而已
调试难: 使用自动化调式和测试工具会难吗?softic w32dasm ..
开发时间长: 使用ROSE UML 系统设计工具并能自动生成大部分代码,会长吗?
.386
.model flat,stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\user32.inc
includelib \masm32\lib\user32.lib ; calls to functions in user32.lib and kernel32.lib
include \masm32\include\kernel32.inc
includelib \masm32\lib\kernel32.lib
WinMain proto :DWORD,:DWORD,:DWORD,:DWORD
.DATA ; initialized data
ClassName db "SimpleWinClass",0 ; the name of our window class
AppName db "Our First Window",0 ; the name of our window
.DATA? ; Uninitialized data
hInstance HINSTANCE ? ; Instance handle of our program
CommandLine LPSTR ?
.CODE ; Here begins our code
start:
invoke GetModuleHandle, NULL ; get the instance handle of our program.
; Under Win32, hmodule==hinstance mov hInstance,eax
mov hInstance,eax
invoke GetCommandLine ; get the command line. You don't have to call this function IF
; your program doesn't process the command line.
mov CommandLine,eax
invoke WinMain, hInstance,NULL,CommandLine, SW_SHOWDEFAULT ; call the main function
invoke ExitProcess, eax ; quit our program. The exit code is returned in eax from WinMain.
WinMain proc hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow:DWORD
LOCAL wc:WNDCLASSEX ; create local variables on stack
LOCAL msg:MSG
LOCAL hwnd:HWND
mov wc.cbSize,SIZEOF WNDCLASSEX ; fill values in members of wc
mov wc.style, CS_HREDRAW or CS_VREDRAW
mov wc.lpfnWndProc, OFFSET WndProc
mov wc.cbClsExtra,NULL
mov wc.cbWndExtra,NULL
push hInstance
pop wc.hInstance
mov wc.hbrBackground,COLOR_WINDOW+1
mov wc.lpszMenuName,NULL
mov wc.lpszClassName,OFFSET ClassName
invoke LoadIcon,NULL,IDI_APPLICATION
mov wc.hIcon,eax
mov wc.hIconSm,eax
invoke LoadCursor,NULL,IDC_ARROW
mov wc.hCursor,eax
invoke RegisterClassEx, addr wc ; register our window class
invoke CreateWindowEx,NULL,\
ADDR ClassName,\
ADDR AppName,\
WS_OVERLAPPEDWINDOW,\
CW_USEDEFAULT,\
CW_USEDEFAULT,\
CW_USEDEFAULT,\
CW_USEDEFAULT,\
NULL,\
NULL,\
hInst,\
NULL
mov hwnd,eax
invoke ShowWindow, hwnd,CmdShow ; display our window on desktop
invoke UpdateWindow, hwnd ; refresh the client area
.WHILE TRUE ; Enter message loop
invoke GetMessage, ADDR msg,NULL,0,0
.BREAK .IF (!eax)
invoke TranslateMessage, ADDR msg
invoke DispatchMessage, ADDR msg
.ENDW
mov eax,msg.wParam ; return exit code in eax
ret
WinMain endp
WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
.IF uMsg==WM_DESTROY ; if the user closes our window
invoke PostQuitMessage,NULL ; quit our application
.ELSE
invoke DefWindowProc,hWnd,uMsg,wParam,lParam ; Default message processing
ret
.ENDIF
xor eax,eax
ret
WndProc endp
end start
自动化控制领域中
比如 数字彩电,现在的洗衣机,冰箱,微波炉,手机,商务通
汽车,导弹,只要CPU采用的是兼容386体系结构就是ASM的天下。
在PC 中很多对速度要求高的场合就会用ASM
在高级语言性能优化中也会采用ASM
人工智能决对使用ASM。
老兄:你也许是学的DOS的ASM 吧!假如你学的是WINASM 就会简单得多啦
而且对你了解WINDOWS写程会有很大的帮助的。即使你不用ASM,它对你学
VB,VC ,DELPHI ,CBUILDER 也有很大的帮助地。
所以我就回头学ASM 啦
现实很残酷学其他语言竞争很激烈,压力大,工资少,容易招裁,三十岁下班。
而学ASM 就好处多多,月薪1万,工作稳定,压力小,80岁下班。
ASM(爱什么) 语言优点,体积小,内存少,速度第一。
缺点:开发难,移植难,调试难,开发时间长。
我批:
开发难: 只要你熟悉它就不难。
移植难: 现在是IBM PC 和INTEL 386 天下 难道你要在苹果机上运行吗?
unix linunix windows dos 只是语法有不同而已
调试难: 使用自动化调式和测试工具会难吗?softic w32dasm ..
开发时间长: 使用ROSE UML 系统设计工具并能自动生成大部分代码,会长吗?
.386
.model flat,stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\user32.inc
includelib \masm32\lib\user32.lib ; calls to functions in user32.lib and kernel32.lib
include \masm32\include\kernel32.inc
includelib \masm32\lib\kernel32.lib
WinMain proto :DWORD,:DWORD,:DWORD,:DWORD
.DATA ; initialized data
ClassName db "SimpleWinClass",0 ; the name of our window class
AppName db "Our First Window",0 ; the name of our window
.DATA? ; Uninitialized data
hInstance HINSTANCE ? ; Instance handle of our program
CommandLine LPSTR ?
.CODE ; Here begins our code
start:
invoke GetModuleHandle, NULL ; get the instance handle of our program.
; Under Win32, hmodule==hinstance mov hInstance,eax
mov hInstance,eax
invoke GetCommandLine ; get the command line. You don't have to call this function IF
; your program doesn't process the command line.
mov CommandLine,eax
invoke WinMain, hInstance,NULL,CommandLine, SW_SHOWDEFAULT ; call the main function
invoke ExitProcess, eax ; quit our program. The exit code is returned in eax from WinMain.
WinMain proc hInst:HINSTANCE,hPrevInst:HINSTANCE,CmdLine:LPSTR,CmdShow:DWORD
LOCAL wc:WNDCLASSEX ; create local variables on stack
LOCAL msg:MSG
LOCAL hwnd:HWND
mov wc.cbSize,SIZEOF WNDCLASSEX ; fill values in members of wc
mov wc.style, CS_HREDRAW or CS_VREDRAW
mov wc.lpfnWndProc, OFFSET WndProc
mov wc.cbClsExtra,NULL
mov wc.cbWndExtra,NULL
push hInstance
pop wc.hInstance
mov wc.hbrBackground,COLOR_WINDOW+1
mov wc.lpszMenuName,NULL
mov wc.lpszClassName,OFFSET ClassName
invoke LoadIcon,NULL,IDI_APPLICATION
mov wc.hIcon,eax
mov wc.hIconSm,eax
invoke LoadCursor,NULL,IDC_ARROW
mov wc.hCursor,eax
invoke RegisterClassEx, addr wc ; register our window class
invoke CreateWindowEx,NULL,\
ADDR ClassName,\
ADDR AppName,\
WS_OVERLAPPEDWINDOW,\
CW_USEDEFAULT,\
CW_USEDEFAULT,\
CW_USEDEFAULT,\
CW_USEDEFAULT,\
NULL,\
NULL,\
hInst,\
NULL
mov hwnd,eax
invoke ShowWindow, hwnd,CmdShow ; display our window on desktop
invoke UpdateWindow, hwnd ; refresh the client area
.WHILE TRUE ; Enter message loop
invoke GetMessage, ADDR msg,NULL,0,0
.BREAK .IF (!eax)
invoke TranslateMessage, ADDR msg
invoke DispatchMessage, ADDR msg
.ENDW
mov eax,msg.wParam ; return exit code in eax
ret
WinMain endp
WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
.IF uMsg==WM_DESTROY ; if the user closes our window
invoke PostQuitMessage,NULL ; quit our application
.ELSE
invoke DefWindowProc,hWnd,uMsg,wParam,lParam ; Default message processing
ret
.ENDIF
xor eax,eax
ret
WndProc endp
end start
#11
设计bios程序,呵呵,你不用汇编难道还有其他语言能实现吗?
#12
呵呵:)你不知道现在是越底层的东东越吃香吗???
我也是初学者。一起努力吧!你说汇编能做什么??
汇编能做的东西可多了!比如我门的编译器呀:)还有单片机呀!都是有汇编驱动的!
我也是初学者。一起努力吧!你说汇编能做什么??
汇编能做的东西可多了!比如我门的编译器呀:)还有单片机呀!都是有汇编驱动的!
#13
bios即将可以用C写啦
#14
┏━━━━━━━━━━━━━┓
┃※※※※★★★★★※※※※┃
┃※【终级掠食者—大白鲨】※┃
┃※※※※★★★★★※※※※┃
┗━━━━━━━━━━━━━┛
假如我回答正确了;
在结帐时请整理FAQ;
以便增加我的信誉分
┃※※※※★★★★★※※※※┃
┃※【终级掠食者—大白鲨】※┃
┃※※※※★★★★★※※※※┃
┗━━━━━━━━━━━━━┛
假如我回答正确了;
在结帐时请整理FAQ;
以便增加我的信誉分
#15
我用汇编做网页 哈哈
#16
我不信!汇编做网页?可能么?????
#17
操作系统(引导区那446字节的机器码用asm做相对来说是最直接的了,不过你要是喜欢用机器码,我没话说了)
最终形态编译器
最终形态编译器
#18
记得以前看过一篇将程序设计语言与女陔进行比较的文章:
汇编语言 典型的女强人, 几乎什么都能做,但做每件事情都得付出很大的代价
C语言 远非完美, 但可以接收, 是那种必须好好努力才能掌握的那种女陔.
PASCAL语言 刻板的女老师形像, 过分的强调规范掩盖了她宝贵的品质
.....
汇编语言 典型的女强人, 几乎什么都能做,但做每件事情都得付出很大的代价
C语言 远非完美, 但可以接收, 是那种必须好好努力才能掌握的那种女陔.
PASCAL语言 刻板的女老师形像, 过分的强调规范掩盖了她宝贵的品质
.....
#19
汇编好象很难学,小弟也正在进行中,我觉得汇编现在主要是用来做一些比较底层的东西,由于对硬件不熟悉,而且没有其他语言的基础,所以每看一页书都很艰难,你们是怎么学习的,越详细越好。
#20
有兴趣就去钻研,汇编真的很有用。手机控制程序就要用,想想现在手机多火呀。还不快学。
#21
维护的时候也是很有用的,比如你可以直接用汇编来检查机器,操作机器而不必依赖任何工具软件.
比如在电脑城买机器,什么软件都还没有装,你又想知道Cup是不是假的,怎么办?
用汇编读出Cup的型号代码就可以了.呵呵.
比如在电脑城买机器,什么软件都还没有装,你又想知道Cup是不是假的,怎么办?
用汇编读出Cup的型号代码就可以了.呵呵.
#22
汇编真的很好,可惜我没学会,有时看些东西费劲。。。
#23
我也是最近一两个星期开始喜欢上汇编的,感觉不错,多了解底层没有坏处。
#24
我都被它害死了,硬盘都被它搞坏了,现在不知怎么办,系统装上去了,请教大哥们帮一帮啊
#25
灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌
灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌
灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌水水灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌
灌灌灌水水水水灌灌灌灌灌灌灌灌灌灌灌灌水水灌灌灌灌灌灌灌灌灌灌灌灌灌水水灌灌灌灌灌灌
灌灌水水灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌水水灌灌灌灌灌灌
灌灌水水灌灌灌灌灌灌水水水水灌灌灌水水水水灌灌灌灌水水水水水灌灌灌水水水水水水灌灌灌
灌灌水水灌灌灌灌灌灌灌灌灌水水灌灌灌灌水水灌灌灌灌水水灌灌水水灌灌灌水水灌灌灌灌灌灌
灌水水水水水水灌灌灌灌灌灌水水灌灌灌灌水水灌灌灌灌水水灌灌水水灌灌灌水水灌灌灌灌灌灌
灌灌水水灌灌灌灌灌灌水水水水水灌灌灌灌水水灌灌灌灌水水灌灌水水灌灌灌水水灌灌灌灌灌灌
灌灌水水灌灌灌灌灌水水灌灌水水灌灌灌灌水水灌灌灌灌水水灌灌水水灌灌灌水水灌灌灌灌灌灌
灌灌水水灌灌灌灌灌水水灌灌水水灌灌灌灌水水灌灌灌灌水水灌灌水水灌灌灌水水灌灌灌灌灌灌
灌灌水水灌灌灌灌灌灌水水水水水灌灌水水水水水水灌灌水水灌灌水水灌灌灌灌水水水水灌灌灌
灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌
灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌水之王
灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌
灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌水水灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌
灌灌灌水水水水灌灌灌灌灌灌灌灌灌灌灌灌水水灌灌灌灌灌灌灌灌灌灌灌灌灌水水灌灌灌灌灌灌
灌灌水水灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌水水灌灌灌灌灌灌
灌灌水水灌灌灌灌灌灌水水水水灌灌灌水水水水灌灌灌灌水水水水水灌灌灌水水水水水水灌灌灌
灌灌水水灌灌灌灌灌灌灌灌灌水水灌灌灌灌水水灌灌灌灌水水灌灌水水灌灌灌水水灌灌灌灌灌灌
灌水水水水水水灌灌灌灌灌灌水水灌灌灌灌水水灌灌灌灌水水灌灌水水灌灌灌水水灌灌灌灌灌灌
灌灌水水灌灌灌灌灌灌水水水水水灌灌灌灌水水灌灌灌灌水水灌灌水水灌灌灌水水灌灌灌灌灌灌
灌灌水水灌灌灌灌灌水水灌灌水水灌灌灌灌水水灌灌灌灌水水灌灌水水灌灌灌水水灌灌灌灌灌灌
灌灌水水灌灌灌灌灌水水灌灌水水灌灌灌灌水水灌灌灌灌水水灌灌水水灌灌灌水水灌灌灌灌灌灌
灌灌水水灌灌灌灌灌灌水水水水水灌灌水水水水水水灌灌水水灌灌水水灌灌灌灌水水水水灌灌灌
灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌
灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌灌水之王
#26
学习汇编语言的同时可以学习到很多计算机底层的东西,但到实际应用中,我觉得作用不大,龙芯的指令集这么底层的东西都是用c编的。
总的说,别太指望靠汇编直接挣多少钱,但这门课必须学
另外,我听同学说,很多3d游戏使用汇编写的,是真的吗
我也是个初学者,看法有什么不妥之处还望执教
总的说,别太指望靠汇编直接挣多少钱,但这门课必须学
另外,我听同学说,很多3d游戏使用汇编写的,是真的吗
我也是个初学者,看法有什么不妥之处还望执教
#27
就像练太极,看起来慢悠悠的,骨子里全是硬功夫阿!
#28
mov ax,b800
mov ds,ax
mov di,0
mov byte ptr [di],41
int 20
它可以在DOS窗口显示一个‘A’,如果把它存成.COM文件,它只有13个字节,其实它已经是一个真正的程序了,虽然功能仅限与此,下至DOS1.0上至2000,XP。你用C试试能不能做一个小于13个字节同样功能的程序!
你要是让我用汇编编写一个“人员档案管理系统”,你不如直接扣动扳机......
mov ds,ax
mov di,0
mov byte ptr [di],41
int 20
它可以在DOS窗口显示一个‘A’,如果把它存成.COM文件,它只有13个字节,其实它已经是一个真正的程序了,虽然功能仅限与此,下至DOS1.0上至2000,XP。你用C试试能不能做一个小于13个字节同样功能的程序!
你要是让我用汇编编写一个“人员档案管理系统”,你不如直接扣动扳机......
#29
模拟器的底层好像要用到汇编
#30
不学汇编,你不一定会后悔。
学好汇编,你一定不会后悔。
学好汇编,你一定不会后悔。
#31
http://www.codediy.com/codebbs/index.asp
来上面看看,
怎么样写引导程序,
最有用啊。
来上面看看,
怎么样写引导程序,
最有用啊。
#32
老凶该结帐啦
#33
汇编应用二例则我为客户做的,你用其它语言试试:
1.一个1。7G的数据庫,要求维护,一次不超出1秒
2.做个矢量(算是3D吧)界面引擎,是为物理系做的,用图像显示麦克斯韦方程的时空,要求有无限小与无限大(时空)可显示
哈哈!其它语言------你行吗
1.一个1。7G的数据庫,要求维护,一次不超出1秒
2.做个矢量(算是3D吧)界面引擎,是为物理系做的,用图像显示麦克斯韦方程的时空,要求有无限小与无限大(时空)可显示
哈哈!其它语言------你行吗
#34
应用在某些场合,与具体CPU有关,估计楼主永远不会用。
#35
xiao_niao(小鸟)
刚刚对汇编产生了一点浓厚的兴趣,却几乎被你一句话打消。
你目的要达成了?你高兴了?
你会受诅咒的!!如果你不收回你说的话。
刚刚对汇编产生了一点浓厚的兴趣,却几乎被你一句话打消。
你目的要达成了?你高兴了?
你会受诅咒的!!如果你不收回你说的话。