zoukankan      html  css  js  c++  java
  • 学第一个汇编程序hello world的说明笔记

    .486 ; 定义工作模式常见的有.386,.486,.586等只是CPU指令集的不同如
    .model flat, stdcall ; 定义内存模式
    ;flat为win32程序使用的模式,代码和数据段使用同一个4GB段,还有其他模式用不到就不学了
    ;stdcall为子程序调用模式因为windows api调用使用的是stdcall格式,所以win32汇编没得选择
    option casemap :none ;指定这个打开大小写敏感设置

    ;--------------------------------------

    include windows.
    inc
    include masm32.
    inc
    include user32.
    inc ;MessageBox在这个头文件里
    include kernel32.inc ;ExitProcess在这个头文件里
    ;
    ----------------------------------------函数代码在dll中,库文件只保留函数的定位信息和参数数目
    includelib masm32.lib
    includelib user32.lib
    includelib kernel32.lib
    ;--------------------------------------以上是包含的头文件和库


    ;.data数据段存放的都是已初始化的变量,并分配实际存储大小
    ;
    未初始化放在.data?段内.data?段内的的变量只保留大小信息,不实际分配
    .data
    szCaption db
    "A MessageBox !",0 ;定义消息框标题
    szText db "Hello,World !",0 ;定义消息框显示内容

    ;.code段为写程序指令的区域
    .code
    start: ;start标号
    invoke MessageBox,NULL,offset szText,offset szCaption,MB_OK
    ;MFC定义MessageBox(HWND hWnd,LPCTSTR lpText,LPCTSTR lpCaption,UINT uType)
    ;hWnd:窗口句柄,lpText消息内容,lpCaption消息标题,uType消息类型,注意汇编程序只有一种类型就是dword
    ;32位汇编里,地址是平坦的,地址空间为4.3G,offset取的是线性地址,是保护模式下的虚拟地址
    ;带参数的伪指令必须用invoke不带参数的可以用cell
    ;MessageBox具体使用可参考msdn
    invoke ExitProcess,NULL ;退出进程

    end start
    ;从start标号开始运行

  • 相关阅读:
    Oracle对表解锁
    写txt文件在AIX5.3系统中乱码
    Spring Data JPA初使用
    简单流水号生成
    Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COER
    install Tcl8.5.10
    centOS下开机自启动apache、mysql、samba、svn等服务的最简单方法
    UNIX_SOCKET 进程间通信
    Linux(CentOS 5.5) Redis 安装及RedisPHP拓展安装应用
    python 返回 字典型结果集
  • 原文地址:https://www.cnblogs.com/lilongjiang/p/2078324.html
Copyright © 2011-2022 走看看