当前位置:网站首页>微机原理学习笔记-常见寻址方式
微机原理学习笔记-常见寻址方式
2022-07-27 16:22:00 【Miracle Fan】
常见寻址方式
文章目录
1. 立即数寻址
最简单的寻址方式,直接将立即数传送给目的操作数。
MOV AX,9099H ;将立即数送给AX
2.寄存器寻址(寄存器直接寻址)
操作数存放在对应寄存器中。指令编码短,无需从存储器取操作数,执行快
MOV EDX,EBX
INC CL
MOV DS,AX
3. 直接寻址(存储器直接寻址)
操作数存放在存储器中,但有效地址由指令直接给出。EA和操作码一起存放在存储器代码段中
MOV AX,BUFFER ;将地址BUFFER处两个连续的字节地址中的操作数送给AX,BUFFER:存储器中存放单元的符号地址。
//假设BUFFER偏移地址为3000H,(DS)=5000H
MOV AX,DS:[3000H] ;将物理地址53000H中的内容送给AL,53001H送给AH
等价于:
MOV AX,[3000H];
若为其他段寄存器,需要加段超越前缀。
MOV AX,ES:[3000H];
4. 寄存器间接寻址
利用寄存器保存存储单元的地址,可以通过间接寻址访问所有存储单元。即操作数存放在存储器中,但其EA存放在寄存器中,即从EA读取地址,再到对应地址单元寻找对应内容。
E A = [ 寄 存 器 ] EA=[寄存器] EA=[寄存器]
#16位寻址时,偏移地址存放在SI,DI,BP和BX
#1.以SI、DI、BX间接寻址,默认操作数在DS段
MOV AX,[DI]
#2.以BP间接寻址,默认操作数在SS(stack segment)段
MOV DX,[BP]
#如果操作数在其他段,需要在指令操作数前加段超越前缀。
5. 基址寻址
E A = [ 基 址 寄 存 器 ] + 位 移 量 EA=[基址寄存器]+位移量 EA=[基址寄存器]+位移量
16位寻址时默认:BX以DS作为段寄存器;BP以SS作为段寄存器
MOV AX,[BP+24] ;等价于 MOV AX,24[BP]
适用于对一维数组的数组元素进行检索
6. 变址寻址
E A = [ 基 址 寄 存 器 ] + 位 移 量 EA=[基址寄存器]+位移量 EA=[基址寄存器]+位移量
16位寻址时默认:仅SI、DI作为变址寄存器,并且默认以DS作为段寄存器
MOV AX,BUFFER[DI] ;BUFFER是偏移量等价于 MOV AX,[DI+BUFFER]
适用于对一维数组的数组元素进行检索
7.比例变址寻址
E A = [ 变 址 寄 存 器 ] × 比 例 因 子 + 位 移 量 EA=[变址寄存器]\times比例因子+位移量 EA=[变址寄存器]×比例因子+位移量
MOV AX,TABLE[EBP*4]
只适用于32位寻址。
8.基址加变址寄存器寻址
E A = [ 基 址 寄 存 器 ] + [ 变 址 寄 存 器 ] EA=[基址寄存器]+[变址寄存器] EA=[基址寄存器]+[变址寄存器]
一般规定由基址寄存器决定哪一个段寄存器作为基址指针。
MOV AX,[BP][SI] ;由SI决定默认为DS作为段基址寄存器
常用于二维数组的检索和二重循环
9.基址加比例变址寻址
E A = [ 变 址 寄 存 器 ] × 比 例 因 子 + [ 基 址 寄 存 器 ] EA=[变址寄存器] \times 比例因子+[基址寄存器] EA=[变址寄存器]×比例因子+[基址寄存器]
只有32位一种情况。
10.带位移的基址加变址寻址
E A = [ 变 址 寄 存 器 ] + [ 基 址 寄 存 器 ] + 位 移 量 EA=[变址寄存器]+[基址寄存器]+位移量 EA=[变址寄存器]+[基址寄存器]+位移量
MOV AX,[BX+DI+MASK]
这种寻址操作主要用于二维数组操作,位移量即为数组起始地址。
11.带位移的基址加比例变址寻址
E A = [ 变 址 寄 存 器 ] × 比 例 因 子 + [ 基 址 寄 存 器 ] + 位 移 量 EA=[变址寄存器]\times 比例因子+[基址寄存器]+位移量 EA=[变址寄存器]×比例因子+[基址寄存器]+位移量
$
MOV AX,[BX+DI+MASK]
这种寻址操作主要用于二维数组操作,位移量即为数组起始地址。
11.带位移的基址加比例变址寻址
E A = [ 变 址 寄 存 器 ] × 比 例 因 子 + [ 基 址 寄 存 器 ] + 位 移 量 EA=[变址寄存器]\times 比例因子+[基址寄存器]+位移量 EA=[变址寄存器]×比例因子+[基址寄存器]+位移量
边栏推荐
- express get/post/delete...请求
- Here are all the MySQL interview questions you can't expect (the latest version of 2022)
- 内网的公司邮箱服务器怎么发外部邮件
- Valueerror: found input variables with inconsistent numbers of samples: [80019456, 26673152] [error reporting]
- MySQL 05 存储过程
- Acquisition data transmission mode and online monitoring system of vibrating wire wireless acquisition instrument for engineering instruments
- Day 3 of leetcode question brushing
- Overview of Baidu map technology, and application development of basic API and webapi
- Multifunctional wireless remote control moxibustion instrument chip dltap703sd
- Runtimeerror: output with shape [1, 256, 256] doesn't match the broadcast shape [3, 256, 256] [error]
猜你喜欢

MySQL 06 transaction, view, index, backup and recovery

express get/post/delete...请求

Led with fan eye protection learning table lamp touch chip-dlt8s12a

建木持续集成平台v2.5.2发布

LeetCode 刷题 第二天

MySQL 04 advanced query (II)

Music rhythm colorful gradient lamp chip -- dlt8s04a- Jericho

MySQL 05 stored procedure

CMD command

TypeScript安装
随机推荐
Wechat payment and payment callback
Leetcode brushes questions the next day
Latex使用-控制表格或者图形的显示位置
微信支付及支付回调
MicaZ+Tinyos学习笔记(1)
Commodity comment information and comment information classification
Uploading and downloading of files
Order timeout cancellation and commodity query by category
LeetCode 刷题 第三天
JDBC-MySql 01 JDBC操作MySql(增删改查)
Resource for NS2 beginner
How to send external mail to the company mailbox server on the Intranet
Blog Garden beautification tutorial
Infrared hyperspectral survey
商品评论信息与评论信息分类
I'm stupid. When completable future is used with openfegin, it even reports an error
【微信小程序】项目实战—抽签应用
Extension of regular expression
Baidu map eagle eye track service
Household mute mosquito repellent lamp chip-dltap703sd-jericho