`

hello world

阅读更多
Win32的基础就是由DLL组成的.核心由3个DLL提供
KERNEL32.DLL:系统服务功能,包括内在管理,任务管理和动态链接等
GDI32.DLL:图形设备接口,利用VGA与DRV之类的显示设备驱动程序完成显示文本和矩形等功能
USER32.DLL:用户接口服务,建立窗口和传送消息等

Invoke:是不个MASM编译器的伪指令,而TASM没有,直接使用call指令实现同样功能

有些Windows9x系统不支持Unicode
if UNICODE
MessageBox equ <MessageBoxW>
else
MessageBox equ <MessageBoxA>
endif
然后在源程序的头部UNICODE=1或UNICODE=0,重新编译就可以产生不同的版本

静态库:是一组已经编写好的代码模块,在程序中可以自由引用,在源程序编译成目标文件,
最后要链接成可执行文件时,由link程序从库中找到相应的函数代码,一起链接到最后的可执
行文件中.

库的出现为程序员节省了大量的开发时间,缺点就是每个可执行文件中都包括了要用到了
相同函数的代码,占用了大量的磁盘空间,在执行时,这些代码同样占用了内存

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
			.386
			.model flat,stdcall
			option casemap:none
;.386是使用的指令集
;.model 内存模式[,语言模式][,其它模式]
;flat:Win32程序只有一种内存模式flat(平坦模式),代码和数据段使用4GB段
;stdcall:语言模式,子程序的调用方式,指出了调用子程序或Win32API时参数传递的次序和堆栈平衡的方法
;option casemap:none:定义了程序是否大小写敏感,因为Win32API是区分大小写的
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
include		windows.inc
include		user32.inc
includelib	user32.lib
include		kernel32.inc
includelib	kernel32.lib
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
		.data
szCaption	db	'A MessageBox !',0
szText		db	'Hello, World !',0dh,0ah,'Hello again',0ah,'adsf',0
;.data,.data?和.const定义的是数据段,分别对应不同方式的数据定义,在最
;后生成的可执行文件中也分别放在不同的节区(Section)中
;1.可读写的已定义变量:在源程序中已经定义了初值,而且在程序中有可能被改
;动,必须定义在.data段中;.data段一般放在可执行文件的_DATA节区
;2.可读写的末定义变量:当作缓冲区或程序执行后才开始使用,可以定义在.data
;段中,但一段定义在.data?段中,因为不会增加.exe文件的大小,.data?段一般放在
;可执行文件的_BSS节区
;3.常量:一些要显示的字符串信息,可以放在.const段中,可读不可写.但为了方便,小
;程序一般就把常量放.data中了
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
		.code
start:
		invoke	MessageBox,\
						NULL,\
						offset szText,\
						offset szCaption,\
						MB_ICONWARNING
		invoke	ExitProcess,NULL
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
		end	start


makefile
NAME = Hello       #指定输出文件
OBJS = $(NAME).obj #需要的目标文件

LINK_FLAG = /subsystem:windows  #连接选项
ML_FLAG = /c /coff              #编译选项

$(NAME).exe: $(OBJS)
	Link $(LINK_FLAG) $(OBJS)
.asm.obj:
	ml $(ML_FLAG) $<

clean:
	del *.obj






标号:当在程序中使用一条跳转指令的时候,可以用标号来表示跳转的目的地,编译器在编译的时候会把它替换成地址,标点既可以定义在目的指令同一行的头部,也可以在目的指令前一行单独用一行定义:
标号名: 目的指令 ;方法1

@@做标号时,可以用@F和@B引用,@F表示本条指令后的第一个@@标号,@B表示本条指令前的第一个@@标号

宏定义:assum esi:ptr WNDCLASS

如果要用指定类型之外的长度访问变量,必须地指出要访问的长度,这产,编译器忽略语法的长度检验.

Sizeof伪指令可以取得变量,数据类型或数据结构以字节为单位的长度,lengthof可以取得变量中数据的项数

  • 大小: 8.3 KB
分享到:
评论

相关推荐

    hello world hello world

    hello world

    Helloworld_helloworld_

    输出HELLOWORLD然后输出Helloworld最后的最后的输出Helloworld

    OpenWrt之helloworld程序

    OpenWrt之helloworld程序开发入门,里面包含helloworld和Makefile

    helloworld

    helloworld

    SpringMVC ---- HelloWorld ---- 代码

    SpringMVC ---- HelloWorld ---- 代码 SpringMVC ---- HelloWorld ---- 代码 SpringMVC ---- HelloWorld ---- 代码 SpringMVC ---- HelloWorld ---- 代码 SpringMVC ---- HelloWorld ---- 代码 SpringMVC ---- Hello...

    Hello World

    // Display the Hello World message. messageLabel.Text = "Hello World"; } private void exitButton_Click(object sender, EventArgs e) { // Exit the project. this.Close(); } private void ...

    编写 hello world web 程序

    • 在命令行打印 hello world! 字符 //mkdir nodejs-demo //cd nodejs-demo // https://sample.wangding.in/nodejs/tern-project //mv tern-project .tern-project //mkdir 01-introduction //touch 01-hello-world....

    第一个Ext 3.2版本的Hello World程序

    4、打开IE在地址栏输入“http://localhost:8088/FirstExt/HelloWorld.html”之后敲回车,如果一切正常,那么你会看到Ext 3.2版本的Hello world程序--它会一秒钟之后变背景色 阅读对象:希望使用新版本的Ext框架开发...

    Spring4 HelloWorld

    Spring4 HelloWorld初学Spring,java bean通过applicationContext.xml配置SpringIoC容器生成。

    一个简单的qt版helloworld程序

    一个简单的qt版helloworld程序

    HelloWorld_打印HelloWorld_

    打印HelloWorld ,在Visual Studio的开发环境当中,实现简单的操作。

    C#入门

    C#第一个程序,helloworld using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace helloworld { class helloworld { [STAThread] static void Main(string[] args)...

    helloworld vbs 脚本

    helloworld vbs 脚本hellohelloworld vbs 脚本world vbs 脚本helloworld vbs 脚本helloworld vbs 脚本helloworld vbs 脚本

    Hello World C源码

    Hello World C源码 Hello World C源码 Hello World C源码 Hello World C源码 Hello World C源码

    MDK5.15版本的HelloWorld

    这是我自己在MDK5.15环境写的一个STM32F103RCT6运行的HelloWorld程序,用的固件库版本是V3.5.0。固件库也包含在里面。使用的串口是USART1。分享给大家,希望可以为大家节省一点开发时间。

    深入浅出hello world

    深入浅出hello world。从一个简单的hello,world程序开始,经过预处理、编译、汇编、链接、加载各个步骤详细介绍程序从编辑到执行的过程。深入的讲解了linux下程序的编译过程,并且讲解了linux kernel系统调用的相关...

    Hello World.rar_c++ hello world_world

    c++编写hello world 简单的c++程序

    Hello World的输入

    HELLO WORLD的输入和C语言的一些简单用法,我们计算出HELLO WORLD的数十种形式,希望喜欢

Global site tag (gtag.js) - Google Analytics