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

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.AX可以分为AH和AL;
  2.BX可以分为BH和BL;
  3.CX可以分为CH和CL;
  4.DX可以分为DH和DL。

2.2 字在寄存器中的存储

2.3 几条汇编指令

2.4 物理地址 

  CPU访问内存单元时要给出内存单元的地址。所有的内存单元构成的存储空间是一个一维的线性空间,这个唯一的地址称为物理地址。

2.5 16位结构的CPU

  概括的讲,16位结构描述了一个CPU具有以下几个方面特征:
  1、运算器一次最多可以处理16位的数据。
  2、寄存器的最大宽度为16位。
  3、寄存器和运算器之间的通路是16位的。

2.6 8086CPU给出物理地址的方法

  8086有20位地址总线,可传送20位地址,寻址能力为1M。

  8086内部为16位结构,它只能传送16位的地址,表现出的寻址能力却只有64K。

  

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

2.8 段的概念

  内存并没有分段,段的划分来自于CPU,由于8086CPU用“(段地址×16)+偏移地址=物理地址”的方式给出内存单元的物理地址,使得我们可以用分段的方式来管理内存。

  段地址×16 必然是 16的倍数,所以一个段的起始地址也一定是16的倍数。
  偏移地址为16位,16 位地址的寻址能力为 64K,所以一个段的长度最大为64K。

2.9 段寄存器

  段寄存器就是提供段地址的。
  8086CPU有4个段寄存器:CS、DS、SS、ES

2.10 CS和IP

  CS和IP是8086CPU中最关键的寄存器,它们指示了CPU当前要读取指令的地址。
  1.CS为代码段寄存器;
  2.IP为指令指针寄存器。

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

  在8086CPU 加电启动或复位后( 即 CPU刚开始工作时)CS和IP被设置为CS=FFFFH,IP=0000H。

  不能够通过mov指令改变CS、IP的值,只能够通过专门的指令jmp修改,jmp 寄存器表示只修改IP的值。

2.12 代码段

  CPU 只认被 CS:IP 指向的内存单元中的内容为指令,所以要将CS:IP指向所定义的代码段中的第一条指令的首地址。

Debug命令:

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

参考资料:《小甲鱼汇编零基础入门》

     《汇编语言》第三版

时间: 2024-10-06 03:55:03

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

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

问题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: X

王爽汇编语言第三版第5章实验4

第(3)小题 下面的程序的功能是将“mov ax,4c00h”之前的指令复制到内存0:200处,补全程序.上机调试,跟踪运行结果. assume cs:code code segment mov ax,     cs       ;cs为程序入口的段地址,我们就是要从这里开始复制 mov ds,ax mov ax,0020h mov es,ax mov bx,0 mov cx,     cx        ;程序刚加载完成时,cx存放的是程序的大小,这里我不确定答案,我试过后看到mov ax,4

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. 套接字是网络通信的

【汇编语言】(王爽著第三版)实验二

实验二 实验任务(一) 实验前要求我们将书本P74的程序段按理论分析,将结果进行填空.之后用Debug,将该程序段写入内存,逐条执行之后, 根据指令执行后的实际运行的结果填空如下. mov ax,0021 mov  ax , ffff mov  ds , ax mov  ax , 2200 mov  ss , ax mov  sp , 0100 mov  ax , [0]                       ;ax=3130 add  ax , [2]                 

王爽汇编第三版检测点10.5

(1)下面的程序执行后,ax 中的数值是多少? 1 assume cs:code 2 stack segment 3 dw 8 dup (0) 4 stack ends 5 code segment 6 start: mov ax,stack 7 mov ss,ax 8 mov sp,16 9 mov ds,ax 10 mov ax,0 11 call word ptr ds:[0] 12 inc ax 13 inc ax 14 inc ax 15 mov ax,4c00h 16 int 21h

王爽汇编第三版实验10

1. 显示字符串 1 assume cs:code 2 3 data segment 4 db 'Welcome to masm!',0 5 data ends 6 7 stack segment 8 db 16 dup (0) 9 stack ends 10 11 code segment 12 start: 13 mov dh,8 14 mov dl,3 15 mov cl,2 16 mov ax,data 17 mov ds,ax 18 mov si,0 19 call show_str

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

最强大的王爽汇编语言学习环境使用教程

最强大的王爽汇编语言学习环境使用教程 一.前言 这是采用VMwere Workstation 12 pro虚拟机软件,搭建的MS-DOS学习环境,在windowsXP/8/10及linux中均可以使用,在这个环境中,我集成了CCDOS中文系统,pdos中文系统,使用这些系统,可以进行中文输入与显示.还集成了,十分著名的汇编语言调试工具TR,它比debug更加强大.并且集成了适合王爽汇编语言学习的微软汇编语言编译器masm5和dos中最强大的文本编辑器 vim73 for DOS,这是一个支持彩色

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)