老师 发表于 2014-1-17 20:12:07

关于汇编段地址的问题

今天看了汇编语言的2.2的作业,在下有几个小问题不明白,请大侠们指教谢谢!!

1) (给定段地址为0001H,仅通过变化偏移地址寻址,CPU的寻址范围为 0010H 到 1000FH 。 解题过程:物理地址=SA*16+EA    EA的变化范围为0h~ffffh    物理地址范围为(SA*16+0h)~(SA*16+ffffh)    现在SA=0001h,那么寻址范围为    (0001h*16+0h)~(0001h*16+ffffh)    =0010h~1000fh(2) 有一数据存放在内存20000H单元中,现给定段地址为SA,若想用偏移地址寻到此单元。则SA应满足的条件是:最小为 1001H ,最大为 2000H 。 当段地址给定为 1001H 以下和 2000H 以上,CPU无论怎么变化偏移地址都无法寻到20000H单元。 解题过程:物理地址=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为最大值 (1)这里的0001H 是什么意思呢,不管是哪个进制数前面的0应该可以省略吧。还有这里,(0001h*16+0h)~(0001h*16+ffffh)    =0010h~1000fh在怎么样1X16都不会=10吧,这是怎么算的呢? (2)SA=(20000h-EA)/16=2000h-EA/16    这里的后面括号去了的话16应该都要除进去的吧,就是2000H/16-EA/16,就这样才能让等式成立吧?就上面这些问题了,希望大家帮我谢谢,请尽量详细点谢谢

小甲鱼 发表于 2014-1-18 09:33:13

(1)-1,对的,0001H是1H的意思,字面描述的话前边的0可以省略,但在内存或硬盘的存储中,由于数据位“要么存储0要么存储1”,所以会存储0。

(1)-2, 0001h * 16 是 1h(十六进制) * 16(十进制)== 1h * 10h == 10h

(2)同(1)-2,20000h / 16 == 20000h / 10h == 2000h

老师 发表于 2014-1-19 15:04:08

好的谢谢,原来要把16转化成10H啊,之前在视频里没说,我觉得小甲鱼的视频在某些地方还是不够仔细的谢谢

星空左岸 发表于 2014-1-19 18:59:12

开始我也蛋疼这里,后面发现X16的16是十进制的,要转成十六进制就是10

zhaopengfei 发表于 2014-1-28 17:47:26

是自己不够仔细而已。

lms99251 发表于 2014-1-28 17:53:54

主意十六进制的H,十进制后面是没有的

HB无影 发表于 2014-2-25 17:51:04

段地址X16中的16是10进制,换位16进制就是10了!
页: [1]
查看完整版本: 关于汇编段地址的问题