汇编语言学习笔记(七)更灵活的定位内存地址的方法

计算机组成原理第四章--指令系统第二部分:基本的汇编语言和函数调用 本文详细地介绍了一些常用的基本汇编代码,以及其背后的硬件知识,包括函数调用栈的运行原理等,通过本文的学习可以对C++函数的调用理解达到一个新的境界。 阅读详情

1.and or 指令
and逻辑与:同真为真
可以将操作对象的某一位设置为0 :
比如第六位:则and al,10111111B

or或运算:同假为假
可以将操作对象的某一位设置为1 :
比如第六位:则and al,01000000B

ASCII码中大小写转换:相差32为2的5次方。字节位置在第5位不同
可以利用上面的运算可以轻松的转换大小写

2.[bx+idata]:对偏移地址进行偏移操作
[bx+idata]=[idata+bx]=idata[bx]=[bx].idata

用[bx+idata]的方式进行数组的处理
可以用[0+bx]和[5+bx]的方式在同一个循环中定位两个字符串的第一个字符
处理数组:
c语言定位方式:a[i]
汇编语言定位方式:0[bx]

3.SI和DI
SI和DI和bx功能相近,只是不能分成两个8位寄存器来使用
也可以使用[si/di+idata]

常用ds:si指向复制的原始字符串
常用ds:di指向复制的目的空间
每次复制两个字节,因为si和di不能拆成两个字节
更灵活的方式:
[bx+si]和[bx+di]
偏移地址:(bx)+(si)
mov ax,[bx+si] = mov ax,[bx][si]
(ax)=((ds)*16+(bx)+(si))

[bx+si+idata]和[bx+di+idata]
双层循环:
start:    mov cx,4
s0:    mov si,0
    mov cx,3
s:    add al,110111111b

    loop:s
    add ah,001000000b
    loop:s0

    mov ax,4c00h
    int 21h
双层循环时,内部的指数器覆盖了外层循环,会导致内存结束后,外层编程FFFF

需要每次先保存外层循环
s0:mov dx,cx
s:...
mov cx,dx
loop s0

但是寄存器又很可能被用到,所以需要定义个dw来保存cx的值
data segment
dw 0
data ends

s0:ds:[40H],cx
s:
...
loop s
mov cs,ds:[40H]
loop s0

但是有很麻烦,可以采用vc栈的做法(这个非常重要)
定义栈空间:
stacksg segment
    dw 0,0,0,0,0,0,0,0
stacksg segment
s0:push cx
...
s:
...
loop s
pop cx
loop s0



STM32F4驱动海康工业相机实战:从PWM信号到精准触发拍照(附完整代码) 本文详细介绍了如何使用STM32F4开发板驱动海康工业相机,实现PWM信号精准触发拍照的完整方案。从硬件连接到PWM信号生成,再到相机触发配置与延迟补偿,提供了实战经验和完整代码,帮助开发者解决工业相机硬件触发中的关键问题。 阅读详情

相关推荐

COMSOL模拟CO2驱替CH4:多物理场耦合建模与工程应用详解

在非常规天然气开发与碳封存工程中,多孔介质内的渗流、吸附与岩石变形相互耦合,使得CO2驱替CH4的产能预测和CO2封存评估无法仅靠经验公式完成。以达西定律描述裂隙流动、以扩展Langmuir方程刻画竞争吸附、用应力-吸附-渗透率关系关联煤岩变形,是多物理场耦合数值模拟的核心路径。COMSOL Multiphysics凭借内置渗流、固体力学与组分传递接口,能够将这些机制整合为可参数化扫描的仿真模型,为注气压力、井距、渗透率演化等方案设计提供量化依据。围绕CO2驱替CH4模拟的建模流程、参数取法与结果判读,可形

weixin_29574585的博客 160

汇编语言学习第七章-更灵活的定位内存地址的方法

本博文系列参考自>第三版,作者:王爽 前面已经通过类似[0]和[bx]的方法进行了内存定位了。本章将涉及更多内存地址定位和编程的方法。 7.1 and 和 or 指令 (1) and指令,逻辑按位与指令 例如: mov al,01100011B and al,00111011B 执行后 al=00100011B  and指令可以用来将某个数的位置为零。 比如我们要

vpoet 3158

25年PINN创新点大盘点!

在科研论文的激烈角逐中,想轻松产出高含金量成果?物理信息神经网络(PINN)堪称“宝藏研究方向”,是冲击高分区论文的绝佳赛道!对于渴望发表优质论文的科研伙伴,这三大研究路径值得重点关注。首先是自适应PINN,在PINN训练过程中,物理方程与实测数据间的矛盾常常导致权重调节困难,而恰好直击这一痛点,是极具价值的研究方向。其次,同样前景广阔,传统多物理场同时训练效果欠佳,如今分阶段训练方法脱颖而出,成效显著且竞争较小。最后,探索及多任务学习等技术的融合,能实现优势叠加,碰撞出创新火花。

