zoukankan      html  css  js  c++  java
  • hello world

    .386   ;指令集
    .model flat,stdcall ;工作模式  win32工作模式只用flat平坦
    option casemap:none   ;格式

    ;include文件定义
    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 !',0
    .data? ;用来放未定义的变量
    .const  ;放定义完的常量

    ;代码段定义
    .code
    start:
    invoke MessageBox,NULL,offset szText,offset szCaption,MB_OK
    invoke ExitProcess,NULL
    end start  

    寄存器有EAX,EBX,ECX,EDX,EDI,ESI,ESP,EBP等,似乎IP也是寄存器,但只有在CALL/RET在中会默认使用它,其它情况很少使用到,暂时可以不用理会。
    EAX是WIN32 API 默认的返回值存放处。
    ECX是LOOP指令自动减一的寄存器。
    ESP是堆栈指针。
    EBP经常用来在堆栈中寻址。
    ESI好像常常用在指针寻址中,EDI

    ptr  显式指定后面的数据的类型
    offset 全局变量的地址

    lea 求局部变量地址
    addr  局部变量的地址,也可以用在全局变量上
    local  定义局部变量
    proc  定义子程序
    proto  声明子程序

    数据类型:

     名称   简写    长度(字节)
     byte   db      1   ;无符号字节
     word   dw      2
     dword  dd      4
     fword  df      6   ;三字
     qword  dq      8   ;四字
     sbyte          1   ;有符号字节
     sword          2   ;有符号字
     sdword         4   ;有符号双字
     real4          4   ;单精度浮点数
     real8          8   ;双精度浮点数
     real10         10  ;10字节浮点数
     tbyte   dt     10  ;十字节bcd码

     

    ;定义局部变量   local变量必须紧在子程序定义之后,因为局部变量在子程序未执行时就要确定下来
    local 变量名[[重复数量]][:类型]
    eg:  local ff[1024]:byte 

  • 相关阅读:
    Visual Studio的框选代码区块功能
    序列化和反序列化
    使用C#采集Shibor数据到Excel
    LiveCharts文档-4基本绘图-3其他
    LiveCharts文档-4基本绘图-2基本柱形图
    LiveCharts文档-4基本绘图-1基本线条图
    LiveCharts文档-3开始-8自定义工具提示
    LiveCharts文档-3开始-7标签
    LiveCharts文档-3开始-6轴Axes
    LeetCode题解汇总(包括剑指Offer和程序员面试金典,持续更新)
  • 原文地址:https://www.cnblogs.com/nanfengnan/p/13894367.html
Copyright © 2011-2022 走看看