16asm - 汇编介绍 和 debug使用

文章目录

前言

  • 各位师傅大家好,我是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基础命令:

bash 复制代码
#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的基础使用,以及标志寄存器的讲解
相关推荐
我在人间贩卖青春6 天前
汇编之伪指令
汇编·伪指令
我在人间贩卖青春6 天前
汇编之伪操作
汇编·伪操作
济6176 天前
FreeRTOS基础--堆栈概念与汇编指令实战解析
汇编·嵌入式·freertos
myloveasuka6 天前
汇编TEST指令
汇编
我在人间贩卖青春6 天前
汇编编程驱动LED
汇编·点亮led
我在人间贩卖青春6 天前
汇编和C编程相互调用
汇编·混合编程
myloveasuka7 天前
寻址方式笔记
汇编·笔记·计算机组成原理
请输入蚊子7 天前
《操作系统真象还原》 第六章 完善内核
linux·汇编·操作系统·bochs·操作系统真像还原
myloveasuka7 天前
指令格式举例
汇编·笔记·计算机组成原理
我在人间贩卖青春8 天前
汇编之分支跳转指令
汇编·arm·分支跳转