(译)win32asm实例-1

原创 2002年03月18日 19:03:00
 

1.0 - New project新的工程


Create a new folder named 'mosaic' in your asm projects folder (it is adviceable to create this folder on the same drive as the MASM package so you can use the relative lib/include paths in the examples.


在你的asm工程文件夹(建议这个文件夹和masm包放在同一个区因而你可以在例子中使用相对的lib/include(库/包含文件)路径)中创建名为“mosaic”的新目录。


Download this ZIP file and extract it's contents in your 'mosaic' folder: mosaic lesson files.zip<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


下载这个zip文件并把它的内容解压缩到你的“mosaic”目录中:mosaic lesson files.zip



1.1 - Basic files基本文件


The ZIP contains the basic (almost empty) files for your project. Here's a short description of the files:


Zip包中有你工程的基本(几乎为空)文件。这些文件的简单描述:


Mosaic.asm


;===============================================================================
; Mosaic.asm
;===============================================================================
.486
.model flat, stdcall
option casemap: none


includelib /masm32/lib/kernel32.lib
includelib /masm32/lib/user32.lib
includelib /masm32/lib/gdi32.lib
includelib /masm32/lib/comctl32.lib
includelib /masm32/lib/comdlg32.lib
include /masm32/include/kernel32.inc
include /masm32/include/comctl32.inc
include /masm32/include/comdlg32.inc
include /masm32/include/user32.inc
include /masm32/include/gdi32.inc
include /masm32/include/windows.inc
include mosaic.inc


.code
start:


end start


This file contains the framework for a win32 asm source file.


这个文件包含了win32asm源文件的框架。


.486: indicates to use the 486+ assembly instructions
.model flat, stdcall: defines the memory model (flat) and the calling convention (stdcall)
includelib / include: These include the libraries and include files for the windows functions needed. The windows.inc includes basic windows constants. The mosaic.inc contains your own constants.
.code: select code segment
start: just a label, could be anything
end start: indicates that the entry point of your program is at a label called start.


.486: 说明用486及以上的汇编指令。
.model flat, stdcall:定义内存模式(flat)和调用习惯(stdcall
includelib / include: 这些包含Windows函数所需要的库和包含文件。Windows.inc中有基本的windows常量。Mosaic.inc包含你自有的常量。
.code: 选择代码段
start: 只是一个标签,可以为任何东西
end start:表明你的程序的入口点是位于一个名为start的标签.


Mosaic.inc


;---- msgbox macro: usage MSGBOX "string to display" -------
MSGBOX MACRO msg:REQ
LOCAL @msg
.data
@msg db msg, 0
.code
invoke MessageBox, NULL, ADDR @msg, ADDR AppName, MB_OK
ENDM


In mosaic.inc there is a little macro to simplify the use of MessageBoxes. A macro is a piece of code that can contain variables (here msg for example), which you can then use in your code and will be replaced by the macro code when assembling. I don't go into details about macro's right now, just remember you can show a msgbox in your program by using:


mosaic.inc中有一个小的宏来简化MessageBox的使用。一个宏是一小块可以包含变量(例如这里的msg)的代码。你可以在你的代码中使用它,而且在汇编时将会被宏中的代码所取代。我不会立刻深入宏的细节。只要记住你可以在你的程序中使用一下代码来显示一个消息对话框:


msgbox "Your string to display"


make.bat


@echo off
ml /c /coff mosaic.asm
rc -r mosaic.rc
link /subsystem:windows mosaic.obj mosaic.res
pause>nul


Use this batch file to assemble and link your program. The rc command will compile your resources.


使用这个批处理文件来汇编并链接你的程序。Rc命令编译你的资源


resources/


This folder contains some bitmaps and icons we will use in our program:


这个文件夹包含一些我们将要在我们程序中使用的图片和图标:



<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />





Big icon
(big.ico)


Small icon
(small.ico)


Toolbar buttons
(Toolbar.bmp)


Demo game picture
(demo.bmp)

C++ 模板的编译 以及 类模板内部的实例化

在C++中,编译器在看到模板的定义的时候,并不立即产生代码,只有在看到用到模板时,比如调用了模板函数 或者 定义了类模板的 对象的时候,编译器才产生特定类型的代码。 一般而言,在调用函数的时候,只...
  • C12345SDN
  • C12345SDN
  • 2014年05月02日 12:22
  • 2112

编译原理 LL1文法的判断和句子识别

编译原理 LL1文法的判断和句子识别 LL1文法概述 点击查看百度百科 对文法G的句子进行确定的自顶向下语法分析的充分必要条件是,G的任意两个具有相同左部的 产生式A—>α|β ...
  • Justin_bibo
  • Justin_bibo
  • 2017年02月23日 21:14
  • 2510

利用开源ASN1C库实现asn.1的编解码

最近在研究MMS的时候接触到了抽象语义记法ASN.1(Abstract Syntax Notation One),于是对它做了一番了解,下面将这几天的学习到的做下记录,以供以后偷懒。   ASN.1...
  • u013387076
  • u013387076
  • 2014年01月05日 17:18
  • 2376

Win32ASM-进程学习【1】

关于一些进程的概念就不说了。。。   一创建进程GreateProcess (1).当一个进程被创建时: ①.系统为进程创建一个内核对象,并将这个对象的计数设置为1,进程对象只是一个比较小的数...
  • bingghost
  • bingghost
  • 2011年12月15日 19:30
  • 649

Win32ASm学习[1]:RadASm下测试Debug

okay  正文开始下面的代码如果不能编译  请把你的RadAsm下的Masm32这个文件夹复制到任意一个磁盘的根目录下,在进行编译就可以了 或者安装Masm32 SDK到任意磁盘根目录下  ...
  • bingghost
  • bingghost
  • 2011年12月04日 13:16
  • 1943

win32asm.part1.rar

  • 2011年08月26日 20:33
  • 19MB
  • 下载

Win32Asm小程序案例之显示行号的记事本

参考:1、http://blog.csdn.net/jhkdiy/article/details/5634519 本文主要为自己仿写带行号的记事本做一个记录! 一切从简!!! 一、程序开...
  • ll2323001
  • ll2323001
  • 2012年06月22日 21:29
  • 673

Win32Asm中使用ReadConsoleInput时遇到结构内存对齐

在控制台中使用ReadConsoleInput函数读取键盘事件时,发现访问KeyEvent.uChar.AsciiChar得到的字符跟输入的总是不一致。 比如从小键盘输入1,得到的是OO,输入2,得到...
  • u012344151
  • u012344151
  • 2013年10月27日 22:04
  • 549

Win32ASM && 变长参数的理解

C语言里面 提供了一些宏  可以使用变长参数   int MsgPrintf(INT dwszBuffer,TCHAR* szCaption,TCHAR* szFormat,...) { L...
  • bingghost
  • bingghost
  • 2012年03月20日 20:22
  • 703

Win32ASM学习[16] :乘除指令: MUL、IMUL、DIV、IDIV

----------------------------------------------------------------------------------------------------...
  • bingghost
  • bingghost
  • 2011年12月04日 19:29
  • 3225
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:(译)win32asm实例-1
举报原因:
原因补充:

(最多只允许输入30个字)