【笔记】【汇编语言】第2章 寄存器

CPU的构造:运算器,寄存器,控制器,总线
程序员通过改变各种寄存器中的内容来实现对CPU的控制。
8086CPU有14个寄存器:AX,BX,CX,DX,SI,DI,SP,BP,IP,CS,SS,DS,ES,PSW

2.1 通用寄存器
  AX,BX,CX,DX这四个寄存器通常用来存放一般性的数据,称为通用寄存器。
  8086的所有寄存器都是16位的,为了保证兼容,使原来基于上代8位CPU编写的程序稍加修改就可以在8086上运行,8086CPU的4个通用寄存器都可以分为两个独立使用的8位寄存器。

2.2 字在寄存器中的储存

2.3 几条汇编指令
  注:汇编命令操作的对象位数须一致

2.4 物理地址
  所有的内存单元构成的存储空间是一个一维的线性空间,每一个内存单元在这个空间中都有唯一的地址,这个唯一的地址称为物理地址。

2.5 16位结构的CPU
  特征:
  1)运算器一次最多可以处理16位数据
  2) 寄存器的最大宽度为16位
  3)寄存器和运算器之间的通路为16位

2.6 8086CPU给出物理地址的方法
  物理地址=段地址*16+偏移地址
 
2.7 “物理地址=段地址*16+偏移地址”的本质含义
  8086CPU的这种“物理地址=段地址*16+偏移地址”寻址功能其实是“物理地址=基础地址+偏移地址”地址模式的一种具体实现方案
 
2.8 段的概念
  其实内存并没有分段,段的划分来自于CPU,由于8086CPU使用“物理地址=段地址*16+偏移地址”的方式来给出内存单元的具体地址,使得我们可以使用分段的方式来管理内存。
  16位地址的寻址能力为64KB,所以一个段最大的长度为64KB。
 
2.9 段寄存器
  8086CPU有4个段寄存器:CS,DS,SS,ES
 
2.10 CS和IP
  8086机中,任意时刻,CPU将CS:IP中的内容当作指令执行
 
2.11 修改CS和IP的指令
  注:CPU中,程序员可以通过指令读写的只有寄存器,程序员通过改变寄存器中的内容来实现对CPU的控制。
  注:mov指令并不能用于修改CS和IP的值,因为8086CPU并没有提供这样的功能。能够修改CS,IP的指令称为转移指令。
  如JMP指令:
  JMP 段地址:偏移地址
  JMP REG ; 类似于 MOV IP,REG
 
2.12 代码段
  指一段存放代码的内存
 
实验1 查看CPU和内存,用机器指令和汇编指令编程

Debug命令和功能:
1.R:查看CPU寄存器内容
  <> R
    查看寄存器内容
  <> R reg
    修改寄存器内容
2.D:查看内存中的内容
  <> D
    查看默认的内存中128个字节的内容
  <> D 段地址:偏移地址
    查看由段地址:偏移地址指定起始的128个字节的内容
  <> D 段地址:偏移起始地址 偏移结束地址
    查看由用户指定的一段内存
3.E:改写内存中的内容
  <> E 段地址:偏移地址 数据 数据 数据 数据……
    直接修改内存内容
  <> E 段地址:偏移地址
    提问式修改内存内容(按空格表示该单元处理完成,回车表示命令完成)
4.U:将内存中的机器指令翻译成汇编指令
  使用方式参照D命令
5.T:执行下一条机器指令
6.A:用汇编指令的格式向内存中写入一条机器指令
  <> A 段地址:偏移地址
    提问式修改,当不输入直接按回车时表示命令结束

posted @ 2012-04-12 19:45  Azik  阅读(340)  评论(0编辑  收藏  举报