dtdug汇编指令练习

r 通用寄存器
m 代表内存
imm 代表立即数
r8 代表8位通用寄存器
m8 代表8位内存
imm8 代表8位立即数


mov指令练习
MOV 的语法:
mov 目标操作数,源操作数
作用:拷贝源操作数到目标操作数
1、源操作数可以是立即数、通用寄存器、段寄存器、或者内存单元.
2、目标操作数可以是通用寄存器、段寄存器或者内存单元:
3、操作数的宽度必须一样.
4、源操作数和目标操作数不能同时为内存单元,   

mov r/m   将内存存入通用寄存器 
8位  
mov al,byte ptr ds:[0x0019ff78]
mov ah,byte ptr ds:[0x0019ff7c]
16位
mov ax,word ptr ds:[0x19ff8c]
mov cx,word ptr ds:[0x19ff80]
32位
mov eax,dword ptr ds:[0x0019ff78]
mov ecx,dword ptr ds:[0x0019ff74]mov r/ r  将通用寄存器,存入寄存器
8位
mov ah,cl
mov al,cl
16位
mov ax,cx
mov ax,dx
32位
mov eax,ecx
mov eax,edxmov r/imm           将立即数存入到通用寄存器
8位
mov al,0xFF
mov cl,0xFF
16位
mov ax,0xDDDD
mov cx,0xDDDD
32位
mov eax,0xAAAAAAAA
mov ecx,0xAAAAAAAAmov r/m8   将通用寄存器存入内存
8位
mov byte ptr ds:[0x19ff74],al
mov byte ptr ds:[0x19ff72],ah
16位
mov word ptr ds:[0x19ff74],ax
mov word ptr ds:[0x19ff72],cx
32位
mov dword ptr ds:[0x19ff74],eax
mov dword ptr ds:[0x19ff72],ecx

 add 练习   sub同

  
add 练习
add r/m   将内存和通用寄存器相加存入通用寄存器 
8位 
add al,byte ptr ds:[0x19FF78]
add ah,byte ptr ds:[0x19FF80]
16位
add ax,word ptr ds:[0x19ff74]
add cx,word ptr ds:[0x19ff74]
32位
add eax,dword ptr ds:[0x19ff74]
add ecx,dword ptr ds:[0x19ff74]add r/ r  将通用寄存器相加,存入寄存器
8位 
add al,cl
add al,dl
16位
add ax,cx
add ax,dx
32位
add eax,ecx
add eax,edxadd r/imm           将立即数与通用寄存器相加存入寄存器
8位
add al,0x13
add ah,0x56
16位
add ax,0x1321
add cx,0x1123
32位
add eax,0x21235467
add eax,0x17894561add m/r   将通用寄存器与内存相加,存入内存8位
add byte ptr ds:[0x0019ff7c],al
add byte ptr ds:[0x0019ff80],ah
16位
add word ptr ds:[0x19FF20],cx
add word ptr ds:[0x19FFA0],ax
32位
add dword ptr ds:[0x19FFA0],eax
add dword ptr ds:[0x19FFA0],ecxadd m/imm 内存与立即数相加存入内存
8位
add byte ptr ds:[0x19ff78],0x01
add byte ptr ds:[0x19FFA4],0x22
16位
add word ptr ds:[0x19FFA0],0xFFFF
add word ptr ds:[0x19FFA0],0xFF13
32位
add dword ptr ds:[0x19FFA0],0x21231234
add dword ptr ds:[0x19FFA0],0x12345678add m,r   内存与寄存器相加存入内存
8位
add byte ptr ds:[0x19FFA4],al
add byte ptr ds:[0x19FF74],al
16位
add word ptr ds:[0x19FFA0],ax
add word ptr ds:[0x19FFA0],cx
32位
add dword ptr ds:[0x19FFA0],eax
add dword ptr ds:[0x19FFA0],ecxand指令  同为1则1 其他都为0
and eax,eax 与 
and eax,0x11111111
and ax,cx
and al,0x11
and dword ptr ds:[0x19FF90],eax
and dword ptr ds:[0x19FF07C],0x11111111

or指令   有一个为1则为1


or eax,eax
or ax,cx
or eax,0x11111111
or al,0x11
or ax,0x1111
or dword ptr ds:[0x19FF8C],0x11111111
or dword ptr ds:[0x19FF84],eax
or word ptr ds:[0x19FF88],ax
or word ptr ds:[0x19FF88],0x1111

 xor指令  不一样的为1


