汇编语言数据处理长度(X ptr指令解析)

2023-10-30


8086CPU的指令,可以处理两种尺寸的数据,byte和word。所以在机器指令中要指明,指令进行的是字操作还是字节操作
对于这个问题,汇编语言中用一下方法处理。

(1)通过寄存器名指明要处理的数据的尺寸。

例如:
下面的指令中,寄存器ax、bx等指明了指令进行的是字操作:
mov ax,1
mov bx,ds:[0]
mov ds,ax
mov ds:[0],ax
inc ax
add ax,1000

下面的指令中,寄存器al、bl等指明了指令进行的是字节操作:
mov al,1
mov al,bl
mov al,ds:[0]
mov ds:[0],al
inc al
add al,100

(2)在没有寄存器名存在的情况下,用操作符 X ptr 指明内存单元的长度,X在汇编指令中可以为byte、word或dword

例如:
下面的指令中,用byte ptr 指明了指令访问的内存单元是一个字单元:
mov byte ptr ds:[0],1
inc byte ptr [bx]
inc byte ptr ds:[0]
add byte ptr [bx],2

下面的指令中,用word ptr 指明了指令访问的内存单元是一个字单元:
mov word ptr ds:[0],1
inc word ptr [bx]
inc word ptr ds:[0]
add word ptr [bx],2

在没有寄存器参与的内存单元访问指令中,用word prt 或byte ptr 显性地指明所要访问的内存单元的长度是很必要的。否则,CPU无法得知所要访问的单元,还是字节单元。
假如我们用Debug查看内存的结果如下:
2000:1000 FF FF FF FF FF FF …

那么指令:

mov ax,2000H
mov ds,ax
mov byte ptr [1000H],1

将使内存中的内容变为:
2000: 1000 01 FF FF FF FF FF …
这是因为 mov byte ptr [1000H],1访问的是地址为 ds:1000H 的字节单元,修改的是ds:1000H 单元的内容;

而指令:

mov ax,2000H
mov ds,ax
mov word ptr [1000H],1

将使内存中的内容变为:
2000:1000 01 00 FF FF FF FF …
这是因为mov word ptr [1000H],1 访问的是地址为 ds:1000H 的字单元,修改的是 ds:1000H 和 ds:1001H 两个单元的内容。

PTR用来指出操作数的类型或尺寸,通常用在跳转/调子程序或寻址。寻址时用来指明是BYTE、WORD还是DWORD,跳转时则是FAR或NEAR。
例如:call dword ptr ss:[0x401234C]
其中地址ss:[0x401234C]上的数是75814412,那么dword ptr 就是获取双字75814412(word ptr 就是4412,byte ptr就是12),再由call来调用地址75814412上的函数。

(3) 其他方法

有些指令默认了访问的是字单元还是字节单元,比如:push [1000H] 就不用指明访问的是字单元还是字节单元,因为push指令只进行字操作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

