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

    位运算

  • 相关阅读:
    使用 Dockerfile 自定义 Nginx 镜像
    Windows下Rancher复制Pod内文件到本地
    SSL基础知识及Nginx/Tomcat配置SSL
    linux内核源码
    strace:跟踪进程的系统调用 、ltrace:跟踪进程调用库函数,runlevel & init & service
    C10K,C10M问题
    操作系统
    深入理解GOT表和PLT表
    为什么 List<Struct> 在 C# 中的分配速度比 List<Class> 快 15 倍
    如何计算时间复杂度
  • 原文地址:https://www.cnblogs.com/trevain/p/14497496.html
Copyright © 2011-2022 走看看