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

位运算

原文地址:https://www.cnblogs.com/trevain/p/14497496.html