8086cup给出物理地址

运算器一次最多可以处理16位的数据
寄存器最大宽度为16位
寄存器和运算器的通路为16位
8086是16位结构的cpu,也就是说8086内部,能一次性处理传输,占时储存的信息最大长度是16位,内存单元的地址在送上地址总线之前,必须在cpu中处理,传输,占时存放,对于16位cpu,能一次性处理,传输。占时存放16位的地址。

8086cuo有20位地址总线,cup采用一种用内部2个16位地址合成方法形成20位的物理地址


1:cup提供二个16位的地址,1个段地址,另一个偏移地址
2:段地址,偏移地址通过内部总线送入加法器
3:地址加法器将20个16位地址合成20位地址,送入输入输出控制电路
4:通过地址总线把20位地址送入存储器
地址加法器采用段地址*16+偏移地址的方法,合成物理地址,下图为工作过程:


1个数据的16进制形成左移1位,相当乘以16,1个数据的10进制左移1位,相当乘以10,1个x进制的数据向左移1位,相当乘以x。

在早期的处理器中,比如8086/8088,最大可寻址1M空间,及20位宽度,而cpu的寄存器仅是16位的,也就是说一个cpu寄存器仅能寻址64k,这就产生了矛盾。所以要用两个寄存器来表示地址,看下面的例子:  比如现在有这样一个问题,一个学校有50个班(1班,2班,...,50班),每个班有60名学生,怎么标记识别出每个学生呢?简单:把所有学生从1开始编号,到3000为止。每个号码代表一个学生即可,但是有这么一个问题,如果有一个电子显示牌用于老师点名,由于技术及成本原因,只能显示两位数字,并且最大数是60(00-60),那么怎么用显示牌标记出所有学生呢。比如第300号学生?答案就是做两个显示牌,第一个显示牌显示班级,第二个显示牌显示其在班级中的编号。    而每个学生的最终编号 = 班号*60 + 在班级的编号  这里学生的最终编号和内存地址是一样的,班号就是段寄存器,在班级的编号就是偏移地址。    实质就是16位cpu的内存地址线有20根,16<20所以地址要分两部分表示。32位cpu的地址线有32根,32=32只有一个寄存器就能全部表示内存地址,不存在分段问题。  现代cpu一般有多个模式,dos操作系统工作在实模式,不论cpu多先进和8086的区别只是速度快,但仅能使用1M内存(段地址+偏移地址),而windows工作在保护模式,能识别32位地址内存,又称为flat模式,不用分段。
 
 
cs,ip
cs(段地址)ip(偏移地址)。
修改cs,ip,使用jmp 2AE3:3 cs=2AE3H  ip=3H
jmp ax 等于mov ip,ax


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值