16asm - 汇编介绍 和 debug使用

文章目录

  • 前言
    • 硬件运行机制
    • 微机系统硬件组成
    • 计算机系统组成
    • 8086cpu组织架构
    • dosbox安装
      • 配置debug
    • debug使用
      • R命令
      • D命令
      • E命令
      • U命令
      • T命令
      • A命令
      • 标志寄存器
  • 总结

前言

  • 各位师傅大家好,我是qmx_07,今天给大家讲解 十六位汇编 和 debug调试器的使用
    在这里插入图片描述

硬件运行机制

  • 为什么计算机的数据操作单位是二进制呢?
    在这里插入图片描述

  • 通过电子二极管,正向加电则通,反向加电则不通,得到 0 和 1

  • 根据电子二极管的特性,得到以下门电路:
    在这里插入图片描述
    在计算机底层,加减乘除的运算就是由 与 或 非 三种运算构成

在这里插入图片描述

  • 更高级的数学运算也可以通过简单的位运算计算,将常用运算封装成一个器件,称之为单元
    在这里插入图片描述

  • 机器码:类似111111000010101010B,可以用来控制硬件的二进制数据,叫做机器码。

  • 助记符(Mnemonic):二进制值难记,每种功能的二进制控制码取一个容易记住的名字,叫做助记符,也称之为指令 例如,00B - add 01B - sub
    在这里插入图片描述

  • 汇编:将助记符 通过汇编器 转成机器码

微机系统硬件组成

  • 一个系统不可能由一个硬件单独完成,所以划分出多个硬件模块,然后由一个硬件模块居中调度,称作cpu
    在这里插入图片描述
  • 单片机:
    在这里插入图片描述
  • I/0桥:所有的硬件模块连接到I/O桥,由I/O桥负责辅助cpu与哪一个硬件模块连接
    在这里插入图片描述
  • 总线:cpu有8位数据/地址线,ram是个256byte的存储器
    在这里插入图片描述

计算机系统组成

计算机分层:
在这里插入图片描述
计算机编译过程:
在这里插入图片描述

  • 执行
    -在这里插入图片描述

8086cpu组织架构

  • 8086架构图
    在这里插入图片描述
    EU部件:1. 执行部件(excution unit) 2. 译码 3. 执行指令
    BIU部件:1. 总线接口部件(bus interface unit) 2. 取指令 3. 读取数据 4. 写入数据
    寄存器:
    在这里插入图片描述
    流水线处理:
  • 8086cpu将指令的执行分成多个模块,有什么好处?
    可以多个部件同时工作,提高硬件的利用率,从而提高效率
    在这里插入图片描述
    在8086 CPU架构下,串行处理和流水线处理是两种不同的指令处理方式:
  1. 串行处理: 串行处理是指在执行指令时,逐条顺序地执行指令。当一条指令执行完成后,才能开始执行下一条指令。这种处理方式的特点是简单直观,易于理解和调试,但效率相对较低。因为在串行处理中,指令之间存在时钟周期的间隔,导致CPU的运行效率受限。8086 CPU在早期的时候主要采用串行处理方式
  2. 流水线处理: 流水线处理是指将指令处理过程划分为多个阶段,并在不同阶段同时执行不同的指令。每个阶段负责完成指定的任务,然后将结果传递给下一个阶段。这样可以实现多个指令的并行处理,提高CPU的执行效率。流水线处理利用了指令的部分并行性,有效地利用了CPU资源。8086 CPU在后期引入了流水线处理的技术,提高了指令的执行速度

在8086 CPU中,流水线处理主要包括以下几个阶段:

  • 取指令阶段(Instruction Fetch):从内存中读取指令,并将其存储在指令缓存中。
  • 译码阶段(Instruction Decode):对取得的指令进行解码,确定指令的操作类型和操作数。
  • 执行阶段(Execution):根据指令的类型执行相应的操作,比如算术运算、逻辑运算等。
  • 存储阶段(Memory Access):若指令需要访问内存或外设,则在此阶段进行数据的读取或写入。
  • 写回阶段(Write Back):将执行结果写回寄存器或内存。
    效率:流水线处理 > 串行处理
    弊端:当跳转到总线使用的时候,此时已经取得一部分指令,并且已经译码了.那么此时这部分将清空,从头操作,类似于goto语句

