zoukankan      html  css  js  c++  java
  • 汇编语言学习笔记设置开发环境,编写hello world!

    我用的IDE是masm32
    官方网站是:http://www.masm32.com/
    下载的地址是:http://www.masm32au.com/masm32/m32v10r.zip
    (这个包适合中国人开发For programmers in Australia, China, South East Asia and the Pacific region.)


    hello  world的汇编代码如下

    代码
    .386
    .model flat,stdcall
    option
    casemap:none

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


    .data
    szCaption db
    'BOX',0
    szText db
    'hello world',0


    .code
    start:
    invoke MessageBox,NULL,offset szText,\
    offset szCaption,MB_OK
    invoke ExitProcess,NULL
    end start

    代码输入完毕后

    保存成asm文件然后

    工具栏》》project>>build all
    就可以在你的工程目录中找到相应的exe文件

    下面说明一下代码的主要含义

    .386
    是说运行在386核心的CPU上,且特权级别最低

    flat
    是说内存平坦,且拥有4G的地址空间可以访问

    stdcall
    使用堆栈传递参数,使用从右向左的方式将参数入栈,堆栈的平衡是由子程序来完成的

    option casemap:none
    程序中区分大小写

    include    windows.inc
    include    user32.inc
    includelib    user32.lib
    include    kernel32.inc
    includelib    kernel32.lib
    引用一些必要的文件
    inc文件是函数声明
    lib文件中包括函数的定义
    如果你运行本程序此处报错的话,请改为绝对路径

    .data
    szCaption     db   'BOX',0
    szText        db   'hello world',0
    定义变量,  db是字节类型的变量,dw是字类型,dd是双字类型。支付传后面跟0是为了标明字符串的结束(与C类似)

    .code
    start:
             invoke  MessageBox,NULL,offset  szText,\
             offset  szCaption,MB_OK
             invoke  ExitProcess,NULL
    end   start
    .code代码段定义
    end   start程序结束
    与start:配对
    start只是个标记,可以随便定义,应用系统根据这个标记来找到程序的开始位置

    invoke调用系统函数
    offset取地址
    MB_OK是在前面的inc文件中定义的一种按钮类型

  • 相关阅读:
    湖南省第6届程序大赛第6题 Biggest Number
    湖南省第6届程序大赛第5题 内部收益率
    湖南省第6届程序大赛第4题 台球碰撞
    湖南省第6届程序大赛第3题 数字整除
    湖南省第6届程序大赛第二题 弟弟的作业
    湖南省第6届程序设计大赛第一题 汽水瓶
    Nginx 负载均衡配置
    Nginx 反向代理流程
    Nginx 对客户端请求的特殊处理
    Nginx文件操作的优化
  • 原文地址:https://www.cnblogs.com/liulun/p/1632985.html
Copyright © 2011-2022 走看看