汇编笔记 01

小蒟蒻的汇编自学笔记,如有错误,望不吝赐教

文章目录

    • 笔记
      • 编辑器,启动!
      • debug功能
      • CS & IP
      • mov
      • add
      • sub
      • 汇编语言寄存器的英文全称中英对照表
      • mul
      • div
      • and
      • or

笔记

编辑器,启动!

进入 debug 模式
在这里插入图片描述

debug功能

  1. 用Debug 的R命令查看、改变CPU寄存器的内容;
  2. 用Debug 的D命今查看内存中的内容;
  3. 用Debug 的E命令改写内存中的内容;
  4. 用Debug 的U命令将内存中的机器指令翻译成汇编指令;
  5. 用Debug 的T命令执行一条机器指令;
  6. 用Debug 的A命令以汇编指令的格式在内存中写入一条机器指令。

参考 手把手教你汇编 Debug

CS & IP

CS(Code Segment)是代码段寄存器,一般也被称为段基址,可以认为是程序访问的入口,CPU 需要从 CS 中找到从哪个位置开始取指执行
但是我们还不知道要取哪一段,这时候 IP 的作用就体现出来了
IP(Instruction Pointer)就是指令指针寄存器,也叫做偏移地址,它会告诉我们从段基址开始,取哪一段的地址。
可以使用 段基址:偏移地址 来确定内存中的指定地址。

mov

  1. mov dst, src mov 寄存器,寄存器
  2. mov dst, imm mov 寄存器,立即数
  3. mov dst(L/H), imm mov 寄存器(高八位/低八位),立即数
    把 src 移到 dst
    在这里插入图片描述

add

  1. add dst, imm
  2. add dst, src
  3. add dst(L/H), imm add 寄存器(高八位/低八位),立即数
    在这里插入图片描述
    在这里插入图片描述
    如果相加后溢出了,删溢出的高位(如果低八位加法溢出,也会删“溢出”高位,即使本可以放高八位去)
    不是所有寄存器都能用,亲测,第一行的都能用,第二行开头两个就不能用(后面的没试)

sub

和 add 类似
不够减,就在最高位前放1,再减

汇编语言寄存器的英文全称中英对照表

在这里插入图片描述

mul

  1. 两个相乘的数:两个相乘的数,要么都是8位,要么都是16位。
    1. 如果是8位,一个默认放在AL中,另一个放在8位reg或内存字节单元中;
    2. 如果是16位,一个默认在AX中,另一个放在16位reg或内存字单元中。
  2. 结果:
    1. 如果是8位乘法,结果默认放在AX中;
    2. 如果是16位乘法,结果高位默认在DX中存放,低位在AX中放。
      示例:10D * 100D
      10 和 100 都小于 256 满足(1)
      在这里插入图片描述
      示例:100D * 10000D
      10000 > 256
      10000D = 2710H
      在这里插入图片描述
      不会溢出
      在这里插入图片描述

div

  1. 除数: 有8位和16位两种,在一个reg或内存单元中。
  2. 被除数:
    1. 如果除数为8位,被除数则为16位,默认在AX中存放;
    2. 如果除数为16位,被除数则为32位,在DX和AX中存放,DX存放高16位,AX存放低16位。
  3. 结果:
    1. 如果除数为8位,则AL存储除法操作的商,AH存储除法操作的余数;
    2. 如果除数为16位,则AX存储除法操作的商,DX存储除法操作的余数。

小结:
(1): AX / BL = AL…AH
(2): DXAX / BX = AX…DX

and

逻辑与指令,按位进行与运算。
示例:

mov al,01100011B
and al,00111011B
执行后: 
al=00100011B

attention 在 debug 模式下,不能赋二进制数,先转成十六进制再赋
通过该指令可将操作对象的相应位设为0,其他位不变。例如:
将al的第6位设为0的指令是:
and al,10111111B

or

or指令:逻辑或指令,按位进行或运算。
示例:

mov al,01100011B
or al,00111011B
执行后: 
al=01111011B

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

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

相关文章

SpringBoot源码解读与原理分析(八)ApplicationContext

