当前位置: 首页 > news >正文

汇编语言lea指令取数组偏移地址

最近看到一条指令,x86汇编,

    LEA BX, 6[DI]
根据资料,它的含义是,某数组含20个元素,每个元素占一个字节,序号为0~19。设DI指向数组开头处,把序号为6的元素的偏移地址送到BX中;

lea指令,

Load effective address,取有效地址,也就是取偏移地址;
lea指令用于把源操作数的地址偏移量传送目的操作数。

不知道这条指令是不是对的,6[DI] 这种写法没见过;

不太熟悉汇编;下面dosbox,debug看一下;

assume cs: codesg,ds:datasgdatasg segment
arr1 db 1,2,3,4,5,6,7,8,9,11,22,33,44,55,0h  
datasg ends   codesg segment
START:
MOV AX, datasg  
MOV DS, AX 
MOV DI, DS
LEA BX, 6[DI]    
codesg endsEND START

它是说DI指向数组开头,数据段里只有一个数组arr1,把datasg赋给DS,DS现在应指向数组开头,再把DS赋给DI,现在DI应指向数组开头;

然后再执行 LEA BX, 6[DI] ;debug看一下bx寄存器的值;

代码保存为2.asm,可以构建出2.exe,所以代码的写法是可以的;

debug 2.exe,先打r看一下寄存器的值,此时程序还没开始执行,

然后打t, t, t,单步执行3条;各寄存器的值如上图,此时还没执行 LEA BX, 6[DI],BX寄存器的值是0,如上图;

然后再单步执行一条,看一下BX寄存器的值变为0770,

 

看上去没问题,还不熟悉,有时间继续;

另外我用emu8086编译了一个2.bin出来,

 

debug可能不能调试bin的可执行文件,debug装载2.bin以后,它出来的第一条指令不是我们的指令,是乱的,

 

 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • C++:priority_queue类
  • JavaScript class和正则
  • 10天速通Tkinter库——Day 5:使用config进行OptionMenu美化
  • Minio web控制台实现授权管理
  • 使用 nginx 搭建代理服务器(正向代理 https 网站)指南
  • 【Java】—— 使用Java编写程序找出100以内的质数
  • 理解类方法和静态方法:Python 中的高级函数
  • Nginx负载均衡调度状态
  • 哇哦--一起学习接口叭
  • XSS总结知识点+例题实操
  • 探索 HarmonyOS 的层叠布局:灵活的 Stack 容器
  • Vmware WorkStations 17 ,centos 安装 vmware tools
  • FFmpeg的入门实践系列一
  • 序列建模之循环和递归网络 - 渗漏单元和其他多时间尺度的策略篇
  • 帆软报表设计器函数相关问题
  • Google 是如何开发 Web 框架的
  • CSS3 变换
  • Docker 笔记(2):Dockerfile
  • es的写入过程
  • fetch 从初识到应用
  • Java 最常见的 200+ 面试题:面试必备
  • laravel5.5 视图共享数据
  • PHP那些事儿
  • PV统计优化设计
  • python学习笔记-类对象的信息
  • Synchronized 关键字使用、底层原理、JDK1.6 之后的底层优化以及 和ReenTrantLock 的对比...
  • tab.js分享及浏览器兼容性问题汇总
  • underscore源码剖析之整体架构
  • Vue UI框架库开发介绍
  • vue-router的history模式发布配置
  • 得到一个数组中任意X个元素的所有组合 即C(n,m)
  • 对JS继承的一点思考
  • 猫头鹰的深夜翻译:JDK9 NotNullOrElse方法
  • 前端设计模式
  • 浅谈JavaScript的面向对象和它的封装、继承、多态
  • 它承受着该等级不该有的简单, leetcode 564 寻找最近的回文数
  • - 转 Ext2.0 form使用实例
  • 阿里云ACE认证之理解CDN技术
  • 资深实践篇 | 基于Kubernetes 1.61的Kubernetes Scheduler 调度详解 ...
  • !!java web学习笔记(一到五)
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • # 移动硬盘误操作制作为启动盘数据恢复问题
  • #QT(智能家居界面-界面切换)
  • $Django python中使用redis, django中使用(封装了),redis开启事务(管道)
  • (2)从源码角度聊聊Jetpack Navigator的工作流程
  • (6)STL算法之转换
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (NO.00004)iOS实现打砖块游戏(九):游戏中小球与反弹棒的碰撞
  • (rabbitmq的高级特性)消息可靠性
  • (二)fiber的基本认识
  • (附源码)spring boot基于小程序酒店疫情系统 毕业设计 091931
  • (六)vue-router+UI组件库
  • (一)ClickHouse 中的 `MaterializedMySQL` 数据库引擎的使用方法、设置、特性和限制。
  • (原)本想说脏话,奈何已放下
  • (转)Android学习笔记 --- android任务栈和启动模式