MOV指令在32位汇编程序和64位汇编程序下的相同与不同之处

2023-11-16

mov指令原则

  1. 两个操作数(目标操作数和源操作数)的大小必须相同
  2. 两个操作数不能同时为内存操作数(也就是不能内存 到 内存)
  3. 指令指针寄存器不能作为目标操作数

64位汇编程序下

   32位汇编程序和64位汇编程序都依照上面的规则,语法也相同,但如果如果是将源操作数给一个32位寄存器,那么这个寄存器所在的64位寄存器的高32位会被置0

例如:

;64位汇编程序模板 (Template)
;声明一个ExitProcess函数
ExitProcess PROTO
.data
	;在这里声明变量
	val1 byte 10h;
	val2 word 1100h;
	val3 dword 11110000h;

.code 
main PROC
	;这里写自己的代码
	mov rax,0ffffffffffffffffh;
	mov eax,val3; 这里是给一个32位寄存器,但是rax的高32位被置0了。

	mov ecx,0;
	call ExitProcess
main ENDP
END

同时,如果是将源操作数给一个16/8位的寄存器,那么这个寄存器所在的64位寄存器的高48/56位不会置0

例如:

;64位汇编程序模板 (Template)
;声明一个ExitProcess函数
ExitProcess PROTO
.data
	;在这里声明变量
	val1 byte 10h;
	val2 word 1100h;
	val3 dword 11110000h;

.code 
main PROC
	;这里写自己的代码
	mov rax,0ffffffffffffffffh;
	mov eax,val3; 这里是给一个32位寄存器,但是rax的高32位被置0了。
	mov rax,0ffffffffffffffffh;
	mov ax,val2;  给一个16位寄存器,rax的高48位没有被置0
	mov rax,0ffffffffffffffffh;
	mov al,val1;  给一个8位寄存器,rax的高56位没有被置0
	
	mov ecx,0;
	call ExitProcess
main ENDP
END

32位汇编程序下

   32位汇编程序的MOV指令遵循MOV指令原则,上面展示了64位汇编程序MOV指令的特点,下面将测试32位汇编程序的MOV指令是否也有这些特点。

例:

.stack 4096
;声明一个ExitProcess函数
ExitProcess PROTO, dwExitCode:DWORD
.data
	;在这里声明变量
	val1 byte 10h;
	val2 word 1100h;
	val3 dword 11110000h;

.code 
main PROC
	;这里写自己的代码
	mov eax,0ffffffffh;
	mov ax,val2; 不会覆盖高16位(高16位不会置0)
	mov eax,0ffffffffh;
	mov al,val1; 不会覆盖高24位(高24位不会置0)
	INVOKE ExitProcess,0
main ENDP
END main

经过测试并不具备64位MOV指令的特点

总结

相同之处:
它们的MOV指令的原则相同。

不同之处:
64位汇编程序对比32位汇编程序有以下不同

  1. 如果是将源操作数给一个16/8位的寄存器,那么这个寄存器所在的64位寄存器的高48/56位不会置0。
  2. 如果是将源操作数给一个32位寄存器,那么这个寄存器所在的64位寄存器的高32位会被置0。

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

MOV指令在32位汇编程序和64位汇编程序下的相同与不同之处 的相关文章

  • 三十二.Python学习笔记.7

    文件和数据格式化 一 文件的使用 1 文件的理解 文件是存储在辅助存储器上的数据序列 文件是数据存储的一种形式 文件展现形态 文本文件和二进制文件 文本文件VS二进制文件 文本文件和二进制文件只是文件的展示方式 本质上 所有文件都是二进制形

