【汇编语言】——基础知识

控制总线
  1. 汇编指令是机器指令的助记符,同机器指令一一对应;
    操作:寄存器BX的内容送到AX中
    机器指令:1000100111011000
    汇编指令:mov ax,bx
  2. 每一种cpu都有自己的汇编指令集;
  3. cpu可以直接使用的信息在存储其中存放;
  4. 在存储器中指令和数据没有任何区别,都是二进制信息;
  5. 存储单元从零开始顺序编号;
  6. 一个存储单元可以存储多个bit,及8位二进制数,一个字节;
  7. 每一个cpu芯片都有许多管脚,这些管脚与总线相连,也可以说,这些管脚,一个cpu可以引出三种总线的宽度标志了这个cpu的不同方面的性能:
    地址总线的宽度决定了cpu的寻址能力
    数据总线的宽度决定了cpu与其他器件进行数据传送时的一次数据传送量
    控制总线的宽度决定了cpu对系统中其他器件的控制能力
地址总线

例题1:1个cpu的寻址能力为8kb,那么它的地址总线的宽度为多少。
答:为13,2^13=8k
例题2:下图展示了一个具有8根地址线的cpu向内存发出地址信息11时8根地址线上传送的二进制信息,则访问地址为12、13、14等的内存单元时,地址总线上传送的内容是什么?

![在这里插入图片描述](https://img-blog.csdnimg.cn/2019062821454134.png)

那么由上图容易得到:
最上面为低地址线,最下面为高地址线则由地址为:
12:0011 0000
13:1011 0000
14:0111 0000

数据总线

8088cpu的数据总线宽度为8,8086cpu的数据总线宽度为16,当向内存中写入数据89D8时,下面两图分别展示了二者的数据传输情况
在这里插入图片描述在这里插入图片描述

各类存储芯片

一台PC机中,装有多个存储器芯片,这些存储器芯片从物理连接上看是独立的、不同的器件。从读写属性上分为两类:随机存储器(RAM)和只读存储器(ROM)。随机存储器可读可写,但必须带电存储,关机后存储的内容丢失;只读存储器只能读取不能写入,关机后其中的内容不会丢失。这些存储器从功能和连接上又分为以下几类:

  • 随机存储器:用于存放供CPU使用的绝大部分程序和数据,主随机存储器一般由两个位置上的RAM组成,装在主板上的RAM和插在扩展插槽上的RAM。
  • 装有BIOS的ROM:BIOS是主板和各类接口卡(如:显卡,网卡等)厂商提供的软件系统,可以通过它利用该硬件设备进行最基本的输入输出。在主板和某些接口卡上茶油存储相应BIOS的ROM。例如:主板上的ROM中存储着主板的BIOS(系统BIOS);显卡上的ROM中存储着显卡的BIOS;如果网卡上装有ROM,那其中就可以存储网卡的BIOS。
  • 接口卡上的RAM:某些接口卡需要对大批量输入、输出数据进行暂时存储,在其上装有RAM。最典型的是显卡上的RAM,一般称为显存。显示卡随时会将显示中的数据向显示器上输出。换句话数,我们将需要显示的内容写入显存,就会出现在显示器上。

下图为PC系统中各类存储器的逻辑连接情况。
在这里插入图片描述

内存地址空间

上述的那些存储器,它们在物理上是独立的器件,但它们在以下两点上相同:

  • 都和CPU的总线相连。
  • CPU对它们进行读或写的时候都通过控制线发出内存读写命令。
    也就是说,CPU在操纵和控制它们的时候,把它们都当做内存对待,把它们总的看作一个由若干存储单元组成的逻辑存储器,这个逻辑存储器就是我们所说的内存地址空间。

下图展示了CPU将系统中各类存储器看作一个逻辑存储器的情况。
在这里插入图片描述

CS和IP

 CS和IP是8086CPU中两个最关键的寄存器,它们指示了CPU当前要读取指令的地址。CS为代码段寄存器,IP为指令指针寄存器(类似程序计数器?),从名称上看,它们是与指令有关系的。
 在8086PC机中,任意时刻,设CS中的内容为M,IP中的内容为N,8086CPU将从M×16+N单元开始,读取一条指令并执行。
 下图展示了8086CPU读取、执行指令的工作原理。
在这里插入图片描述
 初始时,CS:2000H,IP:0000H,CPU将从内存2000H×16+0000H处读取指令执行,之后将CS、IP中的内容送入地址加法器,由地址加法器完成:物理地址=段地址×16+偏移地址,即20000H=2000H×16+0000H;物理地址之后被送入输入输出控制电路,然后输入输出控制电路将物理地址20000H送入地址总线,之后,从内存20000H单元开始存放的机器指令B8、23、01通过数据总线被送入CPU,之后指令从数据总线经过输入输出控制电路,然后被送入指令缓冲器;

 CPU在工作的时候把有的信息当作指令,有的信息看作数据。那么CPU根据什么把有的信息看作指令?我们可以说,CPU将CS:IP指向的内存单元中的内容看作指令,在任何时候,CPU将CS、IP中的内容当作指令的段地址和偏移地址,用它们合成指令的物理地址,到内存中读取指令码。如果说,内存中的一段信息曾被CPU执行过的话,那么,它所在的内存单元必然被CS:IP指向过。

  • mov ax,bx:把bx内容移动到ax之中
  • add ax,bx:ax与bx做+运算,并将结果放到ax寄存器中
  • jmp ax:修改IP的内容为ax寄存器的值
  • jmp ax:bx:修改CS为ax的值,IP为bx寄存器值

 代码段中的指令如何被执行呢,只要让CS:IP指向这个代码段的首地址;什么是代码段呢,即将长度N的一组代码存放在一组地址连续、起始地址为16的倍数的内存单元中,我们可以认为,这段空间是用来存放代码的。

debug的使用
  • R命令查看、改变CPU寄存器的内容
    -r
  • D命令查看内存中的内容
    -d 1000:0 结果如下
    在这里插入图片描述
  • E命令改写内存中的内容
    -e 1000:0 0 1 2 3 4 5 6 7 8 9这里修改了1000:0~1000:9单元中的内容
    -e 1000:10输入前面这段代码,按Enter,如下
    在这里插入图片描述
    debug显示起始地址1000:0010,和第一单元(即1000:0010单元)的原始内容:B8,然后光标停在“.”的后面提示输入想要写入数据,此时有两种操作,输入数据,即将该内存单元的数据由B8改为该输入数据,或者不输入数据,直接空格,则不对该内存单元改写;
    -u 1000:0显示输出3部分:每一条机器指令的地址、机器指令、及代表的汇编指令,如下图;
    在这里插入图片描述
  • T命令执行一条指令
    -t=[地址]或-t即定位到该地址,使用debug的T命令可以执行一条或多条指令,简单使用T指令,可以执行CS:IP指向指令;
  • A命令以汇编指令格式在内存中写入一条机器指令
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值