文章目录 3.1.2 ApplicationContext3.1.2.1 ApplicationContext根接口3.1.2.2 ConfigurableApplicationContext3.1.2.3 EnvironmentCapable3.1.2.4 MessageSource3.1.2.5 ApplicationEventPublisher3.1.2.6 ResourcePatternResolver3.1.2.7 AbstractApplicationContext3.1.2.8 …

vue前端RSA使用公钥进行加密,公钥进行解密

记录下RSA使用公钥进行加密,公钥进行解密: 背景:由于项目要求前后端进行数据加密传输,具体数据使用aes进行加密,aes密钥使用rsa进行加密,加密后的aes密钥放在请求头和响应头进行传输。这里实现的是前端vue…

入门指南|Chat GPT 的兴起:它如何改变数字营销格局?

随着数字营销的不断发展,支持数字营销的技术也在不断发展。OpenAI 的 ChatGPT 是一项备受关注的突破性工具。凭借其先进的自然语言处理能力,ChatGPT 已被证明是全球营销人员的宝贵资产。在这份入门指南中,我们将探讨Chat GPT对数字营销专家及…

【HarmonyOS应用开发】HTTP数据请求(十四)

文章末尾含相关内容源代码 一、概述 日常生活中我们使用应用程序看新闻、发送消息等,都需要连接到互联网,从服务端获取数据。例如,新闻应用可以从新闻服务器中获取最新的热点新闻,从而给用户打造更加丰富、更加实用的体验。 那么…

React + SpringBoot + Minio实现文件的预览

思路:后端提供接口,从minio获取文件的预览链接,返回给前端,前端使用组件进行渲染展示 这里我从minio获取文件预览地址用到了一个最近刚开源的项目,挺好用的,大伙可以试试,用法也很简单 官网&am…

Netty的常用组件及线程模型设计(二)

Channel、EventLoopGroup和ChannelFuture Netty网络抽象的代表: Channel–Socket EventLoop–控制流、多线程处理、并发 ChannelFuture–异步通知 Channel和EventLoop关系如图: 我们可以看出Channel需要被注册到某个EventLoop上,在Channel整个声明周期内部都由这个…

mmpose单机多卡训练问题

当使用单卡训练时运行命令:python tools/train.py ${CONFIG_FILE} [ARGS]是可以跑通的,但是使用官方提供的:bash ./tools/dist_train.sh ${CONFIG_FILE} ${GPU_NUM} [PY_ARGS]进行单机多卡训练时却报如下错误: .... torch.cuda.O…

C语言--------指针(1)

0.指针&指针变量 32位平台,指针变量是4个字节(32bit/84)--------x86 64位平台,指针变量是8个字节(64bit/88)--------x64 编号指针地址;我们平常讲的p是指针就是说p是一个指针变量; ************只要…

仰暮计划|“第一次看到电视上播放的电影,那种震撼和喜悦仍然留在我的记忆中”

首 我是陈香妹,家在浙江省温州市瑞安市湖岭镇。 在上个世纪,我亲身经历过许多动荡和改变。那是一个充满希望和艰辛的时代,我曾见证了许多社会的变革和人们的奋斗。 01. 上世纪50年代,我还是一个十多岁的小姑娘,正处…

《MySQL 简易速速上手小册》第4章:数据安全性管理(2024 最新版)

文章目录 4.1 用户认证和权限控制4.1.1 基础知识4.1.2 重点案例4.1.3 拓展案例 4.2 防止 SQL 注入和其他安全威胁4.2.1 基础知识4.2.2 重点案例4.2.3 拓展案例 4.3 数据加密和安全备份4.3.1 基础知识4.3.2 重点案例4.3.3 拓展案例 4.1 用户认证和权限控制 进入数据库的安全世界…

MySQL学习记录——유 表的约束

文章目录 1、了解2、空属性3、默认值default4、列描述comment就是注释,desc看不到,show能看到。5、zerofill6、主键7、自增长auto_increment8、唯一键9、外键 1、了解 只有数据类型的约束肯定不够,mysql还有表的约束来进而保证数据合法性。约…

OJ刷题:求俩个数组的交集(没学哈希表?快排双指针轻松搞定!)

目录 ​编辑 1.题目描述 2.C语言中的内置排序函数(qsort) 3.解题思路 3.1 升序 3.2双指针的移动 3.3 保证加入元素的唯一性 4.leetcode上的完整代码 完结散花 悟已往之不谏,知来者犹可追 …