汇编寻址模式

本文主要介绍了汇编的寻址模式,包括立即、寄存器、直接、间接、相对变址、相对基址、基址变址、相对基址变址等模式。阐述了各模式的数据传递原理、特点及适用情况,还提及内存地址分段及默认值设定,强调学习寻址方式要掌握规律并记住特殊情况。


学汇编,首先要学会寻址模式。
寻址模式本质上,就是将数据从一个地方取出来,放进去的过程。
如何能够这样做,那就必须让他们之间有电路连接。
比如将寄存器的内容放到内存中去,他们就是通过总线连接的。
而cpu内部,各个寄存器之间也是有线路连接的。如果能够找到cpu的图示,就能够形象的认识到那些是能够传递数据,那些部件之间是不能够直接传递数据,必须通过中间人来间接传递。

汇编寻址模式

立即                     mov ax,100h
寄存器                 mov ax,bx
直接                     mov ax,[100h]
间接                     mov ax,[bp] ;其中bx,bp是基址寻址,si,di是变址寻址
相对变址                     mov ax,100h[si]
相对基址                     mov ax,100h[bx]
基址变址             mov ax,[bx][si]
相对基址变址     mov ax,100h[bp][di] 

这个是16位汇编的寻址模式,16位的特点,除了寄存器是16位之外,间接寻址所能用的寄存器也限定只能是bx,bp,si,di这是个。
然后和相对偏移量一起构成了各种复合寻址模式。

立即寻址模式,即数据直接和指令一起编码,cpu读入执行的时候,无须再通过任何寻址方式,也就是不用通过地址去找数据。从感性上将,这是唯一不用寻址的模式(虽然他称为一种寻址模式)。

寄存器寻址,从这里看出,寄存器也是有地址的,但是寄存器的地址是不可以间接寻址的。通过寄存器寻址,我们通过寄存器的地址找到寄存器的数据。

直接寻址, 直接寻址将数据的内存地址和指令一起编码,指令通过这个地址,找到相关的数据。
间接寻址, 间接寻址是在直接寻址的基础上面建立起来的,也就是直接寻址得到的数据是一个地址,通过这个地址找到最终的数据,也就是两次寻址,第一次得到的是地址,第二次才是目标数据。

这里面有多种可能,因为一步寻址模式有两个,一个是通过寄存器地址找寄存器数据的寄存器寻址方式;一个是通过内存地址找内存单元上数据的直接寻址方式。但是16位汇编,只采用了寄存器寻址模式作为第一步寻址,这样做的原因在于寄存器寻址的速度快,即使通过两次寻址还是比利用直接寻址快一个数量级。

第二步寻址,却是直接寻址方式,也就是第一步得到的数据,是一个内存地址。为何不两个都是寄存器寻址呢?可能这样做没有什么实用价值吧。

复合寻址模式, 就是变种的间接寻址模式,所谓的间接寻址方式,就是一个寄存器里面包含着内存的地址,而复合寻址模式中,这个内存的地址是由三个部件组合给出的(2~3个),基址部件,包括寄存器bx,bp;变址部件si,di;偏移量,相当于直接寻址方式的常量。

以上忽略了一个事实,那就是内存地址是分段的,也就是cs,ds,ss,es等,可以通过段前缀明确给出,也可以不给出而使用约定默认值。那些寻址方式涉及内存地址的呢?除了立即寻址和寄存器寻址外,其他寻址方式都涉及内存地址。也就是直接寻址,间接寻址,还有复合寻址。默认值是如何设定的呢?是通过寄存器之间的约定,比如使用间接寻址 mov ax,[bx],bx寄存器就约定和ds组合成最终内存地址。下面是一些约定情况,

ip-cs ;指令寻址
sp - ss ;栈寻址
si - ds ;串寻址
di - es ;串寻址
bp - ss
bx,si,di - ds


直接寻址方式,没有寄存器,默认是 ds;
间接寻址方式,bp - ss;  bx,si,di - ds;
复合寻址方式,主要看基址部分,如果是bp就对应ss,否则都是ds;

至于ip 并不在这个范围内,这里面任何一种寻址方式,涉及内存的,都没有包括ip。
ip是指令寻址方式,对应着cs.
类似的, sp用于栈操作指令的栈操作寻址方式,对应着ss.
si 和 es 虽然在这个范围内,但是还有一种情况,就是用做串操作指令的串操作寻址方式,分别对应着ds,和es。

寻址方式的学习,除了了解一般规律,其他关键就是要记住特别情况。

混合动力汽车(HEV)模型的Simscape模型(Matlab代码、Simulink仿真实现)内容概要:本文档介绍了一个混合动力汽车(HEV)的Simscape模型,该模型通过Matlab代码和Simulink仿真工具实现,旨在对混合动力汽车的动力系统进行建模与仿真分析。模型涵盖了发动机、电机、电池、传动系统等关键部件,能够模拟车辆在不同工况下的能量流动与控制策略,适用于动力系统设计、能耗优化及控制算法验证等研究方向。文档还提及该资源属于一个涵盖多个科研领域的MATLAB仿真资源包,涉及电力系统、机器学习、路径规划、信号处理等多个技术方向,配套提供网盘下载链接,便于用户获取完整资源。; 适合人群:具备Matlab/Simulink使用基础的高校研究生、科研人员及从事新能源汽车系统仿真的工程技术人员。; 使用场景及目标:①开展混合动力汽车能量管理策略的研究与仿真验证;②学习基于Simscape的物理系统建模方法;③作为教学案例用于车辆工程或自动化相关课程的实践环节;④与其他优化算法(如智能优化、强化学习)结合,实现控制策略的优化设计。; 阅读建议:建议使用者先熟悉Matlab/Simulink及Simscape基础操作,结合文档中的模型结构逐步理解各模块功能,可在此基础上修改参数或替换控制算法以满足具体研究需求,同时推荐访问提供的网盘链接获取完整代码与示例文件以便深入学习与调试。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值