汇编语言数据处理长度(X ptr指令解析) 的相关文章

  • 蜂鸣器(汇编语言)

    蜂鸣器的发声主要需要搞懂两点问题 xff0c 第一 xff0c 如何使用单片机控制蜂鸣器发声 xff1b 第二 xff0c 选择合适的延时时间 如何使用单片机控制蜂鸣器的发声 xff1f 蜂鸣器分为有源和无源 xff0c 本实验采用无源蜂鸣
  • C++ 智能指针 unique_ptr 详解与示例

    unique ptr 是 C 43 43 11 提供的用于防止内存泄漏的智能指针中的一种实现 xff0c 独享被管理对象指针所有权的智能指针 unique ptr对象包装一个原始指针 xff0c 并负责其生命周期 当该对象被销毁时 xff0
  • C++11中unique_ptr的使用

    在C 43 43 中 xff0c 动态内存的管理是通过一对运算符来完成的 xff1a new xff0c 在动态内存中为对象分配空间并返回一个指向该对象的指针 xff0c 可以选择对对象进行初始化 xff1b delete xff0c 接受
  • U-boot引导流程分析一

    U Boot 全称 Universal Boot Loader 即通用引导程序 是遵循GPL条款的开放源码项目 它的源码目录 编译形式与Linux内核很相似 事实上 不少U Boot源码就是相应的Linux内核源程序的简化 尤其是一些设备的
  • 你知道 1 + 1 等于几吗?

    阅读本文需要 4 分钟 前言 当有人问你1 1等于几的时候 你会觉着这是对你的一种侮辱 这种弱智问题 居然拿来问我 听起来好像你说的没错 1 1是挺简单的 可是如果让你证明的话 可能你这一辈子都证明不出来 稍微知道一点的人 可能会联想到我国
  • 简单的debug32的基本语法介绍(基于dos环境)

    1 打开文件 debug 文件名 exe 2 r 简单的输入 r时就是查看当前各项寄存器的值 并由当前的地址 存储的指令等等 并且 我们可以用 r命令来对寄存器的值进行修改 如 r ax 3 a a指令可以让我们依次对内存单元直接写入汇编语
  • 汇编语言数据处理长度(X ptr指令解析)

    文章目录 1 通过寄存器名指明要处理的数据的尺寸 2 在没有寄存器名存在的情况下 用操作符 X ptr 指明内存单元的长度 X在汇编指令中可以为byte word或dword 3 其他方法 8086CPU的指令 可以处理两种尺寸的数据 by
  • 《深入理解计算机系统》(CSAPP)实验三 —— Buf Lab

    这是CSAPP的第三个实验 主要让我们熟悉GDB的使用 理解程序栈帧的结构和缓冲区溢出的原理 实验目的 本实验的目的在于加深对IA 32函数调用规则和栈结构的具体理解 实验的主要内容是对一个可执行程序 bufbomb 实施一系列缓冲区溢出攻
  • LLVM汇编语言指导手册之标识符简介

    标识符 Identifier LLVM的标识符以两种基本的类型存在 全局的和局部的 全局标识符 函数 全局变量 以 字符开始 局部标识符 寄存器名字 类型 以 字符开始 另外 还有三种不同的标识符格式 各有自己的用途 1 指定的 即自己定义
  • Win8下用DOSBox编写汇编语言

    Win8下用DOSBox编写汇编语言 DOSBox 是一个 DOS模拟程序 可以很方便的移植到其他的平台 因此可以使用它在Win8系统中编写汇编语言 下面提供相关下载链接 DOSBox下载 http pan baidu com s 1qWw
  • IDA反汇编之栈帧例释

    目录 1 例释环境和预备知识 1 1 运行环境 1 2 IDA版本 1 3 预备知识 2 函数调用约定 3 函数局部变量布局 4 函数栈帧示例 5 IDA栈视图 1 例释环境和预备知识 1 1 运行环境 本示例运行环境为Windows 10
  • 1.下面的程序实现依次用内存的0:0~0:15单元中的内容改写程序中的数据,完成程序2.下面的程序实现依次用内存0:0~0:15单元中的内容改写程序中的数据,数据的传递用栈来进行。栈空间设置在程序内。

    题目 下面的程序实现依次用内存的0 0 0 15单元中的内容改写程序中的数据 完成程序 assume cs codesg codesg segment dw 0123h 0456h 0789h 0abch 0defh 0fedh 0cbah
  • 在dos下使用debug被提示incorrect ms dos version的解决办法

    原创 在dos下使用debug被提示incorrect ms dos version的解决办法 首先可以确定一点 直接使用debug时它是直接在当前目录下寻找的 一旦当前目录下没有debug或debug版本不合适 则会出错 直接在 开始 中
  • 计算机组成原理——单周期CPU

    单周期CPU 项目代码 实验原理 MIPS指令 rom coe文件 代码 顶层模块SingleCycleCPU display外围模块 PC instructionMemory Alu模块 DataMemory ControlUnit 旧的
  • 汇编语言实现跑马灯 8051单片机

    通过一位 F 的16进制 转换为 2进制的 1111 然后移动一位 有三极管开关所改变 0的时候发光 1的时候变暗 所以一开始0FFH表示高8位为0 低8位为1111 1111 表示全暗 然后右移变为1111 1110亮第一个等 之后类推
  • [从零学习汇编语言] - BX寄存器与loop指令

    文章目录 前言 一 Bx寄存器与 偏移地址 二 loop指令与jmp指令 1 jmp指令 2 loop指令 三 一些奇奇怪怪的注意点 1 汇编源程序的数字问题 2 Debug和Masm的区别 1 mov ax 0 问题 3 段前缀 四 课后
  • MOV指令在32位汇编程序和64位汇编程序下的相同与不同之处

    mov指令原则 两个操作数 目标操作数和源操作数 的大小必须相同 两个操作数不能同时为内存操作数 也就是不能内存 到 内存 指令指针寄存器不能作为目标操作数 64位汇编程序下 32位汇编程序和64位汇编程序都依照上面的规则 语法也相同 但如
  • 8259初始化命令字(ICW1-ICW4)

    8259A的中断操作功能很强 包括中断的请求 屏蔽 排队 结束 级联以及提供中断类型号和查询等操作 并且其操作的方式又有不同 它既能实现向量中断 又能进行中断查询 它可以用于16位机 也可用于8位机 因此 使用起来感到复杂且不好掌握 为此
  • 汇编:表格显示(含多个子程序)

    代码如下 assume cs code data segment db 1975 1976 1977 1978 1979 1980 1981 1982 1983 db 1984 1985 1986 1987 1988 1989 1990 1
  • C++反汇编 利用反汇编分析常见C/C++语句的底层实现(硬核)

    文章目录 赋值操作 if条件判断 指针和引用的实质 跳转函数 两个数字的交换操作 数组的赋值及 858993460数字的由来 总结 本节我们利用反汇编技术来对我们最常见的C语言语句进行解析 C 反汇编技术可以让你更好的理解C C语言的底层含