xor eax,ecx
xor ebx,0x11111111
xor ax,0x1111
xor dword ptr ds:[0x19FF84],0x11111111
xor word ptr ds:[0x19FF84],ax
xor byte ptr ds:[0x19FF8C],al

 not 取反,0为1,1为0


not eax
not ax
not al
not ah
not byte ptr ds:[0x19FF8C]
not word ptr ds:[0x19FF84]
not dword ptr ds:[0x19FF74]

 lea 获取地址编号

lea eax,dword ptr ds:[0x19FF8C]
mov dword ptr ds:[eax],0x11111111

寻址方式练习

立即数寻址
mov eax,dword ptr ds:[0x19FF74]
mov dword ptr ds:[0x19FF74],0x12345678
lea eax,dword ptr ds:[0x19FF74]寄存器寻址
mov eax,0x19FF74
mov ecx,dword ptr ds:[eax]
lea edx,dword ptr ds:[eax]寄存器加立即数寻址
mov eax,0x19FF78
mov ecx,dword ptr ds:[eax+0x2]
lea edx,dword ptr ds:[eax+4]寄存器+寄存器*1248 寻址
mov eax,0x19FF7C
mov ecx,0x2
mov edx,dword ptr ds:[eax+ecx*2]
lea ebx,dword ptr ds:[eax+ecx*2]寄存器+寄存器*1248+立即数寻址
mov eax,0x19FF74
mov ecx,0x3
mov edx,dword ptr ds:[eax+ecx*2+0x2]
lea ebx,dword ptr ds:[eax+ecx*2+2]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/65765.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何用 SSH 访问 QNX 虚拟机

QNX 虚拟机默认是开启 SSH 服务的,如果要用 SSH 访问 QNX 虚拟机,就需要知道虚拟机的 IP 地址,用户和密码。本文我们来看看如何获取这些参数。 1. 启动虚拟机 启动过程很慢,请耐心等待。 2. 查看 IP 地址 等待 IDE 连接到虚拟机。…

java面向对象编程特性概述

目录 1. 类和对象 2. 封装(Encapsulation) 3. 继承(Inheritance) 4. 多态(Polymorphism) 5. 抽象(Abstraction) (1). 抽象类(Abstract Class) (2).接口…

React(二)——Admin主页/Orders页面/Category页面

