第二章 寄存器

2012年12月12日 星期三 15时04分36秒 / 2014年1月23日 星期四 01时16分00秒

第二章 寄存器(CPU工作原理)

寄存器概述:
8086CPU有14个寄存器,分别是:AX,BX,CX,DX,SI,DI,SP,BP,IP,CS,SS,DS,ES,PSW。


2.1 通用寄存器
8086CPU所有的寄存器都是16位的,可以存放两个字节

AX,BX,CX,DX通常用来存放一般性数据,称为通用寄存器。



一个16位的寄存器所能存储的数据的最大值为2^-1

8086上一代CPU的寄存器都是8位的,为保证兼容性,这四个通用寄存器可以分为两个独立的8位寄存器使用:
◆AX可以分为AH(高八位)和AL(低八位);
◆BX可以分为BH和BL;
◆CX可以分为CH和CL;
◆DX可以分为DH和DL;

以AX为例,8086CPU的16位寄存器分为两个8为寄存器的情况:


2.2 字在寄存器中的存储
字节: byte ,一个字节包含8bit.
字 : 记为word ,一个字包含两个字节。

2.3 几条汇编指令
汇编指令 控制CPU完成的操作 用高级语言的语法描述
mov ax,18 将18送入AX AX=18
mov ah,78 将78送入AH AH=78
add ax,8 将寄存器AX的数值加上8 AX=AX+8
mov ax,bx 将寄存器BX中的数据送入到AX中 AX=BX
add ax,bx 将AX,BX中的内容相加,结果存在AX中 AX=AX+BX

2.4 物理地址
所有的内存单元构成的存储空间是一个一维的线性空间,每一个内存单元在这个空间中都有唯一的地址,我们称之为物理地址。
不同的CPU可以有不同的形成物理地址的方式。

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

2.6 8086 CPU给出物理地址的方法
8086的CPU有20位地址总线,可以达到1MB的寻址能力。但是从8086CPU的内部结构来看,如果将地址从内部简单发出,那么只能送出16位的地址,即寻址能力只有64KB。

8086CPU采用一种在内部用两个16位地址合成的方法形成一个20位的物理地址。 即16位的段地址+16位的偏移地址通过地址加法器形成20位的物理地址。

物理地址=段地址*16 + 偏移地址


2.7 ”段地址*16 + 偏移地址 = 物理地址“ 的本质含义
基础地址 + 偏移地址 = 物理地址

2.8 段的概念
8086CPU内部使用段地址和偏移地址移位相加的方法形成最终的物理地址
CPU可以用不同的段地址和偏移地址形成同一个物理地址

可根据需要,将地址连续,起始地址为16倍数的一组内存但愿定义为一个段。

2.9 段寄存器

段寄存器就是提供段地址的,8086CPU有4个段寄存器:CS,DS,SS,ES
当8086CPU要访问内存时,由这四个段寄存器提供内存单元的段地址。

2.10 CS(code consiqnment)和IP
CS和IP是8086CPU中最关健的寄存器,他们指示CPU当前读取指令的地址。
CS为代码段寄存器,IP为指针寄存器。
8086CPU启动时,CS和IP被设置为CS=FFFFH,IP=0000H,FFFF0H单元中的指令是8086CPU机开机后执行的第一条指令。
CPU将CS:IP指向的内存单元中的内容看做指令。

2.11 修改CS,IP的指令
在CPU中,程序员可以通过改变CS,IP中的内容来控制CPU执行目标指令。
传送指令(mov)可以改变8086CPU中大部分寄存器的值。
通过转移指令(jmp)修改CS,IP的内容。
jmp 2AE3:3
jmp 3:0B16
功能: 用指令中给出的段地址修改CS,偏移地址修改IP。

仅修改IP的内容:
jmp某一合法寄存器
jmp ax
jmp bx
功能:用寄存器中的值修改IP。


2.12 代码段


实验1 查看CPU和内存,用机器指令和汇编指令进行编程
(1)什么是DEBUG?
Debug是DOS,Windows都提供的实模式(8086方式)程序的调试工具,使用它可以查看CPU各种寄存器中的内容,内存的情况和在机器码中跟踪程序的运行。

(2)我们用到的DEBUG功能
R命令查看,改变CPU寄存器的内容;
-r ax
AX 0000
:1111
-r
AX=1111 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=13EA ES=13EA SS=13EA CS=13EA IP=0100 NV UP EI PL NZ NA PO NC
13EA:0100 0000 ADD [BX+SI],AL DS:0000=CD
-
D命令查看内存中内容;
E命令改写内存中的内容;
U命令将内存中的及其指令翻译为汇编指令;
T命令执行一天机器指令;
A命令以汇编命令的核实在内存中写入一条机器命令;




1.0 传送指令
mov 可以改变一般的寄存器的内容

2.0 转移指令
jmp 修改cs:ip的值
例如:jmp 2AE3:3 将cs的值设置为2AE3 , ip的值设置为3

仅修改IP的内容: 即用寄存器中的值修改IP
jmp ax (类似于 mov IP,ax)




2 实验任务
(1)使用Debug,将上面的程序逐条执行,观察每条指令执行后CPU中相关寄存器中内容的变化



2014-01-26 10:25 记 @sanlihedongkou.xichengqu.beijing
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值