. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->数据处理的两个基本问题
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  8086CPU能处理多大尺寸的数据?  [待解决] 回复[ 1次 ]   点击[ 254次 ]  
amelie
[帖 主]   [ 发表时间:2018-06-01 10:37 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2018-05-30 17:52
书上说只能处理byte和word尺寸的数据

但是为什么div除法指令可以操作32位数据呢?
chengshan
[第1楼]   [ 回复时间:2018-07-12 18:20 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2016-03-27 21:52
div除法指令 不也是将32位的数放在两个16位的寄存器 dx,ax里面吗?8086CPU的三种总线都是16条,一次能处理的数据最大就是16位,最小就是16个0,最大就是16个1,多的位它不认识。如果它能处理32位的数据,那么它寻址的时候为什么还要采用段地址加偏移的方式去寻址,而不是直接寻址呢?用32位去寻址的话可是能寻址4GB的空间。比如说解决除法溢出的那个程序,如果一个32位的整数除以一个16位的整数,其结果最大值就是那个32位数本身,如果8086能识别32位的数,那还谈什么除法溢出呢?但是你用解决除法溢出的程序去处理,就算得到的结果是32位数本身,它也不会溢出,因为结果也是用两个16位的寄存器来存放的。至于div除法指令除数是16位则被除数是32位,是汇编语言除法运算的要求。不满足这个要求就会出错。和8086CPU能处理多大尺寸的数据没有一点关系,8086CPU能处理的最大尺寸的数据是由它有多少条总线决定的。个人见解。
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved