zoukankan      html  css  js  c++  java
  • 2.汇编语言--masn代码基本结构、数值概念、位运算

     代码基本结构:

    ; .586 指令集 分号是注释
    .586
    
    ; MODEL 后面加 内存模式flat 和语言模式stdcall +其他模式(可以没有)
    ; 调用约定 flat内存使用方式  stdcall:win32  
    .MODEL flat, stdcall
    
    ;includelib +包含的静态库lib,链接库 系统api
    includelib user32.lib
    includelib kernel32.lib
    
    ; 系统api ExitProcess 退出进程  MesageBoxA:弹出消息窗口  PROTO 伪指令
    ExitProcess PROTO, dwExitCode : DWORD
    MessageBoxA PROTO hwnd : DWORD, lpText : BYTE, lpCaption : BYTE, uType :DWORD
    
    ;大小写不敏感
    option casemap:none
    
    ;上面都是头,下面是段
    
    ; 段 .data:数据段,可读可写已经定义的变量,已经初始化,已经储存在.data内存区段里面   
    ;.data?:未初始化的数据段,未定义的变量,储存在缓冲区,不会增大exe文件的大小
    ;  .const: 常量数据段,可读不可写,其实吧一般都不用直接定义在.data里面
    ;  .code:代码数据段,可执行的代码都在这里  .stack:堆栈段,现在没必要写了,系统会自己申请
    .data
    Number DWORD 0
    text db "shellcode",0
    .code
    ; main 是我们自己配置的代码入口点,不叫main也可以 需要告诉编辑器,在链接器高级里面指定的入口点 main
    ; proc 是函数的意思
    main proc
            mov eax,5
            mov ebx,6
            add eax,ebx
            add eax,Number
            push 0
            push offset text
            push offset text
            push 0
            call MessageBoxA
            add esp,16
            call ExitProcess
    main ENDP
    ;end 结束 main
    
    ;主函数起始位置
    END main
    ;相当于 int main(){} 函数

     数值的概念

    度量单位                  c语言里面
    基本数据度量单位:
    1BYTE(字节)=8BIT(比特) 相当于一个字符chat
    WORD=2BYTE=16BIT 短整型
    DWORD=4BYTE        整型
    QWORD=8BYTE

    1kb = 1024b = 8192B

    取值范围:
    BYTE = 有符号:-128到127 无符号:0到255

    位运算

  • 相关阅读:
    再论使用Oracle Instant Client连接Oracle
    再谈业务逻辑架构模式(事务脚本,表模块,活动记录,领域模型)
    业务逻辑架构模式(事务脚本,表模块,活动记录,领域模型)
    .net程序集组成与内存布局
    多参的实现原理
    起点
    Windows1[头文件]
    C++中构造函数、析构函数、拷贝构造函数详解
    PHP 开发工具
    写点东西顺便吐槽(很弱很弱的技术文)
  • 原文地址:https://www.cnblogs.com/trevain/p/14497496.html
Copyright © 2011-2022 走看看