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 

  • 相关阅读:
    第一章:Android系统的编译和移植实例读书笔记
    第二章:Android系统与嵌入式开发读书笔记
    第三章:Android移植平台工具介绍读书笔记
    第十章 嵌入式Linux的调试技术
    第九章 硬件抽象层:HAL
    第八章 让开发板发出声音:蜂鸣器驱动
    第七章 LED将为我闪烁:控制发光二极管
    第六章 第一个Linux驱动程序:统计单词个数
    第五章 搭建S3C6410开发板的测试环境
    第四章 源代码的下载和编译
  • 原文地址:https://www.cnblogs.com/nanfengnan/p/13894367.html
Copyright © 2011-2022 走看看