汇编语言第二章

寄存器

	CPU由运算器、控制器、寄存器等器件构成,这些器件靠内部总线相连。
	8086所有寄存器都是16位的,可以存放两个字节。AX、BX、CX、DX被称为通用寄存器,存放一般数据。

字与字节

字节:记为byte,一个字节由8个bit组成
字: 记为word,由两个字节组成,高位字节和低位字节

几条汇编指令

在这里插入图片描述

物理地址

CPU访问内存单元时候,需要给出内存单元的地址。所有内存单元构成的存储空间是一个唯一的,所以每个内存单元都有唯一地址。

16位结构的CPU

  • 运算一次最多可以处理16位的数据
  • 寄存器的最大宽度为16位
  • 寄存器与运算器之间的通路为16位

20位物理地址给出方法

在这里插入图片描述
地址加法器采用物理地址 = 段地址*16+偏移地址的方法(左移四位)

获取20位物理地址的本质

CPU访问内存时候,是一个基地址(段地址*16)+ 偏移地址的寻址模式,段地址像是楼层,偏移地址像是房间号码,需要将两部分相加

段的概念

内存本身是没有段的概念,是一段连续的地址,是因为CPU16位的段地址方式才人为的认为是分成一段一段的存储单元。注意:

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

段寄存器

段地址在8086的段寄存器中存放,8086有四个段地址:CS 、DS、SS、ES

CS和IP

CS:代码段寄存器
IP:指针指令寄存器
执行指令的工作原理

  1. CS是2000H,IP是0000H
  2. 内存20000H~20009H单元存放着可执行的机器码
  3. 对应右边指令:
    • mov ax, 0123H(3 byte):
    • mov bx,0003H
    • mov ax,bx(2 byte)
    • add ax,bx

初始地址20000H通过输入输出电路送上地址总线,机器指令B8 23 01(mov ax, 0123H)通过数据总线被送入指令缓冲器,IP自动增加,读了三个字节所以+3

初始 CS为FFFFH、 IP为0000H、第一条指令是FFFF0H

修改CS 、 IP的指令

mov指令被称为传送指令,可以修改寄存器的值,但是mov不能用于设置CS:IP的值
jmp指令:jmp 段地址:偏移地址
例如:
在这里插入图片描述
修改IP:“ jump 某一合法寄存器”
例如:在这里插入图片描述

代码段

mov ax,0000 (B8 00 00)
add ax, 0123H(05 23 01)
mov bx,ax(8B D8)
jmp bx (FF E3)
这是存放在123B0H-123B9H的一组内存单元中,如果想要代码被执行,CS必须要是123BH、IP=0000H

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值