汇编--寻址方式

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]
  ;也可以制定其他段跨越前缀来取得其他段中的数据
  mov AX,ES:[BX]

5、寄存器相对寻址方式(直接变址寻址方式)

  mov AX,COUNT[SI]     mov AX,[COUNT+SI]

6、基址变址寻址方式

  mov AX,[BX][DI]  MOV AX,[BX+DI]      mov AX,[BX][BP] 是错误的。

7、相对基址变址寻址方式

  mov AX,MASK[BX][SI]  mov AX,MASK[BX+SI]  MOV AX,[MASK+BX+SI]

8、比例变址寻址方式

  MOV EAX,COUNT[ESI*4]

9、基址比例变址寻址方式

  mov ECX,[EAX][EDX*8]

10、相对基址比例变址寻址方式

  mov EAX,TABLE[EBP][EDI*4]  

JMP

1、段内直接寻址

2、段内间接寻址

jmp  BX     ;(IP)=BX
jmp TABLE[BX]   ;(ip) = 16d*(ds) + (BX) +位移量

WORD PTR为操作符。指定地址是字

3、段间直接寻址

4、段间间接寻址

段内,段间区别是,段内修改(IP)的值,段间修改(CS:IP)的值

BP 是寄存器,它的用途有点特殊,是和堆栈指针SP联合使用的,作为SP校准使用的,只有在寻找堆栈里的数据和使用个别的寻址方式时候才能用到
比如说,堆栈中压入了很多数据或者地址,你肯定想通过SP来访问这些数据或者地址,但SP是要指向栈顶的,是不能随便乱改的,这时候你就需要使用BP,把SP的值传递给BP,通过BP来寻找堆栈里数据或者地址.



SI源变址寄存器,DI目地变址寄存器,既然是变址寄存器,那么他们肯定是在某个地址的基础上进行偏移变化,由此我们就得出了需要基址寄存器。

[SI]是寄存器间接寻址,它是指SI中地址的内容如
mov si,2000
mov ax,[si]    //将2000地址中的内容赋给ax而SI,寄存器寻址方式
SI 就是指SI本身的内容
mov si,2000
mov ax,si     //将SI中的内容2000赋给ax

  

时间: 2024-10-12 03:45:11

汇编--寻址方式的相关文章

汇编寻址方式记录

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

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

汇编学习笔记(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 :重复赋值指令

汇编指令寻址方式

一条指令的寻址方式决定了这个操作如何利用指令中所携带的数据 去寻找真正的操作数据.这里,按最直观的理解分做4大类. (1)立即寻址:真正的操作数就包含在指令当中. MOV EAX,1 这条指令的写法就是立即寻址,操作数就是1,指令的含义是把1赋给EAX. (2)寄存器寻址:操作数据在寄存器内. MOV EAX,EBX 这条指令的写法就是寄存器寻址,操作数放在EBX内,指令的内含义是把EBX 内的数据赋给EAX. (3)直接寻址:操作数的地址被直接写在指令内. MOV EAX,[0x1000] 这

ARM 内核 汇编指令 的 8种 寻址方式

str: store register ->指令将寄存器内容存到内存空间中, ldr:  load register 将内存内容加载到通用寄存器, ldr/str 组合来实现ARM CPU 和内存数据的 交换! 1.mov r1,r2;  //寄存器r2的内容复制到r1中,寄存器寻址方式,(r1,r2 ARM中的通用寄存器) 2.mov r0,#0xFF00; //数0xFF00复制到r0中,立即寻址方式,(#代表后面跟一个数) 3.mov r0,r1,lsl #3; //将r1中的内容左移三位

Linux汇编教程04:寻址方式

这一节,我们主要来讨论寻址方式,这一点十分重要. 我们上一节有稍微提了一下,内存地址引用的通用格式: 地址或偏移(%基址寄存器, %索引寄存器, 比例因子 ) 结果地址 = 地址或偏移 + %基址寄存器 + 比例因子 + %索引寄存器 地址或偏移和比例因子必须是常数,剩下的那两个必须是寄存器,在缺省的情况下,都用0来代替. 立即寻址方式 直接将值加载到目地位置中 movl $221, %eax</p> 1 直接寻址方式 通过使用地址或偏移来实现 movl ADDRESS, %eax</p

入门 ARM 汇编(二)—— 寻址方式

忧愁他整天拉着我的心,像一个琴师操练他的琴:悲哀像是海礁间的飞涛:看他那汹涌,听他那呼号!—— 徐志摩·四行诗一首 ilocker:关注 Android 安全(新入行,0基础) QQ: 2597294287 立即数寻址 源操作数为立即数,多用于给寄存器赋初值. 指令执行后,R1 寄存器的值就是 2. 立即数也可为:十六进制,# 后跟 0x:八进制,# 后跟 0:二进制,# 后跟 0b. 立即数有合法性限制,具体可 google 相关资料. 寄存器寻址 操作数的值在寄存器中. 指令执行后,R0 =