80X86汇编语法笔记

作者:流沙 分类: 网络安全 发布于:2018-4-17 16:17 ė243次浏览 60条评论

主要看了一下汇编的语法知识,指令算比较熟悉了


一点笔记贴上来


80X86汇编学习笔记

代码
====================================================
; Example: Hello World
; Author GYARMY
; Date: 2018-4-10
.386
.MODEL FLAT

ExitProcess PROTO stdcall, dwExitCode:DWORD

.STACK 4096

.DATA
msg BYTE "Hello World",0

.CODE
_start:
INVOKE ExitProcess,0
PUBLIC _start
END _start
====================================================

编译与链接
ml /c /coff hello.asm
link /subsystem:console /entry:start /out:hello.exe hello.obj io.obj Kernel32.lib


======================C语言==================

;>>>>>>>>>>>>>>>>>>>>
;指令的工作模式
;>>>>>>>>>>>>>>>>>>>>
.386
.model flat

;>>>>>>>>>>>>>>>>>>>>
;include 包含文件
;>>>>>>>>>>>>>>>>>>>>
includelib Kernel32.Lib
includelib msvcrt.Lib

;>>>>>>>>>>>>>>>>>>>>
;函数说明
;>>>>>>>>>>>>>>>>>>>>
ExitProcess PROTO stdcall, dwExitCode:DWORD
printf PROTO c : ptr sbyte, : vararg

;>>>>>>>>>>>>>>>>>>>>
;stack
;>>>>>>>>>>>>>>>>>>>>
stack segment
 db 100 dup(?)
stack ends


;>>>>>>>>>>>>>>>>>>>>>
;data
;>>>>>>>>>>>>>>>>>>>>>
data segment
msg db "Hello World",0
data ends

;>>>>>>>>>>>>>>>>>>>>>
;code
;>>>>>>>>>>>>>>>>>>>>>
code segment 

_start:
invoke printf, offset msg
invoke ExitProcess,0

public _start

code ends
end _start

======================C语言==================

改进的写法


==========================================
;>>>>>>>>>>>>>>>>>>>>
;指令的工作模式
;>>>>>>>>>>>>>>>>>>>>
.386
.model flat

;>>>>>>>>>>>>>>>>>>>>
;include 包含文件
;>>>>>>>>>>>>>>>>>>>>
includelib Kernel32.Lib
includelib msvcrt.Lib

;>>>>>>>>>>>>>>>>>>>>
;函数说明
;>>>>>>>>>>>>>>>>>>>>
ExitProcess PROTO stdcall, dwExitCode:DWORD
printf PROTO c : ptr sbyte, : vararg

;>>>>>>>>>>>>>>>>>>>>
;stack
;>>>>>>>>>>>>>>>>>>>>
.stack 100
;>>>>>>>>>>>>>>>>>>>>>
;data
;>>>>>>>>>>>>>>>>>>>>>
.data
msg db "Hello World",0


;>>>>>>>>>>>>>>>>>>>>>
;code
;>>>>>>>>>>>>>>>>>>>>>
.code

_start:
invoke printf, offset msg
invoke ExitProcess,0

public _start

end _start

==================================================

==================================================
.386
.model flat

includelib Kernel32.Lib
includelib msvcrt.Lib

ExitProcess proto stdcall, dwExitCode:DWORD
printf proto c : ptr sbyte, : vararg

.stack 100

.data
a dword 9
b dword 26
m   dword ?
n dword ?
fmt byte "%d",13,10,0

.code 
_start:
mov eax,a
add eax,b
mov m,eax
mov eax,12
add eax,88
mov n,eax
mov eax,m
invoke printf, offset fmt,eax
mov eax,n
invoke printf, offset fmt,eax
invoke ExitProcess,0

public _start

end _start
==================================================

使用masm32

.386
.model flat
option casemap:none
option language:c

include     windows.inc
include     kernel32.inc
include     user32.inc
includelib     user32.lib
includelib     kernel32.lib

.data
msg        byte     "Hello World",0
cap        byte     "输出",0

.code
start:
            invoke  MessageBox,
                    NULL,
                    offset msg,
                    offset cap,
                    MB_OK

            invoke  ExitProcess,0

public      start
            end start

==================================================
; 生成清单文件
ml /c /coff /Fl demo2.asm
==================================================
.386
.model flat

ExitProcess proto near32 stdcall, dwExitCode:DWORD
.stack 4096

.data
number dword -105
sum dword ?

.code
_start:
mov eax,number
add eax,158
mov sum,eax
invoke ExitProcess,0
public _start
end _start
==================================================

各种指令 跳转
汇编的基础
跳着在看
==================================================

内联汇编
__asm{
mov eax,myValue
}



本文出自 流沙,转载时请注明出处及相应链接。

0

发表评论

电子邮件地址不会被公开。必填项已用*标注


Ɣ回顶部