dosbox安装

  • 介绍:模拟DOS环境,执行旧的dos程序

链接:https://pan.baidu.com/s/141agLfQWdAnmK24WTdtOfw?pwd=sds3
提取码:sds3
在这里插入图片描述
在这里插入图片描述

  • 选择合适的下载路径,安装dosbox环境

配置debug

在这里插入图片描述
1.mount c f:\dosbox\

  • 将f:\dosbox\ 这个路径,挂载为虚拟c盘

2.c:

  • 切换为c盘使用
    在这里插入图片描述
  • 将debug程序 放进f:\dosbox\路径下
    在这里插入图片描述
  • 通过 options.bat程序,就可以自动挂载磁盘

dos基础命令:

#cd\ ——首先要用cd\ 退回到根目录C>下
#dir ——显示文件列表
#md hb ——建立hb子目录
#cd hb ——进入hb子目录
#copy d:\dos\masm.exe c:\hb ——将D盘dos目录下的masm.exe拷贝到C盘hb目录下
#copy d:\dos\link.exe c:\hb ——将D盘dos目录下的link.exe拷贝到C盘hb目录下
#cd .. ——退回到上一级目录
#del \hb\masm.exe ——删除hb子目录中的某文件
#rd hb ——删除hb子目录(子目录中的所有文件必须先删除)
#e:——进入e盘
#cls ——清屏
#type——显示文本文件内容(如type c:\hb\abc.asm)

debug使用

  • 介绍:debug是微软公司出品的调试工具,可以调试0环和3环
  • 作用:深入机器内部观察,修改观察寄存器等值的内容
  • 基本功能介绍:

R命令:查看、改变CPU寄存器的内容
D命令:查看内存中的内容
E命令:改写内存中的内容
U命令:将内存中的机器指令翻译成汇编指令
T命令:执行一条机器指令
A命令:以汇编指令的格式在内存中写入一条机器指令
Q命令:退出

R命令

在这里插入图片描述

  • 查看CPU寄存器的内容[R]
  • 修改寄存器中的值[R 寄存器]

D命令

  • 查看内存中的内容【D 段地址:偏移地址】
  • 指定范围查看内存中的内容【D 段地址:起始偏移地址 结尾偏移地址】
    在这里插入图片描述
    左侧为每行的内存单元起始地址
    中间为128个内存单元的内容,用十六进制的格式输出
    右侧为每个内存单元中的数据对应的可显示的ASCII码字符

E命令

在这里插入图片描述

  • 修改内存中的内容【E 段地址:偏移地址】
    在这里插入图片描述
  • 一次性修改多个内存中的内容【E 段地址:偏移地址 值1 值2 …】

U命令

在这里插入图片描述

  • 将内存中的机器指令翻译成汇编指令【U 段地址:偏移地址】
    U命令的显示输出分为三部分:

左侧为机器指令的地址
中间为机器指令
右侧为机器指令所对应的汇编指令

T命令

在这里插入图片描述

  • 执行一条或多条指令【T】,类似于VS调试中的F11
  • 执行的命令为CS:IP指向的指令

A命令

在这里插入图片描述

  • 以汇编指令的形式在内存写入机器指令【A 段地址:偏移地址】
  • Debug会将这些汇编指令翻译成对应的机器指令,将它们的机器码写入内存,在给出的起始地址后面直接按Enter键表示操作结束

标志寄存器

在这里插入图片描述

条件标志

  • CF 进位标志用于反映运算是否产生进位或借位。如果运算结果的最高位产生一个进位或借位,则CF置1,否则置0。运算结果的最高位包括字操作的第15位和字节操作的第7位。移位指令也会将操作数的最高位或最低位移入CF。
  • PF 奇偶标志用于反映运算结果低8位中“1”的个数。“1”的个数为偶数,则PF置1,否则置0。
  • AF 辅助进位标志:算数操作结果的第三位(从0开始计数)如果产生了进位或者借位则将其置为1,否则置为0,常在BCD(binary-codedecimal)算术运算中被使用。
  • ZF 零标志用于判断结果是否为0。运算结果0,ZF置1,否则置0。
  • SF 符号标志用于反映运算结果的符号,运算结果为负,SF置1,否则置0。因为有符号数采用补码的形式表示,所以SF与运算结果的最高位相同。
  • OF 溢出标志反映有符号数加减运算是否溢出。如果运算结果超过了8位或者16位有符号数的表示范围,则OF置1,否则置0。

