汇编语言第三版 第二章 寄存器

  问题1.8086CPU的地址总线为20bit,而数据总线为16bit--也就是说每次传输的数据为16bit,那么如何使用16bit的数据总线来实现20bit的地址总线的地址传输?

  答:8086CPU使用两个16bit的地址合成一个20bit的物理地址.

    16bit A: XXXX

    16bit B: XXXX

  20bit物理地址的合成

    A *16 也就是将A(16进制表示的数值),向左移动一位,然后加上B。A * 16  +  B。物理地址 = 段地址 * 16 + 偏移地址

    16bit A: XXXX  左移一位

    20bit A‘: XXXX0 相加B

    16bit B:   XXXX

  在8086CPU中扮演保存段地址和偏移地址寄存器为CS和IP。在CPU内部使用地址加法器 实现两个地址的逻辑加法。

  问题2:CS和IP是如何变化的?

    在CPU获取下一条指令的时候,首先在CS:IP指定的内存中读取指令,然后将指令放入【指令缓冲器】中,然后IP=IP+读取指令的长度。

    1). 自动变化。在读取一条指令的时候,IP就会发生变化,IP=IP+读取指令的长度。

    2). 程序改变。jmp 段地址:偏移地址。jmp 1000:100 执行该条命令之后,cs=1000,ip=100。如果仅仅修改ip的数值,可以使用寄存器的数值,来改变ip。

      jmp ax,执行完毕之后,cs不变,ip = ax,等价于 jmp ip,ax;

  问题3:什么是段?

    在8086中允许用户将N(N<=64KB)的一组代码,存在一组地址连续起始地址为16的整数倍的内存空间中。

时间: 2024-10-18 02:07:34

汇编语言第三版 第二章 寄存器的相关文章

王爽《汇编语言》第三版 第二章 寄存器

CPU概述 一个典型的CPU由运算器.控制器.寄存器等器件组成,这些器件靠内部总线相连. 内部总线实现CPU内部各个器件之间的联系,外部总线实现CPU和主板上其它器件的联系. 8086CPU有14个寄存器 它们的名称为:AX.BX.CX.DX.SI.DI.SP.BP.IP.CS.SS.DS.ES.PSW. 2.1 通用寄存器 8086CPU所有的寄存器都是16位的,可以存放两个字节. 8086上一代CPU中的寄存器都是8位的: 为保证兼容性,这四个寄存器都可以分为两个独立的8位寄存器使用. 1.

Python核心编程第三版第二章学习笔记

第二章 网络编程 1.学习笔记 2.课后习题 答案是按照自己理解和查阅资料来的,不保证正确性.如由错误欢迎指出,谢谢 1. 套接字:A network socket is an endpoint of a connection across a computer network,Sockets are often represented internally as simple integers, which identify which connection to use. 套接字是网络通信的

Java 线程第三版 第一章Thread导论、 第二章Thread的创建与管理读书笔记

第一章 Thread导论 为何要用Thread ? 非阻塞I/O I/O多路技术 轮询(polling) 信号 警告(Alarm)和定时器(Timer) 独立的任务(Task) 并行算法 第二章 Thread的创建与管理 一.什么是Thread ? Thread是所在主机执行的应用程序任务(task). 只有一个线程的例子: public class Factorial { public static void main(String[] args) { int n = 5; System.ou

Java 线程第三版 第九章 Thread调度 读书笔记

一.Thread调度的概述 import java.util.*; import java.text.*; public class Task implements Runnable { long n; String id; private long fib(long n) { if (n == 0) return 0L; if (n == 1) return 1L; return fib(n - 1) + fib(n - 2); } public Task(long n, String id)

第二章 寄存器基础概念

第二章 寄存器 1.一个典型的CPU由运算器,控制器,寄存器等器件组成. 内部总线实现CPU内部各个器件之间的联系. 外部总线实现CPU和主板上其它器件的联系. 2.8086是Intel系列中16位微处理器,地址总线20位. 8086有14个16位寄存器:AX,BX,CX,DX,是通用寄存器SI,DI,BP,SP,是基址和变址寄存器CS,SS,DS,ES,是段寄存器IP,FLAGS是指令指针和标志寄存器. 3.通用寄存器:一个CPU有多个寄存器,用来存放十六位一般性数据 下面以AX为例 4.汇编

王爽《汇编语言》第三版 第九章 转移指令的原理

引言 8086CPU的转移指令分为以下几类: 无条件转移指令 (如:jmp) 条件转移指令 循环指令(如:loop) 过程 中断 9.1 操作符offset 操作符offset在汇编语言中是由编译器处理的符号,它的功能是取得标号的偏移地址. 9.2 jmp指令 jmp为无条件转移,可以只修改IP,也可以同时修改CS和IP. 9.3 依据位移进行转移的jmp指令 jmp short 标号(转到标号处执行指令)这种格式的 jmp 指令实现的是段内短转移,它对IP的修改范围为 -128~127,也就是

Java 螺纹第三版 第一章Thread介绍、 第二章Thread创建和管理学习笔记

第一章 Thread导论 为何要用Thread ? 非堵塞I/O I/O多路技术 轮询(polling) 信号 警告(Alarm)和定时器(Timer) 独立的任务(Task) 并行算法 第二章 Thread的创建与管理 一.什么是Thread ? Thread是所在主机运行的应用程序任务(task). 仅仅有一个线程的样例: public class Factorial { public static void main(String[] args) { int n = 5; System.o

Pro ASP.NET Core MVC 第6版 第二章(前半章)

目录 第二章 第一个MVC 应用程序 学习一个软件开发框架的最好方法是跳进他的内部并使用它.在本章,你将用ASP.NET Core MVC创建一个简单的数据登录应用.我将它一步一步地展示,以便你能看清楚怎样构建一个MVC 应用程序.为了让事情简单,我跳过了一些技术细节,但是不要担心,如果你是一个MVC的新手,你将会发现许多东西足够提起你的兴趣.因为我用的东西有些没做解释,所以我提供了一些参考以便你可以看到所有的细节的东西. 安装Visual Studio 要想根据本书实践的话,必须安装Visua

第二章 寄存器小结

存储器从功能和连接上分为:随机存储器:用于存放CPU的绝大部分程序和数据:装有BIOS的ROM:用于存储设备的基本输入输出系统:接口卡上的RAM:接口卡需要对大批量输入.输出数据进行暂存时使用,如显存.CPU在操作它们的时候,把它们都当做内存来对待,把它们总的看做一个由若干存储单元组成的逻辑存储器,这个逻辑存储器就是我们所说的内存地址空间. 2.在8086机中,任意时刻,CPU将CS:IP指向的内容当做指令执行,在加电或复位后CS和IP被设置为CS=FFFFH,IP=0000H,即FFFF0H单