Malaai的博客 1970

汇编语言代码重定位

远程线程的代码重定位:就是修正函数、变量的地址使它们能在新的进程(线程)中正常调用.常用方法是使用偏移量,使这些地址用[偏移量+变量名]的形式来表现。用函数时,参数要用到全局变量的时候,要先lea出地址来; 经典的重定位代码: //--------取偏移量方法 ----------------------------------------------------     call ...

weixin_30364147的博客 964

手把手教你用Simulink+CANoe+Carsim搭建硬件在环仿真环境(避坑指南)

本文是一份详细的硬件在环仿真环境搭建指南,重点讲解如何将Simulink、CANoe和CarSim三大工具进行实战融合。内容涵盖软件版本兼容性、授权避坑、环境配置,并分步演示了从离线联合仿真到实现软实时同步的完整流程,旨在帮助汽车电子工程师高效构建稳定的HIL测试平台。

weixin_29092579的博客 406

WIN32汇编语言程序设计——获取重定位表信息的实例分析(CHAR17)

重定位表的结构和获取过程分析

evagenius的博客 410

保姆级拆解:HP 1312NF/CM1415打印机进纸离合器清洁与更换全记录(附B站/油管视频指路)

本文详细记录了HP 1312NF打印机进纸离合器故障的诊断与修复全过程,包括故障判断、工具准备、拆解步骤、清洁更换技巧及预防措施。特别针对离合器内部海绵老化粘连问题,提供了电工胶布和硬纸片两种实用替代方案,并附有B站/油管视频指路,帮助用户轻松完成打印机维修。

weixin_31102231的博客 375

笔记1:汇编代码重定位

