1.汇编基础(8086基础、通用寄存器、物理地址寻址、CS和IP)

一、8086CPU基础和通用寄存器

8086是一种16位的CPU,有20根地址线、16根数据线,最大寻址为1M,单次处理16位数据。

8086的通用寄存器:AX、BX、CX、DX
每个寄存器都是16位的,都可以当作两个8位寄存器使用。
注意: 两个十六位寄存器相加时,超出范围后只留存最后十六位的数据,超出部分有地方保存(目前还不知道在哪),八位寄存器相加相同,如下:

MOV AX,FFFFH
MOV BX,0008H
ADD AX,BX      # AX此后值为0007H

二、8086CPU给出物理地址的方法

1、8086是16位的CPU,所以内部单次处理、传输、暂存都是16位的数据,因此得到一个20位的地址需要用到两个16位的寄存器,然后根据一个加法器算出所需的20位的地址,具体地,物理地址=段地址*16+偏移地址,如下图。
在这里插入图片描述
2、段地址*16 为起始地址(基础地址),可以看成某个段的起始地址,再使用偏移地址来定位段中的某个内存单元。因为偏移地址是16位,因此一个段的长度最大为64KB。

3、一个内存单元中的地址可以被不同段地址和偏移地址寻址到,以下均表示21F60H地址:

段地址		偏移地址
2000H		1F60H
2100H		0F60H
21F0H		0060H
1F00H		2F60H

4、8086PC中,一般不用21F60H来描述一个地址,而是使用:
①数据在内存2000:1F60单元中
②数据在内存2000H段中的1F60H中

5、段寄存器有CS、DS、SS、ES.

三、CS和IP寄存器

1、 任意时刻CS:IP指向的内容当作指令执行。 CS为代码段寄存器,IP为指令指针寄存器。

2、 8086CPU加电启动或复位后CS:IP被设置成FFFF:0000,即8086启动时将从FFFF0H处读取指令开始执行。

3、8086CPU读取、执行一条指令的过程:
①CS、IP进入地址加法器,计算出下条指令的地址后,送到输入输出控制电路。
②输入输出控制电路将地址送上地址总线。
③从CS:IP地址读取指令,从数据总线进入CPU。
④输入输出控制电路把指令存入指令缓冲器。
⑤注意!!此时IP将根据读取指令的字节数自加N。
⑥执行指令缓冲器的指令。
⑦重复上述步骤,进入下一个指令周期。
在这里插入图片描述

4、修改CS、IP的指令:jmp指令
大部分寄存器可以用mov指令来修改其值,但是CS和IP指令不可以使用mov来修改。
jmp指令修改CS:IP的值:

jmp CS:IP
jmp 2AE3:3		#执行后CS=2AE3H,IP=0003H,CPU从2AE33H处开始读取执行
jmp 3:0B16		#执行后CS=0003H,IP=0B16H,CPU从00B46H处开始读取执行

jmp仅修改IP的内容:

jmp 某个合法寄存器(AX,BX,CX,DX)    
mov ax,1000H
jmp ax			#执行前ax=1000H,CS=2000H,IP=0003H
				#执行后ax=1000H,CS=2000H,IP=1000H
				#<==>有点类似于mov IP,ax
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值