阿里云 个人网站 名称,wordpress 待办事项,太原好的网站制作排名,怎么制作一个软件app目录 前言#xff1a;
通用寄存器
示例#xff1a; 通用寄存器的划分 汇编指令
cpu物理地址的形成
地址加法器运算示例#xff1a;
1. 相关部件提供段地址和偏移地址 2. 段地址和偏移地址送入地址加法器 3. 段地址*16
4. 求出物理地址 5. 输出物理地址
段的概念
Deb…目录 前言
通用寄存器
示例 通用寄存器的划分 汇编指令
cpu物理地址的形成
地址加法器运算示例
1. 相关部件提供段地址和偏移地址 2. 段地址和偏移地址送入地址加法器 3. 段地址*16
4. 求出物理地址 5. 输出物理地址
段的概念
Debug的使用
1.用R命令查看改变CPU寄存器的内容
2.用D命令查看内存中的内容 3.用E命令改变内存中的内容
4.用U命令将内存中的机器指令翻译成汇编指令
5. 用A命令以汇编指令的格式在内存中写入机器指令 6. 用T命令执行CS:IP处的机器指令
代码段寄存器CS与指令指针寄存器IP
修改CS与IP的指令 前言 CPU由运算器控制器寄存器等器件构成这些器件依靠内部总线相连 在CPU中运算器进行信息处理寄存器进行信息存储控制器控制各种器件进行工作内部总线连接各种器件在它们之间进行数据的传送 CPU中主要部件是寄存器寄存器是CPU中可以用指令读写的部件程序员可以各种寄存器中的内容实现对CPU的控制 鉴于不同的CPU寄存器的个数结构是不同的下述皆以8086CPU为例 通用寄存器 1. 8086CPU中所有的寄存器都是16位可以存放两个字节 2. 用来存放一般性的数据称之为通用寄存器分别为AX BX CX DX 示例 数据 18 二进制序列 10010 寄存器AX中的存储情况 通用寄存器的划分 1. 由于8086CPU上一代是8位为保证兼容性所以将8086CPU中的AX BX CX DX这四个寄存器都可划分为两个独立使用的8位寄存器使用; 2. 通用寄存器AX的低8位0位-7位)构成了AL寄存器高8位(8位-15位构成了AH寄存器 AHAL寄存器是可以独立使用的8位寄存器 3. 同理BX可分为BH与BLCX可分为CH与CLDX可分为DH与DL; 示例图 汇编指令 8086CPU一次性可以处理俩种数据 1. 字节记为byte,1个字节由8个bit组成可以储存在8位寄存器当中 2. 字 记为word , 1个字由两个字节组成这两个字节分别称为这个字的高位字节和低位字节高位字节存储于通用寄存器中XH中低位字节存储于通用寄存器XL中X可取A B C D; 汇编指令举例 汇编指令控制CPU完成的操作用高级语言的语法描述mov ax,18将18送入寄存器AXAX18mov ah ,78将78送入寄存器AHAH78add ax,8将寄存器AX中的数值加上8AXAX8mov ax,bx将寄存器BX中的数据送入寄存器AXAXBXadd ax,bx将AX和BX中的数值相加结果存在于AX中AXAXBX
注书写汇编指令或寄存器名称时不区分大小写
示例
AX中的值0000H BX中的值0000H 程序段中的指令指令执行后AX中的数据指令执行后BX中的数据 mov ax,4E20H4E20H0000Hadd ax,1406H6226H0000Hmov bx,2000H6226H0000Hadd ax,bx8226H2000Hmov bx,ax8226H8226Hadd ax,bx044CH8226H
cpu物理地址的形成 CPU访问内存单元时必须给出内存单元的地址 所有的内存单元构成的存储空间是一个一维的线性空间每一个内存单元在这个空间中都有唯一的地址这个唯一的地址称之为物理地址 8086CPU具有如下结构特性 1. 运算器一次最多可以处理16位数据 2. 寄存器最大宽度是16位 3. 寄存器和运算器之间的通路为16位 即在8086CPU内部可以一次性处理传输暂时存储的信息最大长度是16位也就是8086CPU只能送出16位的地址表现出的寻址能力只有64KB,但是8086CPU有20根地址总线可以传送20位地址达到1MB的寻址能力为了处理这种矛盾8086CPU采用一种在内部用两个16位的地址合成一个20位的物理地址的方法 8086CPU读写内存时 CPU的相关部件提供两个16位的地址一个称为段地址一个称为偏移地址段地址和偏移地址通过内部总线送入地址加法器地址加法器将两个16位的地址合成一个20位的物理地址地址加法器通过内部总线将20位物理地址送入输入输出控制电路输入输出控制电路将20位物理地址送上地址总线20位物理地址被地址总线传送到内存。 地址加法器采用 段地址*16 偏移地址物理地址 的方法合成物理地址 地址加法器运算示例
1. 相关部件提供段地址和偏移地址 2. 段地址和偏移地址送入地址加法器 3. 段地址*16 4. 求出物理地址 5. 输出物理地址 段地址*16偏移地址物理地址的本质含义是当CPU访问内存时用一个基础地址(段地址*16)和一个相对于基础地址的偏移地址相加给出内存单元的物理地址 段的概念
内存是一个由若干存储单元组成的逻辑存储器内存并没有分段段的划分来自于CPU; CPU用 段地址*16偏移地址物理地址 的方式给出内存单元的地址使得我们可以用分段的方式管理内存 示例 我们可以认为地址10000H-100FFH组成了一个段该段的起始地址为10000H段地址为1000H,大小为100H; 在编程时根据需要将若干地址连续的内存单元看做一个段用段地址*16定位段的起始地址用偏移地址定位段的内存单元注意以下两点 段地址*16必然是16的倍数所以一个段的起始地址为16的倍数偏移地址为16位即变化范围为0000H - FFFFH寻址能力为64kb,所以一个段的长度最大为64KB Debug的使用 debug是DOS Windows都提供的实模式程序的调试工具使用debug,可以查看CPU各种寄存器的内容内存的情况和在机器码级别跟踪程序的运行 1.用R命令查看改变CPU寄存器的内容 R — 查看寄存器的内容R 寄存器名称 — 改变指定寄存器的内容 2.用D命令查看内存中的内容 D - 列出预设地址内存处的128个字节的内容D 段地址偏移地址-列出内存中指定地址处的内容D 段地址偏移地址 结尾偏移地址 - 列出内存中指定地址范围内的内容 3.用E命令改变内存中的内容 E段地址偏移地址 数据1 数据2 ... E 段地址偏移地址 逐个询问式修改空格-接受继续 回车-结束 4.用U命令将内存中的机器指令翻译成汇编指令 E 段地址偏移地址 数据-以机器码的形式写入内存D 段地址偏移地址 - 查看机器码写入内存是否成功U 段地址: 偏移地址 - 查看机器码所对应的汇编指令 5. 用A命令以汇编指令的格式在内存中写入机器指令 a 段地址偏移地址 — 写入汇编指令d 段地址: 偏移地址 — 查看汇编指令所对应的机器码u 段地址: 偏移地址 — 查看代码 6. 用T命令执行CS:IP处的机器指令 代码段寄存器CS与指令指针寄存器IP 任意时刻设CS中的内容为M,IP中的内容为N8086CPU将从物理地址M*16N的内存单元读取一条指令并执行 即任意时刻CPU将CS:IP指向的内容当做指令执行 CPU工作过程 从CSIP指向的内存单元读取指令读取的指令进入指令缓冲器IP中的值自动增加使得CPU可以读取下一条指令此时IP指向下一条指令执行指令回到步骤1重复此过程 修改CS与IP的指令 能够修改CS IP的指令统称为转移指令简介可以修改CS IP 的jmp指令 同时修改CS IP 可以采用 jmp 段地址偏移地址 该指令的功能是用指令给出的段地址修改CS 偏移地址修改IP只修改IP的内容 jmp 某一合法寄存器 该指令的功能用寄存器中的值修改IP