P41
地址寄存器
段地址寄存器:偏移地址寄存器
8086CPU给了他20根地址线0000 0000 0000 0000 0000-111
地址线的数量决定了CPU的寻址能力
地址加法器
地址的计算方式
段地址16(10H)_偏移地址=物理地址
段地址16=基础地址
基础地址+偏移地址=物理地址
现在只能够通过2张只能够写3位数字的纸条告诉你怎么去图书馆
你将第一章纸条当中的数字*10+第二章纸条当中的数字=图书馆
200(段地址)*10=2000m(基础地址)
826
P42
p43-6.7-监测点-2.2
段地址为0001H仅仅通过变化偏移地址,CPU的寻址范围为——到——
段地址10H+偏移地址=物理地址
0001H10H
10H+(0-FFFFH)=物理地址
10H+0=10H
10H+FFFFH=1000FH
有一个数据存放在内存为20000H单元当中,现在给段地址为SA,如果想用偏移地址寻找到此单元,则SA应该满足的条件是最小为——最大——
提示,反过来思考一下,当段地址给多少的时候,Cpu无论怎们改变偏移地址都无法找到20000H
SA10H+(0-FFFFH)=20000H
20000H/10H=2000H,SA=2000H
2000H10H+0=20000H
SA10H+0=20000H
SA10H+FFFFH=20000H
SA*10H=10001H
10001H/10H=1000H
SA=1000H
1000H10H+FFFH=1FFFFH
这个是错误的
SA=1001H
1001H10H+FFFH=2000F
P44-6.8Cpu是怎么区分指令和数据的?
u指令:将某个内存地址开始的字节全部当作指令
d指令:将某个内存地址开始的字节全部当作数据
段地址寄存器和偏移地址寄存器
mov ax,0
IP寄存器和指令有关
8086CPU当中,在任一时刻,CPU将CS:IP所指向的内容全部当作指令来执行
在内存当中指令和数据都是没有区别的,都是二进制的信息,CPU在工作的时候,才将有的信息当作指令
有的信息当作数据,CPU根据什么将内容当中的信息当中指令的话,CPU将CS:IP指向的内存单元当中的内容当作指令
1,使用debug,将上面的程序段写入内存,逐条执行,观察每条指令执行后,CPU中相关寄存器中内容的变化
可以使用 e 指令 和 a 指令修改
P45-小实验
CPU如何区分指令和数据
机器码 汇编指令
b8 20 4e mov ax,4E20H
05 16 14 add ax,1416H
bb 00 20 mov bx,2000H
01 d8 add ax,bx
89 c3 mov bx,ax
01 d8 add ax,bx
b8 1a 00 mov ax,001AH
bb 26 00 mov bx,0026H
00 d8 add al,bl
00 dc add ah,bl
00 c7 add bh,al
b4 00 mov ah,0
00 d8 add al,bl
04 9c add al,9C
将以上的机器码用e指令输入到2000:0这个位置
都是内存,翻译成汇编指令,被当作指令来hi用
指令和数据在内存当中没有区别
CPU和CS的段地址寄存器和IP这个偏移地址寄存器组合的时候从中读取内容,读取出来的内容当作指令来执行数据
CS IP决定了CPU从哪里开始读取指令