《汇编语言》- 王爽 个人学习笔记

2.《汇编语言》-王爽第三版学习笔记 寄存器

2021-02-21  本文已影响0人  Nonmfly
  1. CPU中:
  1. 8086CPU 14个寄存器,所有的寄存器都是16位的,可以存放两个字节:
    AX,BX,CX,DX,SI,DI,SP,BP,IP,CS,SS,DS,ES,PSW

  2. 通用寄存器:AX,BX,CX,DX


    13571773-6A15-4A05-867F-950BEC4B28A1.png

4.8086CPU可以一次性处理一下两种尺寸的数据:

5.简单的汇编指令:


613B66E4-301A-4572-969E-263CF930B023.png
  1. 进行数据传送和运算时,要注意指令的两个操作对象的位数应当是一致的。


    3AAEDE6E-B7F7-4594-B1B1-67A4E73B374E.png
  2. 练习


    82DC3741-877D-46A5-A0D9-3FA75712EB7E.png

解:

D02F1D8F-0B02-44F3-9B5C-035190C340FD.png

mov ax,2
add ax,ax
add ax,ax
add ax,ax

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

  1. 8086 16位结构的CPU特性:
  1. 8086物理地址计算方法:
    8086CPU是16位结构但是有20位地址总线。所以内部使用了两个16位地址合成的方法来形成一个20位的物理地址。


    4C6D1A51-C33A-425B-8145-95A13B957071.png
    FB9A54E4-6CF6-4504-9C24-E24BA5B8C055.png
  2. “段地址16+偏移地址=物理地址”的本质含义:
    CPU在访问内存时,用一个基础地址(段地址
    16)和一个相对于基础地址的偏移地址相加,给出内存单元的物理地址。

  3. 段的概念:
    物理地址 = SA*16 + EA

  1. 练习


    149113B9-274F-44F5-8146-2A1CFDF8ED27.png

    解:
    (1)物理地址 = 0001H (SA) * 16 + EA
    EA 的取值范围为 0 - FFFF
    所以 CPU的寻址范围为: 0010H ~ 1000FH
    (2) 20000H = SA * 16 + EA (EA 为 0 ~ FFFFH)
    当 EA = FFFFH时最小,SA最小 1001H
    当 EA = 0时 SA最大 2000H

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

  3. CS && IP
    CS 为段寄存器, IP 为指令指针寄存器。
    在8086CPU中,任意时刻,假设CS中的内容为 M, IP中的内容为 N,则 8086CPU将从内存 M*16 + N 单元开始,读取一条指令并执行。也就是说 8086CPU 任意时刻,将 CS:IP内容当做指令执行。


    A2F5D123-0F17-448D-8650-00CDBEF39166.png

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

  1. 修改 CS,IP的指令:
  1. 代码段
    存放代码的内存区域,长度N<=64KB,起始地址为16倍数的连续地址段。
    想要执行这段代码,则需要将 CS:IP指向内存单元中的内容指令。

  2. 小结:

  1. 练习


    3AC24495-BFF5-43E7-B0B3-21F947E65026.png

    解:


    F6384F84-E824-4797-8B8E-9DAA36A94D32.png
上一篇 下一篇

猜你喜欢

热点阅读