• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > dword ptr指令详细解析

dword ptr指令详细解析

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了dword ptr,call dword ptr,dword ptr ds,dword ptr ss,fld dword ptr等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

对于这个问题,汇编语言中用一下方法处理。

(1)通过寄存器名指明要处理的数据的尺寸。
例如:
下面的指令中,寄存器指明了指令进行的是字操作:
mov ax,1
mov bx,ds:[0]
mov ds,ax
mov ds:[0],ax
inc ax
add ax,1000

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

(2)在没有寄存器名存在的情况下,用操作符 X  ptr 指明内存单元的长度,X在汇编指令中可以为word或byte。
例如:
下面的指令中,用word ptr 指明了指令访问的内存单元是一个字单元:
mov word ptr ds:[0],1
inc word ptr [bx]
inc word ptr ds:[0]
add word ptr [bx],2

下面的指令中,用byte ptr 指明了指令访问的内存单元是一个字单元:
mov byte ptr ds:[0],1
inc byte ptr [bx]
inc byte ptr ds:[0]
add byte 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 ax,2000H
mov ds,ax
mov word ptr [1000H],1
将使内存中的内容变为:
2000:1000 01 00 FF FF FF FF ......

这是因为 mov byte ptr [1000H],1访问的是地址为 ds:1000H 的字节单元,修改的是ds:1000H 单元的内容;而mov word ptr [1000H],1 访问的是地址为 ds:1000H 的字单元,修改的是 ds:1000H 和 ds:1001H 两个单元的内容。

PTR用来指出操作数的类型或尺寸,通常用在跳转/调子程序或寻址。寻址时用来指明是BYTE、WORD还是DWORD,跳转时则是FAR或NEAR。

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

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • dword ptr指令详细解析

相关文章

  • 2017-05-28交换两个文本内容的C语言代码
  • 2017-05-28OpenCV 2.4.3 C++ 平滑处理分析
  • 2017-05-28C++获取当前系统时间的方法总结
  • 2017-05-28深入分析Visual C++进行串口通信编程的详解
  • 2017-05-28C语言游戏必备:光标定位与颜色设置的实现方法
  • 2017-05-28undefined reference to `SetPduPowerConsumptionCnt'错误的解决方法
  • 2017-05-28c++双向链表操作示例(创建双向链、双向链表中查找数据、插入数据等)
  • 2017-05-28new和malloc的区别深入解析
  • 2017-05-28C 语言指针概念的详解
  • 2017-05-28使用钩子如何锁定键盘的方法分享

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • win32使用openfilename浏览文件窗口示例
    • VC获取当前路径及程序名的实现代码
    • C语言数据结构实现链表逆序并输出
    • c++中的string常用函数用法总结
    • k个最小和 K路归并问题
    • c++ std::invalid_argument应用
    • C++实现哈夫曼树简单创建与遍历的方法
    • C语言 数据结构堆排序顺序存储(升序)
    • 简要说明C语言中指针函数与函数指针的区别
    • C++设计模式之观察者模式

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有