xiaosawanjava 发表于 2014-5-1 15:18:40

【王爽-汇编语言】第二章 监测点2.2


1. 从物理地址1H*16+0到1H*16+FFFFH也就是 10H 到 1000FH 。

2. 物理地址等于 段地址*16+偏移地址,现在物理地址是20000H,如果段地址要最小,那偏移地址就要为最大FFFFH,20000H-FFFFH=10001H ,此时的10001H是通过段地址*16得到的,也就是左移一位,但是我们拿10001H除以16H话,那不就是成了1000.1H了,当然这是不允许的,所以我们就要像要怎样才能满足 段地址为最小的呢,因为段地址都是16的倍数,如果我们吧段地址取 1000的话,这样虽然去了小数,但是 1000*16+FFFF 可寻址不到20000F这么大的地址,所以我们只能把向上加1变成1001H,所以段地址最小为1001H。段地址取最大的话,那就简单了,字节就是 20000-0/16(这里都是16进制) = 2000,所以段地址最大为2000H

a280153458 发表于 2015-1-24 23:42:07

物理地址=段地址*16+偏移地址
20000H=SA*16+偏移地址
由于16为十进制,转换为十六进制=10H
最小偏移地址=0H
最大偏移地址=FFFFH
最小SA=(20000H-FFFFH)/10H=20000H/10H-FFFFH/10H=2000H-FFFH=1001H
最大SA=(20000H-0H)/10H=20000H/10H-0H/10H=2000H-0H=2000H

当SA<1001或 SA>2000时 CPU无法寻到20000H

请教一个问题:0001H*16+FFFF怎么=1000F

不是0001H*10H+FFFF=F吗?

KTMONREK 发表于 2015-4-3 07:51:45

物理地址=SA*16+EA   
20000h=SA*16+EA   
SA=(20000h-EA)/16=2000h-EA/16   
EA取最大值时,SA=2000h-ffffh/16=1001h,SA为最小值   
EA取最小值时,SA=2000h-0h/16=2000h,SA为最大值 
 
这里的ffffH/16=fffh是通过WIN自带计算器算的
按位移来算确实应该为fff.fh,这里小数点后的f应该是省略了
单就除法来说,应有商和余数,但此题要求的是地址最大和最小,所以余数忽略了
 
如果根据位移的算法(段地址*16=16进制左移一位),小数点后应该是不能省略的
我们可以反过来再思考下,如果SA为1000h的话,小数点后省略
SA=1000h,EA取最大ffffh,物理地址为1ffffh,将无法寻到20000H单元

保证不打死你 发表于 2015-8-31 00:10:15

还是没明白,继续去看看视频来。

zhang99844 发表于 2015-8-31 10:22:15

好好学习

xkwyas 发表于 2015-10-20 15:25:44

SA=2000h-ffffh/16=1001h

xkwyas 发表于 2015-10-20 15:26:50

SA=2000h-0h/16=2000h   SA=2000h-ffffh/16=1001h   这个要先转成10进制的把 除了以后再转16进制 我是这么算出来的

xkwyas 发表于 2015-10-20 15:36:24

最小SA=(20000H-FFFFH)/10H=20000H/10H-FFFFH/10H=2000H-FFFH=1001H   这里后面怎么成三个FFF了 20000H/10后—FFFFH 怎么成三个FFF了 ??

chengzhi 发表于 2015-10-31 20:28:33

a280153458 发表于 2015-1-24 23:42
物理地址=段地址*16+偏移地址
20000H=SA*16+偏移地址
由于16为十进制,转换为十六进制=10H


为啥会等于F:shock:?自己手算和计算器算都不是F,是不是计算方法不对:smile

amulet 发表于 2015-10-31 20:44:23

太难了 真的要好好看视频

dps521 发表于 2015-11-28 15:33:14

:smile:smile:smile:smile:smile

anaf 发表于 2016-4-21 20:08:46

视频为都反复看了5编译上了。。。=以上了。。 还是不懂

xiehaofeng 发表于 2018-3-15 20:44:38

xkwyas 发表于 2015-10-20 15:36
最小SA=(20000H-FFFFH)/10H=20000H/10H-FFFFH/10H=2000H-FFFH=1001H   这里后面怎么成三个FFF了 20000H/10 ...

SA=2000H-FFFFH/16
   =2000H-65535/16   (将16进制数FFFF转化为十进制数65535)
   =2000H-4095      (将十进制数4095转化为16进制数FFF)
   =2000H-FFFH      (用计算器计算得出1001H)
   =1001H

ljjliujunjie123 发表于 2020-9-11 21:27:13

xiehaofeng 发表于 2018-3-15 20:44
SA=2000H-FFFFH/16
   =2000H-65535/16   (将16进制数FFFF转化为十进制数65535)
   =2000H-4095      ...

65535/16在十进制下也不会是4095的,只看末尾数字,16的6乘上4095的5不可能是65535的5,所以计算器再这里还是省略了余数的

W_H_I 发表于 2020-9-15 15:22:49

xiehaofeng 发表于 2018-3-15 20:44
SA=2000H-FFFFH/16
   =2000H-65535/16   (将16进制数FFFF转化为十进制数65535)
   =2000H-4095      ...

瞎扯淡,你自己把这个结果反着加回去试试,看看是不是最终物理地址等于20000H,谁告诉你段地址x16+偏移地址可以直接用数学公式代入?直接反着来就成为了物理地址-偏移地址除以16了?这特么不是瞎指挥是啥?再起码也应该是SA=(20000H-IP)/16吧?你数学是真特么好
页: [1]
查看完整版本: 【王爽-汇编语言】第二章 监测点2.2