汇编语言第七章——更加灵活的定位内存的方法

本文深入探讨了汇编语言中的高级寻址方法,包括使用[bx+idata]进行数组管理,以及[bx+si]和[bx+di]等复杂寻址方式。文章还介绍了如何在不使用比较操作的情况下实现字母大小写的转换,展示了汇编语言的强大和灵活性。

一个约定:idata表示常量

and和or

我觉得没什么值得解释的,大家应该都是明白的。
举个例子:

and al,10110101b
or al,10101010b

就是把寄存器中的值and上或or上某个数。

ASCII码

这个大家应该也都知道。

字符与字符串

汇编里的字符和字符串由’'给出。
比如:

db ’unIX‘
mov ax,'a'

其中db意思是“define byte”
而其在内存中的存储形式,就是ASCII码对应的数字。

字母大小写转换

我们先摘录作者的一句话:

如果一个问题的解决方案,使我们陷入一种矛盾之中。那么,很有可能是我们考虑问题的出发点有了问题,,或是说,我们起初应用的规律并不合适

很有道理,不是吗?
希望大家能细心体会一下这句话。

下面我们再来看正文,有人可能会说,这不简单吗?字母的大小写转换,这个恐怕是基础中的基础的问题了吧?
没错,是很简单,判断是大写字母还是小写字母,然后减去32或加上32就好了。
但是,现在,我们有一个限制条件,仅能用我们已学的汇编语句,也就是说不能用比较的操作。
那么我们应该怎么处理?


稍加思索,我们便可以观察到,一个大写字母和一个小写字母的ASCII 码的差别在哪里?
那就是25位,一个是0,一个是1,其他全部是一样的。
说到这里,也许你就明白了。

所以,有时候,换个角度考虑,就会得到全新的一篇天地。

用[bx+idata]来寻址

我们标题是更加灵活的寻址方式。
这里就是第一种。
就是用[bx+idata]
其实就相当于[(bx)+idata](debug下)

用[bx+idata]来进行数组管理

这里应该是很好理解的。
相当于bx是数组首地址,然后后面就可以用idata来当下标来使用。

SI和DI

这两个寄存器的功能和bx是类似的。
可以用来寻址。
但是不一样的是,它们不能被是为两个八字节的内存来使用。

[bx+si]和 [bx+di]

我们再来看看这两个寻址方法。
它们两个是类似的。
而他们其实与[bx+idata]类似。
这里的含义也就是[bx+(si)]
我们举个例子:

mov ax,[bx+si]

但这样并不是我们常用的形式。
一种更为常用的等价写法如下:

mov ax,[bx][si]

[bx+si+idata]和[bx+di+idata]

没错,又复合了一层。
他们两个的含义类似,所以我们以[bx+si+idata]为例。
其实呢,含义还是类似的,就是三个数值相加进行寻址。
使用方法如下:

mov ax,[bx+si+idata]

同样,它也有很多的等价写法:

mov ax,[idata+bx+si]
mov ax,idata[bx][si]
mov ax,[bx].idata[si]
mov ax,[bx][si].idata

提示:bx和si的相对位置可以换,即si可以放在bx之前,注意后面两种写法需要在常数前加点

不同寻址方式的灵活运用

现在我们已经有很多的寻址方式了。
那么我们应该怎么去灵活地运用呢?
我们来总结一下各个寻址方式适用的条件:

  1. [bx]:一个变量定位,间接定位
  2. [idata]:常量定位,不能更改,直接定位
  3. [bx+idata]:数组,一个地址的基础上进行寻址
  4. [bx+si]:两个变量访问地址
  5. [bx+si+idata]:两个变量和一个常量

我们都知道,在写代码时,会用到很多的变量。
其中有些是有实际意义,有些可能是一些临时的变量。
当我们的程序越来越复杂,变量越来越多,但是CPU的寄存器就只有14个(8086型),用完了该怎么办?
我们通过之前的学习知道,在汇编过程中,我们保存数据的地方,只有两个:寄存器和内存。
那么既然寄存器用完了,我们就只能用内存了。
所以,在编程中,我们更多的临时数据一个放在一个栈中,这样不仅可以存放更多的数据,而且数据的结构也更加清晰。

结束语

这就是第七章的主要内容了。

基于TROPOMI高光谱遥感仪器获取的大气成分观测资料,本研究聚焦于大气污染物一氧化氮(NO₂)的空间分布与浓度定量反演问题。NO₂作为影响空气质量的关键指标,其精确监测对环境保护与大气科学研究具有显著价值。当前,利用卫星遥感数据结合先进算法实现NO₂浓度的高精度反演已成为该领域的重要研究方向。 本研究构建了一套以深度学习为核心的技术框架,整合了来自TROPOMI仪器的光谱辐射信息、观测几何参数以及辅助气象数据,形成多维度特征数据集。该数据集充分融合了不同来源的观测信息,为深入解析大气中NO₂的时空变化规律提供了数据基础,有助于提升反演模型的准确性与环境预测的可靠性。 在模型架构方面,项目设计了一种多分支神经网络,用于分别处理光谱特征与气象特征等多模态数据。各分支通过独立学习提取代表性特征,并在深层网络中进行特征融合,从而综合利用不同数据的互补信息,显著提高了NO₂浓度反演的整体精度。这种多源信息融合策略有效增强了模型对复杂大气环境的表征能力。 研究过程涵盖了系统的数据处理流程。前期预处理包括辐射定标、噪声抑制及数据标准化等步骤,以保障输入特征的质量与一致性;后期处理则涉及模型输出的物理量转换与结果验证,确保反演结果符合实际大气浓度范围,提升数据的实用价值。 此外,本研究进一步对不同功能区域(如城市建成区、工业带、郊区及自然背景区)的NO₂浓度分布进行了对比分析,揭示了人类活动与污染物空间格局的关联性。相关结论可为区域环境规划、污染管控政策的制定提供科学依据,助力大气环境治理与公共健康保护。 综上所述,本研究通过融合TROPOMI高光谱数据与多模态特征深度学习技术,发展了一套高效、准确的大气NO₂浓度遥感反演方法,不仅提升了卫星大气监测的技术水平,也为环境管理与决策支持提供了重要的技术工具。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值