汇编--操作数寻址方式
来源:互联网 发布:网络投稿怎么赚钱 编辑:程序博客网 时间:2024/05/22 14:55
一:直接内存操作数
num DWORD 200h
mov eax, num
mov ebx,[num] ;==mov ebx, num 因为num数据标号本身就代表着地址
二:直接偏移操作数
arrayB BYTE 10h,20h,30h,40h,50h
mov al, [arrayB + 2]
mov bl, arrayB + 2
arrayW WORD 100h,200h,300h
mov ax, [arrayW+2] ;ax=200h
在PE文件中,直接是arrayW+2相加之后的地址
三:间接操作数
al1 BYTE 10h
mov eax, 0
mov esi, OFFSET val1
mov al, [esi] ;源操作数
mov bl, 4
mov [esi], bl ;目的操作数
inc BYTE PTR [esi]
访问数组
.data
arrayB BYTE 10h,20h,30h
.code
main PROC
mov esi, OFFSET arrayB
mov al,[esi]
inc esi
add al,[esi]
inc esi
add al,[esi]
call DumpRegs
INVOKE ExitProcess, 0
main ENDP
END main
四:变址操作数
变址操作数把常量和寄存器相加得到一个有效地址
constant[reg] ;与C中 array[index]类似,
[constant+reg]
constant是变量的名字 mov esi,0 mov al,[arrarA + esi] inc esi
mov esi, OFFSET arrarA mov ax,[esi] mov ax,[esi+2]
比例因子
mov eax, array[esi*TYPE array] == mov eax, [array+esi*TYPE array]
五:基址变址操作数
把两个寄存器的值相加,得到一个偏移地址,两个寄存器分别称为基址和变址
[base + index] base,index可以是任意的32位通用寄存器
mov eax, [ebx+edx]
将变址地址*比例因子
mov eax, [ebx+edx*TYPE op]
六:相对基址变址操作数
将偏移,基址寄存器,变址寄存器,以及可选的比例因子组合起来
[base + index +displacement]
displacement[base + index]
displacement可以是变量的名字或者是常量表达式。
base index可以是任意的32位通用寄存器
mov ebx, Rowsize
mov esi, 2
mov eax, tableB[ebx + esi*TYPE tableB]
基址变址操作数
.data
array WORD 10h, 20h, 90h
rowsize = $-array
WORD 30h, 40h, 23h
WORD 50h, 60h, 45h
.code
main PROC
mov eax, OFFSET array
mov ebx, rowsize
add ebx, TYPE WORD
mov cx, WORD ptr[eax+ebx]
call DumpRegs
push 0
call ExitProcess
main ENDP
END main
带比例因子的基址变址操作数
.data
array WORD 10h, 20h, 90h
rowsize = $-array
WORD 30h, 40h, 23h
WORD 50h, 60h, 45h
.code
main PROC
mov eax, OFFSET array
add eax, rowsize
mov ebx, 2
mov cx, WORD ptr[eax+ebx*TYPE WORD]
call DumpRegs
push 0
call ExitProcess
main ENDP
END main
带比例因子的相对基址变址操作数
.data
array WORD 10h, 20h, 90h
rowsize = $-array
WORD 30h, 40h, 23h
WORD 50h, 60h, 45h
.code
main PROC
mov eax, rowsize
mov ebx, 1
;mov cx, WORD ptr[array+eax+ebx*TYPE WORD]
mov cx, WORD ptr array[eax+ebx*TYPE WORD]
call DumpRegs
push 0
call ExitProcess
main ENDP
END main
相对基址变址操作数
.data
array WORD 10h, 20h, 90h
rowsize = $-array
WORD 30h, 40h, 23h
WORD 50h, 60h, 45h
.code
main PROC
mov eax, rowsize
mov ebx, 1*TYPE WORD
mov cx, WORD ptr[array+eax+ebx]
;mov cx, WORD ptr array[eax+ebx]
call DumpRegs
push 0
call ExitProcess
main ENDP
END main
- 汇编--操作数寻址方式
- 【汇编】操作数的寻址方式
- 操作数寻址方式
- 操作数的寻址方式
- 操作数的寻址方式
- 操作数的寻址方式
- 寻址方式 寄存器寻址方式 立即数寻址方式 存储器寻址方式: 直接寻址方式,寄存器间接寻址方式,变址和基址寻址方式,基址变址寻址方式 串操作寻址方式 I/O端口寻址方式
- 操作数的寻址方式(非常重要)
- 指令及操作数的寻址方式
- 寄存器操作数的寻址方式
- 操作数的寻址方式(非常重要)
- 操作数的寻址方式(非常重要)
- 操作数的寻址方式(寄存器间接,基址寻址,间址寻址,比例间接寻址)
- 关于操作数寻址方式、指令寻址方式、堆栈寻址方式的详解
- 汇编 寻址方式总结
- [汇编]8086寻址方式
- 汇编寻址方式总结
- 汇编 寻址方式总结
- 单例模式
- CF #364 (Div. 2)( A. Cards 简单模拟)
- Hibernate的一级缓存与二级缓存
- 红黑树的基本原理
- 内网渗透笔记-端口转发,内网代理
- 汇编--操作数寻址方式
- Java内存模型及GC原理
- POJ 1753 Flip Game(枚举+dfs)
- poj 1325
- [线段树 Treap] BZOJ 2770 YY的Treap
- [转]Quick Tip: Error: 18456, Severity: 14, State: 38.
- CF #364 (Div. 2) (B. Cells Not Under Attack 标记)
- 基于Feistel网络的DES和3DES加密算法
- onbeforeunload 事件和onunload事件(点击刷新后处理)