参考文件:重定位反汇编后代码,重定位汇编代码,链接脚本 三星开发板S5PV210 参考文件一:链接脚本 链接脚本的理解: SECTION{} 这个是整个链接脚本 . 点号在链接脚本中代表当前位置 .text:代码段 .data:数据段 .bss:bss段 SECTIONS { . = 0xd0024000; .text : { start

wxywxywxy110的博客 2419

数据分析案例-电影数据可视化分析

数据介绍数据为2011-2021电影数据可视化分析首先导入本次项目需要的包和数据 数据预处理 可视化

m0_64336780的博客 2万+

Word2vec核心模型精讲:CBOW与Skip-gram

Word2vec是Google提出的词向量模型,通过CBOW和Skip-gram两种神经网络架构将词汇映射到低维向量空间。CBOW通过上下文预测中心词,训练速度快但高频词表现更好;Skip-gram则相反,通过中心词预测上下文,适合处理生僻词。为解决softmax计算效率问题,Word2vec引入基于哈夫曼树的Hierarchical Softmax优化技术,将复杂度从O(V)降至O(logV)。文章详细解析了两种模型的原理差异,并演示了哈夫曼树的构造过程及其在词向量训练中的关键作用,这种结合词频的优

Trisyp的博客 530

【汇编语言】更灵活的定位内存地址的方法(三)—— 不同的寻址方式的灵活应用

本文主要是复习之前所讲的各种寻址方式,然后通过例题来提升对寻址方式的灵活应用。

2301_80191662的博客 1887

Open3D 实现CSF布料模拟算法【2025最新版】

CSF布料模拟算法在open3d模块下的实现,博客长期更新,本文最近更新时间为:2025年1月16日。。

点云侠的博客 5746

更灵活的定位内存地址的方法

将一个内存单元的内容送入ax,这个内存单元的长度为2字节(字单元),存放一个字,偏移地址为bx中的数值加上si中的数值再加上idata,段地址在ds中。我们需要用到二重循环,应该在每次开始内层循环的时候,将外层循环的cx中的数值保存起来,在执行外层循环的loop指令前,再恢复外层循环的cx数值。将一个内存单元的内容送入ax,这个内存单元的长度为2字节(字单元),存放一个字,偏移地址为bx中的数值加上si中的数值,段地址在ds中。一个字母,不管它原来是大写还是小写,将它的第5位置0,它就必将变为大写字母;

我的博客 1392

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

【汇编语言】更灵活的定位内存地址的方法(二)—— 从 [bx+idata] 到 [bx+si+idata]:让你灵活的访问内存

本文主要介绍了一下在汇编语言中如何用更多方式进行内存访问,使得访问内存更加灵活。

2301_80191662的博客 2162

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

汇编语言 第七章-更灵活的定位内存地址的方法

在前面,我们用[bx(si或di)]和[bx(si或di)+idata] 的方式来指明一个内存单元,我们还可以用更灵活的方式: [bx+si] [bx+di] [bx+si]和[bx+di]的含义相似,我们以[bx+si]为例进行讲解。[bx+si]表示一个内存单元,它的偏移地址为(bx)+(si)(即bx中的数值加上si中的数值)。

2302_80490510的博客 1573

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

(七)汇编语言——更灵活的定位内存地址的方法

我们知道,对于汇编来说,内存是极为重要的,所以,能精准且巧妙地定位内存地址是非常重要的。接下来,我们就来简单介绍一下定位内存地址的几种方法吧!但是在这之前,我们还要学习一些其他的知识点,就让我们开始今天的学习吧!

weixin_66578482的博客 1887

二进制安全-汇编语言-07-更灵活的定位内存地址的方法

这两个字符串在内存中的起始地址是不一样的,但是,它们中的每一个字符,从起始地址开始的相对地址的变化是相同的。计算机中,所有的信息都是二进制。本章以读程序为主,向我们展示了更灵活的寻址方式,也给了更为合理的分段模式,也实现了更多更有趣的程序,似乎距离我们读写一些更复杂更有趣的功能的程序不远了,再坚持一下!在前面的学习中,我们用[bx]的方式来指明一个内存单元,还可以用一种更为灵活的方式来指明内存单元:[bx+idata]表示一个内存单元,它的偏移地址为(bx)+idata(bx中的数值加上idata)

m0_52505633的博客 720

《汇编语言》第七章:更灵活的定位内存地址的方法

《汇编语言》第七章:更灵活的定位内存地址的方法

生活是修行的博客 1222

【汇编语言学习Day-10】第七章:更灵活的定位内存地址的方法

文章目录参考书籍:[《汇编语言(第2版)》](https://baike.baidu.com/item/%E6%B1%87%E7%BC%96%E8%AF%AD%E8%A8%80/3460146?fr=aladdin)——王爽,参考视频:[《零基础入门学习汇编语言》](https://www.bilibili.com/video/BV1Rs411c7HG?p=1)——小甲鱼第七章:更灵活的定位内存地址的方法7.1 and 和 or 指令7.2 关于ASCⅡ码7.3 以字符形式给出的数据7.4 大小写转换的问题

Au9_0xD的博客 798

汇编语言个人学习笔记——第七章 更灵活的定位内存地址的方法

引言        前面,我们用[0]、[bx]的方法,在访问内存的指令中,定位内存单元的地址。这一章,主要学习一些更灵活的ding定位内存地址的方法和相关的编程方法。   7.1 and和or指令 (1)and指令:逻辑与指令,按位进行与运算。 如mov al,01100011B     and al,00100011B 执行后:al=00100011B and指令的一点功能 ...

无 1414

第7章 更灵活的定位内存地址的方法

and 指令:逻辑与指令,只有全为1,才为1通过该指令可将操作对象的相应位设为0,其他位不变。

世事易变,匪石弗转。 1229

【汇编语言】更灵活的定位内存地址的方法(一)—— 字符操作:and与or指令、ASCII码及大小写转换

本文主要介绍了汇编语言中and和or指令的用法,以及如何利用规律将字母大小写进行转换。

2301_80191662的博客 1626

《汇编语言》第7章 更灵活的定位内存地址的方法

前面,我们用[0]、[bx]的方法,在访问内存的指令中,定位内存单元的地址。本章我们主要通过具体的问题来讲解一些更灵活的定位内存的方法和相关的编程方法。我们的讲解将通过具体的问题来进行。

chenyijun的专栏 3026

【汇编语言】【笔记】更灵活的定位内存地址的方法

更加灵活的定位内存地址的方法 and和or命令 and指令:逻辑与指令,按位进行与运算 Ex: mov al,01100011B and al,00111011B (al) = 00100011B 上第一位为0,下第一为0,0和0做与运算得0 上第三位为1,下第三位为1,1和1做与运算得1 上第四位为1,下第四位为0,1和0做与运算得0 8位全部运算后得到新的数据 or指令:逻辑或指令,按位进行或运算 运算过程与and指令运算过程类似 以字符形式给出的数据 以'......'的方式给出的数据是以字符的

weixin_45727215的博客 322

汇编语言—更灵活的定位内存地址的方法

一、and和or指令 (1)and指令:逻辑与指令,按位进行与运算。该指令可将操作对象的相应位设为0,其他位不变。 例如: mov al,01100011B and al,00111011B 执行后:al=00100011B (2)or指令:

qq_46180905的博客 722
上一篇: 汇编语言学习笔记(十)call和ret指令配合使用
下一篇: 汇编语言学习笔记(八)数据处理的两个基本问题
阳小良
博客等级 码龄17年 54粉丝 155原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值