汇编语言第二版笔记自用【第二章】

汇编语言

第二章 寄存器

  • 一个典型的CPU由运算器、控制器、寄存器等器件构成,它们靠内部总线相连
  • 内部总线实现CPU内部各个器件之间的联系,外部总线实现CPU和主板上其他器件的联系
  • CPU中,运算器进行信息处理,寄存器进行信息存储、控制器控制各种器件进行工作、内部总线连接各个器件,在它们之间进行数据的传送
  • 8086有14个寄存器:AX、BX、CX、DX、SI、DI、SP、BP、IP、CS、SS、DS、ES、PWS

2.1 通用寄存器

  • 8086所有寄存器都是16位的,AX、BX、CX、DX通常用来存放一般性的数据,称为通用寄存器
  • 为了兼容上一代 8位寄存器,上述通用寄存器可分为两个独立的8位寄存器使用,分别是高八位寄存器(如AH),低八位寄存器(如AL)

2.2 字在寄存器中的存储

  • 8086CPU可以一次性处理以下两种尺寸的数据
    • 字节:记为byte,8位
    • 字:记为word,两个字节
  • 进制区分:十六进制数后加H,二进制数后加B,十进制数后什么都不加

2.3 几条汇编指令

  • mov ax,18 将18送入寄存器AX

  • mov ax,bx 将寄存器BX中的数据送入寄存器AX

  • add ax,8 将寄存器AX中的数值加上8

  • add ax,bx 将AX和BX中的数值相加,结果存在AX中

  • 写汇编指令或寄存器的名称时不区分大小写

  • 在进行数据传送或运算时,要注意指令的两个操作对象位数应当是一致的

2.4 物理地址

  • 每个内存单元在内存空间中都有唯一的地址,称为物理地址

2.5 16位结构的CPU

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

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

  • 8086CPU有20位地址总线,但是它是十六位结构,所以采用在内部通过地址加法器采用物理地址=段地址*16+偏移地址的方法合成20位的物理地址

比如8086CPU要访问地址为123C8H的内存单元,十六位段地址为1230H,偏移地址为00C8H,1230H*16=12300H,加上00C8H,得到123C8H。

2.8 段的概念

  • 一个段的起始地址一定是16的倍数,因为段地址X16必然是16的倍数
  • 偏移地址为16位,16位地址的寻址能力为64kb,所以一个段的长度最大为64KB

2.9 段寄存器

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

2.10 CS和IP

  • CS和IP指示了CPU当前要读取指令的地址。CS为代码段寄存器,存储段地址;IP为指令指针寄存器,存储偏移地址。任意时刻,CPU将CS:IP指向的内容当作指令执行
  • 8086CPU的工作过程如下
    • 从CS:IP指向的内存单元读取指令,读取的指令进入指令缓冲器
    • IP=IP+所读取指令的长度,从而指向下一条指令
    • 执行指令,转到步骤1继续这个过程

2.11 修改CS、IP的指令

  • 我们可以通过 mov ax,2来修改ax的值,但是mov指令不能用于设置CX和IP的值,可以使用jmp来修改CS和IP的值

    • 同时修改CS和IP的内容

    Jmp 段地址:偏移地址。例如jmp 2AE3:3 执行后CS=2A3EH,IP=0003H,CPU将从2AE33H处读取指令

    • 仅修改IP的内容

    Jmp 某一合法寄存器。例如jmp ax,执行前ax=1000H,cs=2000H,ip=0003H,执行后ax=2000H,cs=2000H,ip=1000H

debug 工具自取https://download.csdn.net/download/weixin_45080573/76754300

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值