文章目录 项目地址一、侧边栏1.1 具体实现 二、Header2.1 实现 三、Orders页面3.1 分页和搜索3.2 点击箭头显示商家所有订单3.3 页码按钮以及分页 四、Category页面4.1 左侧商品添加栏目4.2 右侧商品上传栏 五、Sellers页面六、Payment Request 页面(百万数据加载&a…

maven 下载依赖 jhash:2.1.2 和对应 jar 包

原文地址 前言 25年新的一年,那就先更新一篇技术文章吧,这个是这几天刚遇到的一个有意思的bug,记录分享一下 原因分析 在使用maven加载一个项目的时,发现maven的依赖一直无法解析,更换阿里云镜像和中央仓库都没办法…

nums[:]数组切片

问题:给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。 使用代码如下没有办法通过测试示例,必须将最后一行代码改成 nums[:]nums[-k:]nums[:-k]切片形式: 原因:列表的切片操作 …

python-leetcode-三数之和

15. 三数之和 - 力扣(LeetCode) class Solution:def threeSum(self, nums: List[int]) -> List[List[int]]:nums.sort() # 排序n len(nums)res []for i in range(n):# 剪枝:如果当前数 > 0,三数之和不可能为 0if nums[i]…

极狐GitLab 正式发布安全版本17.7.1、17.6.3、17.5.5

本分分享极狐GitLab 补丁版本 17.7.1, 17.6.3, 17.5.5 的详细内容。这几个版本包含重要的缺陷和安全修复代码,我们强烈建议所有私有化部署用户应该立即升级到上述的某一个版本。对于极狐GitLab SaaS,技术团队已经进行了升级,无需用户采取任何…

探索绿色能源系统的固态继电器:2025年展望

随着全球向绿色能源转型的加速,对高效、可靠和环保元件的需求从未如此强烈。在这种背景下,国产固态继电器(SSR)在实现太阳能逆变器、风力涡轮机和储能系统等关键技术方面发挥着关键作用。本文探讨了绿色能源系统背景下中国固态继电器行业的前景&#xff…

Rust语言使用iced实现简单GUI页面

使用cargo新建一个rust项目 cargo new gui_demo cd gui_demo 编辑Cargo.toml文件 ,添加iced依赖 [package] name "gui_demo" version "0.1.0" edition "2021"[dependencies] iced "0.4.2" 编辑src/main.rs文件: u…

Github提交Pull Request教程 Git基础扫盲(零基础易懂)

1 PR是什么? PR,全称Pull Request(拉取请求),是一种非常重要的协作机制,它是 Git 和 GitHub 等代码托管平台中常见的功能,被广泛用于参与社区贡献,从而促进项目的发展。 PR的整个过…

RabbitMQ 可观测性最佳实践

RabbitMQ 简介 RabbitMQ 是一个开源的消息代理和队列服务器,用 Erlang 语言编写,支持多种客户端。它通过使用交换机(Exchanges)、队列(Queues)和绑定(Bindings)来路由消息&#xff…

美摄科技PC端视频编辑解决方案,为企业打造专属的高效创作平台

在当今这个信息爆炸的时代,视频已成为不可或缺的重要内容形式,美摄科技推出了PC端视频编辑解决方案的私有化部署服务,旨在为企业提供一款量身定制的高效创作平台。 一、全面功能,满足企业多样化需求 美摄科技的PC端视频编辑解决…

【Oracle篇】深入了解执行计划中的访问路径(含表级别、B树索引、位图索引、簇表四大类访问路径)

💫《博主介绍》:✨又是一天没白过,我是奈斯,从事IT领域✨ 💫《擅长领域》:✌️擅长阿里云AnalyticDB for MySQL(分布式数据仓库)、Oracle、MySQL、Linux、prometheus监控;并对SQLserver、NoSQL(…

腾讯云AI代码助手编程挑战赛-厨房助手之AI大厨

腾讯云AI代码助手编程挑战赛-厨房助手之AI大厨 作品简介 身处当今如火箭般迅猛发展的互联网时代,智能聊天助手已然化身成为提升用户体验的关键利器,全方位渗透至人们的数字生活。 紧紧跟随着这股汹涌澎湃的时代浪潮,我毅然投身于极具挑战性…

vscode 无法使用npm, cmd命令行窗口可以正常执行

解决方法: 执行命令获得命令的位置 get-command npm 得到如下 然后删除或者修改 npm.ps1文件 让其不能使用就行。然后重启vscode即可。 pnpm 同理即可 另外加速源 国内镜像源(淘宝): npm config set registry https://regist…

简易CPU设计入门:算术逻辑单元(四)

项目代码下载 请大家首先准备好本项目所用的源代码。如果已经下载了,那就不用重复下载了。如果还没有下载,那么,请大家点击下方链接,来了解下载本项目的CPU源代码的方法。 CSDN文章:下载本项目代码 上述链接为本项目…

Spring Boot 和微服务:快速入门指南

💖 欢迎来到我的博客! 非常高兴能在这里与您相遇。在这里,您不仅能获得有趣的技术分享,还能感受到轻松愉快的氛围。无论您是编程新手,还是资深开发者,都能在这里找到属于您的知识宝藏,学习和成长…

VSCode 使用鼠标滚轮控制字体

一、 文件 | 首选项 | 设置 二、单击在 settings.json中编辑 "editor.mouseWheelZoom": true 注注注意:保存哦!ctrlS 三、测试 按住ctrl鼠标滚轮,控制字体大小

rabbitmq的三个交换机及简单使用

提前说一下,创建队列,交换机,绑定交换机和队列都是在生产者。消费者只负责监听就行了,不用配其他的。 完成这个场景需要两个服务哦。 1直连交换机-生产者的代码。 在配置类中创建队列,交换机,绑定交换机…

代码随想录算法训练营第3天(链表1)| 203.移除链表元素 707.设计链表 206.反转链表

一、203.移除链表元素 题目:203. 移除链表元素 - 力扣(LeetCode) 视频:手把手带你学会操作链表 | LeetCode:203.移除链表元素_哔哩哔哩_bilibili 讲解:代码随想录 注意: 针对头结点和非头结点的…