win32汇编入门了解(1)环境搭建
2011-11-28 15:50
435 查看
说明:本系列内容不会详细讲解汇编的知识,只是记录我自己学习的一个过程,而且,我学习的目标不是打算写汇编,而是了解一点点win32汇编的知识,只是为了让自己能读懂最基本的汇编。另外,win32汇编的核心应该还是在windows API的学习,这个不是我的重点,可以认为我只是打算学习一下http://book.51cto.com/art/200907/133699.htm这本书的第三章的内容!:)
参考:/article/4910384.html
环境搭建:
首先就是环境搭建,由于我没打算专业去学汇编的东西(比如PE结构、win32汇编的基本语法(这部分有很多是和8086一样,所以不会在后面去分析)等什么的都不会去研究),所以,希望用一个简单点的方法让我能编译汇编就可以了。上面的参考链接是一个很好的文章,提供了几种搭建汇编环境的方法。
这里只提示一下:
参考文章中的”vs+masm“的方法,应该是可以改进的,因为vs中自带了masm程序,应该是不需要下载的,而且那个Irvine库应该也不是必须的。
所以,我将使用VS命令行下的自带汇编器来学习基本的入门的win32汇编。
下面以一个简单的例子了解VS自带的汇编器:
我们知道,vs的编译器是cl.exe、链接器是link.exe,既然vs自带了masm,那么是不是masm.exe,答案是否定的。vs的汇编器是ml.exe。其在64bit的命令行下是ml64.exe,不知道为何要换一个名字,cl.exe就没有换名字。
下面是一个”hello,world“的代码:
(说明:在VS的64bit命令行下进行上面的操作,居然调用ml64编译的时候汇编代码有错误,搞不懂。)
参考:/article/4910384.html
环境搭建:
首先就是环境搭建,由于我没打算专业去学汇编的东西(比如PE结构、win32汇编的基本语法(这部分有很多是和8086一样,所以不会在后面去分析)等什么的都不会去研究),所以,希望用一个简单点的方法让我能编译汇编就可以了。上面的参考链接是一个很好的文章,提供了几种搭建汇编环境的方法。
这里只提示一下:
参考文章中的”vs+masm“的方法,应该是可以改进的,因为vs中自带了masm程序,应该是不需要下载的,而且那个Irvine库应该也不是必须的。
所以,我将使用VS命令行下的自带汇编器来学习基本的入门的win32汇编。
下面以一个简单的例子了解VS自带的汇编器:
我们知道,vs的编译器是cl.exe、链接器是link.exe,既然vs自带了masm,那么是不是masm.exe,答案是否定的。vs的汇编器是ml.exe。其在64bit的命令行下是ml64.exe,不知道为何要换一个名字,cl.exe就没有换名字。
下面是一个”hello,world“的代码:
// test.c #include <stdio.h> int main() { printf("Hello, world\n"); return 0; }VS2010的命令行(Visual Studio Command Prompt (2010))下编译:
cl test.c /FA /nologo就会得到test.asm和test.obj和test.exe文件,删除test.obj和test.exe,得到hello,world的asm文件。
; Listing generated by Microsoft (R) Optimizing Compiler Version 16.00.30319.01 TITLE C:\tempLab\asm\test.c .686P .XMM include listing.inc .model flat INCLUDELIB LIBCMT INCLUDELIB OLDNAMES _DATA SEGMENT $SG2637 DB 'Hello, world', 0aH, 00H _DATA ENDS PUBLIC _main EXTRN _printf:PROC ; Function compile flags: /Odtp _TEXT SEGMENT _main PROC ; File c:\templab\asm\test.c ; Line 5 push ebp mov ebp, esp ; Line 6 push OFFSET $SG2637 call _printf add esp, 4 ; Line 7 xor eax, eax ; Line 8 pop ebp ret 0 _main ENDP _TEXT ENDS END使用VS的汇编器(Assembler)编译上面的test.asm如下:
ml test.asm生成test.obj和test.exe。
(说明:在VS的64bit命令行下进行上面的操作,居然调用ml64编译的时候汇编代码有错误,搞不懂。)
相关文章推荐
- 一步一步了解Cocos2dx 3.0 正式版本开发环境搭建(Win32/Android)
- [VS2010搭建汇编开发环境win32和x64]
- 一步一步了解Cocos2dx 3.0 正式版本开发环境搭建(Win32/Android)
- 一步一步了解Cocos2dx 3.0 正式版本开发环境搭建(Win32/Android)
- win32汇编入门了解(2)win32汇编基本结构
- win32汇编入门了解(3)VS生成的代码里面的几个常见的基本伪指令
- [汇编]_[初级]_[VS2010搭建汇编开发环境win32和x64]
- 一步一步了解Cocos2dx 3.0 正式版本开发环境搭建(Win32/Android)
- scrapy环境搭建 爬虫入门了解
- [汇编]_[初级]_[VS2010搭建汇编开发环境win32和x64]
- 关于Win32汇编的环境搭建(Win7)
- 搭建Win32汇编工作环境
- React Native 入门了解及环境搭建
- 51单片机开发系列一-51单片机开发环境搭建以及入门汇编代码
- 今天开始第一次win32汇编之旅 先搭建编程环境吧
- 使用vs2010和masm32搭建win32汇编语言编程编译环境
- 一步一步了解Cocos2dx 3.0 正式版本开发环境搭建(Win32/Android)
- win32汇编环境搭建以及第一个程序
- Win32汇编窗口程序设计[01]--开发环境的搭建
- 一步一步了解Cocos2dx 3.0 正式版本开发环境搭建(Win32/Android)