关于汇编段地址的问题
今天看了汇编语言的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,就这样才能让等式成立吧?就上面这些问题了,希望大家帮我谢谢,请尽量详细点谢谢 (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 好的谢谢,原来要把16转化成10H啊,之前在视频里没说,我觉得小甲鱼的视频在某些地方还是不够仔细的谢谢 开始我也蛋疼这里,后面发现X16的16是十进制的,要转成十六进制就是10 是自己不够仔细而已。 主意十六进制的H,十进制后面是没有的 段地址X16中的16是10进制,换位16进制就是10了!
页:
[1]