控制标志

TF 跟踪标志:当TF被设置为1时,CPU进入单步模式,所谓单步模式就是CPU在每执行一步指令后都产生一个单步中断。主要用于程序的调试。8086/8088中没有专门用来置位和清零TF的命令,需要用其他办法。
IF 中断标志:决定CPU是否响应外部可屏蔽中断请求。IF为1时,CPU允许响应外部的可屏蔽中断请求。
DF 方向标志:决定串操作指令执行时有关指针寄存器调整方向。当DF为1时,串操作指令按递减方式改变有关存储器指针值,每次操作后使SI、DI递减。
在这里插入图片描述
进位针对的是无符号数运算,溢出针对的是有符号数运算。
当看成无符号数,则关注CF标志,看成有符号数,则关注OF标志。

总结

  • 介绍了计算机中硬件的运行原理,计算机系统组成,8086cpu的组织架构,debug的基础使用,以及标志寄存器的讲解

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

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

相关文章

自动化检测三维扫描仪-三维扫描仪检测-三维建模自动蓝光测量系统

在现代工业制造领域,特别是在航天航空和汽车行业,产品零部件的精度和质量至关重要。CASAIM自动化智能检测系统能够实现对产品零部件的快速、准确的三维尺寸检测。其自动蓝光测量系统利用蓝色激光光源,通过非接触式扫描,能够快速获…

Maven、JAVAWeb、Servlet

知识点目标 1、MavenMaven是什么Maven项目的目录结构Maven的Pom文件Maven的命令Maven依赖管理Maven仓库JavaWeb项目 2.网络基础知识 3、ServletMaven Maven是什么 Maven是Java的项目管理工具,可以构建,打包,部署项目,还可以管理…

VLC 播放的音视频数据处理流水线搭建

VLC 播放的音视频数据处理流水线搭建 音视频流播放处理循环音频输出处理流水线VLC 用 input_thread_t 对象直接或间接管理音视频播放有关的各种资源,包括 Access, Demux, Decode, Output, Filter 等,这个类型定义 (位于 vlc-3.0.16/include/vlc_input.h) 如下: s…

浅谈edusrc挖掘技巧+信息收集新姿势

目录 1 前言 2 信息收集资产收集 2.1域名查询 2.2邮箱查询 2.3 ICP备案信息查询 3 综合资产查询姿势 3.1 FOFA鹰图 3.2企查查/小蓝本 3.3 黑客语法(Google必应) 4 统一身份认证登录绕过 4.1逻辑缺陷绕过 4.2爆破账户/前端绕过验证 5 纯手工信…

Ubuntu Linux操作系统

一、 安装和搭建 Thank you for downloading Ubuntu Desktop | Ubuntu (这里我们只提供一个下载地址,详细的下载安装可以参考其他博客) 二、ubuntu的用户使用 2.1 常规用户登陆方式 在系统root用户是无法直接登录的,因为root用户的权限过…

RDIFramework.NET CS敏捷开发框架 SOA服务三种访问(直连、WCF、WebAPI)方式

1、介绍 在软件开发领域,尤其是企业级应用开发中,灵活性、开放性、可扩展性往往是项目成功的关键因素。对于C/S项目,如何高效地与后端数据库进行交互,以及如何提供多样化的服务访问方式,是开发者需要深入考虑的问题。…

ProtoBuf快速上手(C++)

在快速上⼿中,会编写第⼀版本的通讯录 1.0。在通讯录 1.0 版本中,将实现: • 对⼀个联系⼈的信息使⽤ PB 进⾏序列化,并将结果打印出来。 • 对序列化后的内容使⽤ PB 进⾏反序列,解析出联系⼈信息并打印出来。 •…

PHP 方头像转为圆图