随机推荐

  • Openlayer 5 使用坐标点查询最近的图层feature

    Openlayer 5 使用坐标点查询最近的图层feature vector getClosestFeatureToCoordinate coordinates 返回指定图层距离该坐标最近的faeture 官方API getClosestF
  • 音乐生成 - 使用LSTM和Transformer模型进行MIDI音乐生成

    欢迎来到这篇博客 在这篇文章中 我们将讨论如何使用LSTM和Transformer模型生成音乐 特别是MIDI音乐 在这个过程中 我们将使用Python编程语言以及一些常见的库 让我们开始吧 1 简介 深度学习已经在许多领域取得了显著的成功
  • 【经验总结】tcp_tw_recycle参数引发的故障

    tcp tw recycle参数引发的故障 By Eric 故障描述 2010年9月7日 新上线的手机游戏论坛有部分地区用户反应登陆游戏时出现不能登陆或登陆超时等情况 观察用户同时在线数量开始下降情况 排错过程 一 初步检查是否有变更导致的
  • C++类成员函数中const的用法

    C 类中 const的用法个人总结主要有以下几种 1 用来修饰成员变量 比如const int var 2 用来修饰形参 主要针对引用 比如const type 3 用来修饰返回值 返回常量引用 4 放在成员函数的形参列表的 之后 大括号
  • 嵌入式是什么?(一个电子产品的从0到1)-杂谈

    这篇博客 我想聊聊嵌入式 在IT行业 存在着很多不同的领域与不同的职位 由此也延伸出了各式各样的工程师 但其中嵌入式工程师算是比较迷糊的一个职位了 即便同是IT的同事也有不少问过我 嵌入式是干什么的 更别说是非IT行业的人以及刚刚入门的小白
  • VPP plugin so 的封装与解耦

    封装与解耦 每一个 plugin 封装了一个独立的功能模块 模块依赖的外部 so 接口也封装在每个 plugin 中 vpp 提供统一的使能 禁能 初始化 plugin 的框架 同时每个 plugin 对外提供的接口也使用统一的方式 大多采
  • python 输入输出相关

    输入字符串 n input 字符串可以直接遍历 输入字符串时遇到需要输出字符串的题 可以再建一个字符串用来更新 比如这道题 输入一个由小写英文字母组成的字符串 请将其中的元音字母 a e i o u 转换成大写 其它字母仍然保持小写 n i
  • FPGA 与门

    module and gate a b y input a b output y assign y a b endmodule
  • [tensorflow]联邦学习框架TFF安装记录(基于docker)

    1 介绍 tensorflow federated 下面简称为TFF 是谷歌开发的一款开源联邦学习框架 该框架基于tensorflow 下面简称为TF 运行 安装这个框架花了我两天时间 现在对安装过程进行总结 本帖子总共分为3章 第一章介绍
  • Linux 查看文件大包括隐藏文件

    du h max depth 1 sort hr
  • 实现Vue的登录页面

    实现Vue的登录页面步骤 1 前期准备 1 1 安装Node js 从官网下载地址 https nodejs org zh cn 安装完成后 在终端输入 node v 来查询版本号 1 2 安装Webpack 在终端输入npm instal
  • 测试servlet的小tips

    由于servlet中使用了一些Request请求中的参数 我们可以通过请求url中添加这些参数 传入到 Request中 一个小tips
  • GTest的测试环境搭建

    一 gtest的安装 Google test是一种比较方便的C 测试框架 它能够帮助我们比较方便的进行测试代码的编写 以及输出尽可能详细的失败信息 能够大大缩短我们测试代码的编写效率 而且该框架的使用方法也比较简单 能够降低我们学习新框架的
  • Java 移除重复节点

    移除重复节点 难度简单97 编写代码 移除未排序链表中的重复节点 保留最开始出现的节点 示例1 输入 1 2 3 3 2 1 输出 1 2 3 示例2 输入 1 1 1 1 2 输出 1 2 提示 链表长度在 0 20000 范围内 链表元
  • MES管理系统对电子企业来说有什么优点

    引言 在电子制造企业中 MES管理系统已经成为提高生产效率 降低成本 提高订单履行速度和准确性的重要工具 电子企业MES管理系统是一套集成的信息系统 用于监控和控制电子企业的生产过程 本文将探讨MES管理系统对于电子企业来说有哪些优点 一
  • 人工智能的最新进展:2024年将会发生什么?

    文章目录 2024年AI最新发展 2024年AI具体应用 2024年AI的具体预测 创作者 全栈弄潮儿 个人主页 全栈弄潮儿的个人主页 个人社区 欢迎你的加入 全栈弄潮儿的个人社区 专栏地址 AI大模型 人工智能 AI 是一种快速发展的技术
  • C++ MAP的遍历顺序和插入元素顺序是不同的

    当你为MAP插入一个元素后 MAP会按KEY的顺序重新排列 所以当你遍历MAP的时候 遍历的顺序已经不是你插入元素的顺序 举个具体例子 MAP B 1 MAP C 2 MAP A 3 当你遍历MAP输出的时候 是按 A B C 顺序输出的
  • Zookeeper和Nacos的区别

    目录 Zookeeper 1 ZK结构 2 ZK的消息广播和崩溃恢复 Nacos 1 存储和数据更新 2 注册中心 Zookeeper 1 ZK结构 Zookeeper的功能主要是通过它的树形节点来实现的 当有节点数据变化时或者说节点过期的
  • Dropout Learning - 防止深度神经网络过拟合

    最近在学习caffe 里面有一个名词叫做Dropout Learning 一直没明白是什么意思 直到最近才发现一片文章介绍Dropout Learning的 希望可以给不知道的同学一定的帮助 如果想要更深入的了解可以阅读该文献 文章结尾会给
  • MOV指令在32位汇编程序和64位汇编程序下的相同与不同之处

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