随机推荐

  • Modbus通信从入门到精通_2_Modbus TCP通信详解及仿真(搭建ModbusTCP仿真环境:创建虚拟PLC并进行ModbusTCP通讯;寄存器与PLC中映射关系;适合理解如何编写上位机)

    本篇将会以西门子PLC软件搭建ModbusTCP仿真环境 并通过仿真环境 介绍基础知识及模拟实际应用中写一个简单的通信读取PLC数据方法 并简介了编写上位机的方法 文章目录 1 搭建ModbusTCP仿真环境 1 1 PLC仿真环境搭建 1
  • UE4 DMX和grandMA2 onPC 3.1.2.5的操作流程

    1 创建环回网络适配器 避免IP被占用 参考链接 UE4 Demo连接GrandMA2 onpc 2 创建show文件 参考链接 虚幻引擎舞美灯光设计教程 2 4虚幻引擎内部配接 2 5 GrandMA2onpc设置B 3 连接到环回网络I
  • 聚类五之总结

    1 聚类方法的选择 1 对于数据量较大的情况 k means 2 对于数据量较一般的情况 最大密度聚类 DBSCAN 3 对于数据量较少的情况 谱聚类 2 类别数目k未知 且数据有噪声 可使用密度聚类 如DBSCAN 最大密度聚类 DBSC
  • 数据库设计原则(积累)

    1 原始单据与实体之间的关系 可以是一对一 一对多 多对多的关系 在一般情况下 它们是一对一的关系 即一张原始单据对应且只对应一个实体 在特殊情况下 它们可能是一对多或多对一的关系 即一张原始单证对应多个实体 或多张原始单证对应一个实体 这
  • 再见2020

    纯属纪念一下 include
  • Dubbo与Zookeeper伪集群部署

    1 美图 官网 http dubbo apache org docs user preface background md lang zh cn 1 准备Zookeeper zookeeper伪集群模式 2 dubbo安装 git clon
  • Sui安全篇|详解零知识证明 (ZKP) Groth16的可塑性

    Sui Move允许用户使用Groth16进行高效验证任何非确定性多项式时间 Non deterministic Polynomial time NP 状态 Groth16是一种高效且广泛使用的零知识简洁非交互知识证明 Zero Knowl
  • GDB 调试指南

    00 介绍 GDB GNU Debugger 是 UNIX 及 UNIX like 下的强大调试工具 可以调试 ada c c asm minimal d fortran objective c go java pascal 等语言 这一份
  • envi查看影像中指定像素的经纬度

    目的是查看影像上某个像素点对应的经纬度信息 操作步骤 1 打开envi软件 把影像拖入进去 如下图 2 按快捷键ctrl i或者Display gt Cursor Value调出Cursor Value对话框 如下图 3 在最上面工具栏 齿
  • 有用的框架

    选择图片和拍照 implementation com github LuckSiege PictureSelector picture library v2 5 8 可能需要这个 compileOptions sourceCompatibi
  • 【JVM】最全笔记(黑马+尚硅谷+张龙整合笔记)

    本身整合了如下视频的笔记 并进行了整理 尚硅谷周阳 张龙 黑马程序员 黑马ppt非常好 https download csdn net download hancoder 12834607 本文及JVM系列笔记地址 https blog c
  • TestMe

    测试MD文件 TestMe TestMe 链接 link 链接 link 1 target testme
  • 常见前端浏览器兼容问题及解决方案

    常见前端浏览器兼容问题及解决方案 所谓的浏览器兼容性问题 是指因为不同的浏览器对同一段代码有不同的解析 造成页面显示效果不统一的情况 在大多数情况下 我们的需求是 无论用户用什么浏览器来查看我们的网站或者登陆我们的系统 都应该是统一的显示效
  • gensim实战01——word2vec

    介绍 搜狗语料库 http www sogou com labs resource list yuliao php 是可以免费获取的比较大的中文新闻语料库 可是最新的也就是更新到2012年的语料 后续并无放出更新的语料 除了搜狗语料 要获取
  • SpringMVC5.x从入门到精通_完整版

    什么是SpringMVC 一 SpringMVC的概述 Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架 即使用了MVC架构模式的思想 将web层进行职责解耦 基于请求驱动指的就是
  • 使用python的socket进行多个文件传输

    使用python的socket进行多个文件传输 在网上学习到了基本的socket使用 但与自己想要的效果不同 所以进行了修改实现了在局域网内进行多文件传输 但是还有一些小bug不知道为什么有时候进行传输时 会显示您的主机中的软件中止了一个已
  • 从零搭建若依环境(分离版)

    1 起步 1 1 准备工作 JDK gt 1 8 推荐1 8版本 Mysql gt 5 5 0 推荐5 7版本 Redis gt 3 0 Maven gt 3 0 Node gt 10 1 2 下载若依 使用git克隆 命令为 git cl
  • Markdown语法之数学公式【总结】

    目录 数学运算符号 长空格 分数 角标 上下划线 无穷大 求和符号 累乘符号 余积符号 集合运算 上下位符号 圆括号 省略号 应用 根号 对数 积分 逻辑符号 箭头 三角函数 给公式编号 其他省略号 行列式 矩阵 向量 花括号 上下花括号
  • Linux - 快速进入目录的方法

    Linux 快速进入目录的方法 目录 cd命令技巧 其他常用方法 长目录 回到顶部 cd命令技巧 直接进入用户的home目录 cd 进入上一个目录 cd 进入当前目录的上一层目录 cd 进入当前目录的上两层目录 cd 回到顶部 其他常用方法
  • 汇编语言数据处理长度(X ptr指令解析)

    文章目录 1 通过寄存器名指明要处理的数据的尺寸 2 在没有寄存器名存在的情况下 用操作符 X ptr 指明内存单元的长度 X在汇编指令中可以为byte word或dword 3 其他方法 8086CPU的指令 可以处理两种尺寸的数据 by