【汇编】二、访问寄存器

1.寄存器及数据存储

2.1-.2.2节
 一个典型的CPU(此处讨论的不是某一具体的CPU)由运算器、控制器、寄存器(CPU工作原理)等器件构成,这些器件靠内部总线相连。前一章所说的总线,相对于CPU内部来说是外部总线。内部总线实现CPU内部各个器件之间的联系,外部总线实现CPU和主板上其他器件的联系。
简单地说,在CPU中:
 运算器进行信息处理;
 寄存器进行信息存储;
 控制器控制各种器件进行工作;
 内部总线连接各种器件,在它们之间进行数据的传送。

寄存器是CPU内部的信息存储单元
8086CPU有14个寄存器∶
通用寄存器∶AX、BX、CX、DX
变址寄存器:SI、DI
指针寄存器:SP、BP
指令指针寄存器︰IP
段寄存器:CS、SS、DS、ES
标志寄存器:PSW
共性
8086CPU所有的寄存器都是16位的,可以存放两个字节。
在这里插入图片描述
"字"在寄存器中的存储
字长就是该CPU寄存器的长度,即bit数。例如8086CPU是16位CPU,则8086的字长为16bit。

2.mov和add命令

2.3节
汇编指令不区分大小写

将10赋值给寄存器a

mov a,10

将寄存器b的值赋值给寄存器a

mov a,b

将寄存器a和寄存器b相加的结果赋值给寄存器a

mov a,b

两个8bit的数据相加,只能产生8bit的结果,溢出部分会被丢掉

3.确定物理地址的方法

2.4-2.7节

 CPU 访问内存单元时,要给出内存单元的地址。所有的内存单元构成的存储空间是一个一维的线性空间,每一个内存单元在这个空间中都有唯一的地址,我们将这个唯一的地址称为物理地址。
 CPU通过地址总线送入存储器的,必须是一个内存单元的物理地址。在CPU向地址总线上发出物理地址之前,必须要在内部先形成这个物理地址。不同的CPU可以有不同的形成物理地址的方式。我们现在讨论8086CPU是如何在内部形成内存单元的物理地址的。

8086是16位机,也可以说8086是16位结构的CPU。
概括地讲,16位结构(16 位机、字长为16位等常见说法,与16位结构的含义相同)描述了一个CPU具有下面几方面的结构特性。
 运算器一次最多可以处理16位的数据;
 寄存器的最大宽度为16位;
 寄存器和运算器之间的通路为16位。

物理地址=基础地址(段地址x16)+偏移地址
8086有20根地址总线,但是寄存器只有16位的,所以要用两个寄存器表示物理地址

4.内存的分段表示法

2.8节
内存没有分段,段的划分来自CPU。
一个段的起始地址一定是16的倍数。
偏移地址为16位,所以一个段的长度最大为64K。

4个段寄存器:
CS:代码段寄存器
DS:数据段寄存器
SS:栈段寄存器
ES:附加段寄存器

CS:IP指向当前要执行的指令所在内存单元
SS:SP指向栈顶元素所在内存单元

5.Debug的使用

P35 实验1预备知识部分
 Debug 是 DOS、Windows 都提供的实模式(8086方式)程序的调试工具。使用它,可以查看CPU各种寄存器中的内容、内存的情况和在机器码级跟踪程序的运行。

用Debug 的R命令查看、改变CPU寄存器的内容;
用Debug 的D命令查看内存中的内容;
用Debug的E命令改写内存中的内容;
用Debug 的U命令将内存中的机器指令翻译成汇编指令;
用Debug 的T命令执行一条机器指令;
用Debug 的A命令以汇编指令的格式在内存中写入一条机器指令。

启动debug

debug

查看寄存器内容

r

改变寄存器ax内容

r ax
rax

查看预设地址内存处(CS:IP)的128个字节的内容

d 
输出值依次为地址,内容,内容的ASCII码

再次键入d会显示出当前128字节之后的128字节的内容

列出内存中指定地址处的128个字节的内容

d ax:bx 
这里ax:bx为指定地址

列出内存中指定地址范围内的内容

d ax:bx cx
ax:bx为指定起始地址,cx为结尾偏移地址

修改指定地址及其之后的内容

e ax:bx x1 x2 x3...
将x1 x2 x3依次填入由ax:bx开始的内存单元

逐个询问式修改

e ax:bx

将指定内存处的机器指令翻译为汇编指令

u ax:bx

在指定内存处以汇编指令形式写入机器指令

a ax:bx

执行CS:IP处的指令

t

退出debug

q

6.CS、IP与代码段

2.9-2.10节
CS:代码段寄存器
IP:指令指针寄存器
CPU将内存中CS:IP指向的内容当作指令执行。

 8086CPU的工作过程如下:
(1)从CS:IP指向的内存单元读取指令,读取的指令进入指令缓冲器;
(2)IP=IP+所读取指令的长度,从而指向下一条指令;
(3)执行指令。转到步骤(1),重复这个过程。

7.jmp指令

2.11-2.12节
程序中经常有转移指令
同时修改CS、IP的内容

jmp ax:bx
将CS的值设为ax,将IP的值设为bx

仅修改IP的内容

jmp ax
类似于mov IP,ax。但注意,mov IP,ax本身是非法语句
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冷冰殇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值