汇编寻址方式记录

x86/amd64汇编指令的两大风格分别是Intel汇编与AT&T汇编,分别被Microsoft Windows/Visual C++与GNU/Gas采用(Gas也可使用Intel汇编风格):

项目 Intel风格 AT&T风格
操作数顺序 目标操作数在前 源操作数在前
寄存器 原样 加%前缀
立即数 原样 加$前缀
16进制立即数 用后缀B与H分别表示二进制与十六进制 对于16进制字母开头的要加前缀0 加前缀0x
访问内存长度的表示 前缀BYTE PTR, WORD PTR, DWORD PTR和QWORD PTR表示字节,字,双字和四字 后缀b,w,l,q表示字节,字,双字和四字
引用全局或静态变量var的值 [var] var
引用全局或静态变量var的地址 var $var
引用局部变量 需要基于栈指针(rsp)
绝对寻址 [imm] imm
间接寻址 [reg] (%reg)
基址相对寻址 [reg +imm] imm(%reg)
变址寻址 [base+index] (base,index)
变址寻址 imm[base+index] imm(base,index)
比例变址寻址 imm[base + index * scale ] imm(base, index, scale)
scale只能是1,2,4,8其中的一个数字(1省略不写就是普通变址寻址)
代码注释 单行注释用;+注释内容。例如:mov rax, rdx ;这里是注释
注意 这里imm为立即数,base和index为寄存器,scale为伸缩量

原文地址:https://www.cnblogs.com/songyaqi/p/12075155.html

时间: 2024-11-23 13:42:45

汇编寻址方式记录的相关文章

ARM重要汇编指令记录

IMPORT ,定义表示这是一个外部变量的标号,不是在本程序定义的EXPORT ,表示本程序里面用到的变量提供给其他模块调用的.以上两个在汇编和C语言混合编程的时候用到 ENDP    表示PROC所定义的过程结束. (end procedure)ENDS    表示SEGMENT定义的段结束.   (end segment)END     程序结束. B.BL.BX.BLX 和 BXJ跳转.带链接跳转.跳转并切换指令集.带链接跳转并切换指令集.跳转并转换到 Jazelle 状态. 状态寄存器传

汇编--寻址方式

1.立即寻址方式 mov AL,5 (AL)=05H mov AX,3064H (AX)=3064H mov EAX,123456H (EAX)=123456H 2.寄存器寻址方式 mov AX,BX (AX)=3064H (BX)=1234H (AX)=1234H MOV EXC,EDX 3.直接寻址方式 mov AX,[2000H] mov AX,2000H ;这两者等效 4.寄存器间接寻址方式 mov AX,[BX] 默认DS:[BX] ;也可以制定其他段跨越前缀来取得其他段中的数据 mo

16位汇编 --寻址方式

1.8086/8088的基本寻址方式可分为哪三类?它们说明了什么? 存储器 立即 寄存器 3中寻址方式 2.存储器寻址方式可分为哪几种?何为存储单元的有效地址? 3.请说明如下指令中源操作数的寻址方式,并作相互比较: MOV BX,[1234H] MOV BX,1234 MOV DX,BX MOV DX,[BX] MOV DX,[BX+1234H] MOV DX,[BX+DI] MOV DX,[BX+DI+1234H] 4.8086/8088提供了灵活多样的寻址方式.如何恰当的选择寻址方式? 5

缓冲区溢出攻击

缓冲区溢出(Buffer Overflow)是计算机安全领域内既经典而又古老的话题.随着计算机系统安全性的加强,传统的缓冲区溢出攻击方式可能变得不再奏效,相应的介绍缓冲区溢出原理的资料也变得“大众化”起来.其中看雪的<0day安全:软件漏洞分析技术>一书将缓冲区溢出攻击的原理阐述得简洁明了.本文参考该书对缓冲区溢出原理的讲解,并结合实际的代码实例进行验证.不过即便如此,完成一个简单的溢出代码也需要解决很多书中无法涉及的问题,尤其是面对较新的具有安全特性的编译器——比如MS的Visual Stu

转shellcode介绍

缓冲区溢出攻击   缓冲区溢出(Buffer Overflow)是计算机安全领域内既经典而又古老的话题.随着计算机系统安全性的加强,传统的缓冲区溢出攻击方式可能变得不再奏效,相应的介绍缓冲区溢出原理的资料也变得“大众化”起来.其中看雪的<0day安全:软件漏洞分析技术>一书将缓冲区溢出攻击的原理阐述得简洁明了.本文参考该书对缓冲区溢出原理的讲解,并结合实际的代码实例进行验证.不过即便如此,完成一个简单的溢出代码也需要解决很多书中无法涉及的问题,尤其是面对较新的具有安全特性的编译器——比如MS的

记录自己的第一个比较长的汇编代码

记录自己的第一个比较长的汇编代码, 看学完后,回过头再来看的感觉是什么. 没新意的想法写出来的代码,只是没有纯dos环境.通过debug倒是看到全部的结果,不过是一个个显示 .题目是王爽汇编实验9. 本是自己记录,当然,大家有什么看法,欢迎随便说说. assume cs:code, ss:stacksgdatasg segment db 'welcome to masm!'datasg endscolorsg segmentdb 00000010b, 00100100b, 01110001bco

汇编学习笔记(2)-80x86寻址方式

寻址方式 所谓寻址方式就是表示指令中数据所在地址的方式.一共有七种寻址方案 立即数寻址 寄存器寻址 直接寻址 寄存器间接寻址 寄存器相对选址 基址变质寻址 相对基址变质寻址 在此之前,先介绍一个数据复制指令 MOV 指令, 格式是 MOV AX, BX . AX, BX是寄存器上一章介绍过的MOV就是指令. 指令的含义就是将BX的值复制给AX.C语言的表述就是AX=BX; 举个例子 如果一开始 AX=5; BX=0; MOV AX,BX 之后 AX = BX 都是0: 立即数寻址 / 寄存器寻址

【Intel 汇编】寄存器、寻址方式、简单规则

此处汇编仅仅为了看懂Linux下编译.连接.载入过程及原理 Intel 汇编规则: 在汇编程序中,立即数前面要加$,寄存器名前面要加%,以便跟符号名区分开. mov 源 目的(字长用指令的后缀l表示32位) #PURPOSE: Simple program that exits and returns a # status code back to the Linux kernel # #INPUT: none # #OUTPUT: returns a status code. This can

汇编试验七:寻址方式在结构化数据访问中的应用

预备知识: (1)寻址方式 <汇编语言>P169 (2)div指令 被除数 dx + ax,除数 bx ,商 ax,dx 余数: (3)dd :双字数据 (4)dup :重复赋值指令