业务需要把创建海报上的用户头像由方形转为圆形,前端的样式设置不能用。 故采用GD的函数来对方图进行裁剪处理为圆图。 目录 裁剪函数 本地图片 远程图片 效果 参考文章 总结 裁剪函数 从网上找的一个裁剪图片的函数。 代码如下: /* * 将图片切…

代理IP地址的含义与设置指南‌

在数字化时代,互联网已经成为我们日常生活不可或缺的一部分。然而,在享受互联网带来的便利的同时,我们也面临着隐私泄露、访问限制等问题。代理IP地址作为一种有效的网络工具,能够帮助我们解决这些问题。本文将详细介绍代理IP地址…

基于Java Springboot个人财务APP且微信小程序

一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术:Html、Css、Js、Vue、Element-ui 数据库:MySQL 后端技术:Java、Spring Boot、MyBatis 三、运行环境 开发工具:IDEA/eclipse 微信…

红队/白帽必经之路(16)——如何用Metasploit 在边路进行信息刺探及爆破登录[既然是红队,那就对自己狠一点!!!]

欢迎各位彦祖与热巴畅游本人专栏与博客 你的三连是我最大的动力 以下图片仅代表专栏特色 [点击箭头指向的专栏名即可闪现] 专栏跑道一 ➡️网络空间安全——全栈前沿技术持续深入学习 专栏跑道二 ➡️ 24 Network Security -LJS ​ ​ ​ 专栏跑道三 ➡️ MYSQL REDIS Advan…

vue实现echarts饼图自动轮播

echarts官网:Examples - Apache ECharts echartsFn.ts 把echarts函数封装成一个文件 import * as echarts from "echarts";const seriesData [{"value": 12,"name": "过流报警"},{"value": 102,"name&qu…

C++之异常智能指针其他

C之异常&智能指针&其他 异常关于函数异常声明异常的优劣 智能指针auto_ptrunique_ptrshared_ptrweak_ptr定制删除器 智能指针的历史与boost库 特殊类单例模式饿汉和懒汉的优缺点 C四种类型转换CIO流结语 异常 try括起来的的代码块中可能有throw一个异常(可…

混沌工程/混沌测试/云原生测试/云平台测试

背景 私有云/公有云/混合云等具有复杂,分布式,环境多样性等特点,许多特殊场景引发的线上问题很难被有效发现。所以需要引入混沌工程,建立对系统抵御生产环境中失控条件的能力以及信心,提高系统面对未知风险得能力。 …

Hive学习基本概念

基本概念 hive是什么? Facebook 开源,用于解决海量结构化日志的数据统计。 基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类SQL查询功能 本质是将HQL转化为MapReduce程序。 Hive处理的数据存储在H…

数据分析流程中的Lambda架构,以及数据湖基于Hadoop、Spark的实现

文章目录 一、Lambda架构1、Lambda的三层架构2、简单解释:3、Lambda架构的优缺点 二、数据湖基于Hadoop、Spark的实现1、架构2、数据管理(存储层的辅助功能) 一、Lambda架构 1、Lambda的三层架构 Batch View(批处理视图层&#…

算法笔记:力扣142.环形链表返回链表入口

该题目通俗来说就是需要返回节点的入口,这点与判断是否有环不同,有环是通过快慢指针的形式来判断,但当快慢指针相等的时候,此时的节点不一定是环的入口节点。所以这题需要注意。 关键API: map.putIfAbsent(key,value)…

医院管理系统

私信我获取源码和万字论文,制作不易,感谢点赞支持。 医院管理系统 摘要 随着信息互联网信息的飞速发展,医院也在创建着属于自己的管理系统。本文介绍了医院管理系统的开发全过程。通过分析企业对于医院管理系统的需求,创建了一个计…

说说Elasticsearch查询语句如何提升权重?

大家好,我是锋哥。今天分享关于【说说Elasticsearch查询语句如何提升权重?】面试题。希望对大家有帮助; 说说Elasticsearch查询语句如何提升权重? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在 Elasticsearch 中&…

【Spring Security框架解析】

文章目录 Spring-security介绍Spring-security认证授权流程认证流程Security流程认证过滤器实现获取UserDetail信息 配置Security Spring-security介绍 Spring Security是一个功能强大且高度可定制的Java安全框架,用于保护基于Spring的应用程序。它提供了全面的安全…