刘策策 发表于 2016-11-14 12:46:46

几个问题,希望得到回复

本帖最后由 刘策策 于 2016-11-14 16:25 编辑

一:在某程序中,定义了262B的数据段data,那么程序载入内存,该段实际占用的内存空间是   B。
1、256
2、262
3、272
4、512
答案为啥是272,多出来的10B是啥

二:生成EXE之后用Debug加载后,查看寄存器内容如下:
ds=0b2d es=0b2d ss=0b3d cs=0b3e ip=0000
程序的起始地址的段地址是   。
1、0b3e               
2、0b2d               
3、0b3d               
4、0
答案是0b3d,书上说ds=0b2d,所以程序从0b3d开始,为啥??

三:(1)下列指令序列不能够实现把内存地址0:202h中的字节数据送入al功能的是   。

1mov ax,0
   mov ds,ax
   mov bx,202h
   mov al,

2mov ax,0
   mov ds,ax
   mov bx,200h
   mov al,

3mov ax,0
   mov ds,ax
   mov bp,202h
   mov al,

4 mov ax,0
   mov ds,ax
   mov bp,200h
   mov al,ds:
答案是3,想知道为啥是3, 我感觉都对着的

zealstar 发表于 2016-11-15 10:03:19

我也不太明白,先MARK一下吧,同求解答!

人造人 发表于 2016-11-15 12:37:17

三:(1)下列指令序列不能够实现把内存地址0:202h中的字节数据送入al功能的是   


调试到这里你明白问题了吧,其他的我就不帮你调试了,你自己调试吧,记住,一定要学会调试

代码农民 发表于 2016-11-15 12:55:37

一、选272的原因是256+16,因为段都是16的整数倍。

二、不知道..

三、各选项都是利用了寄存器相对寻址的方式,在没有段前超越的情况下,默认的是ss,其它的都是ds.

刘策策 发表于 2016-11-15 13:03:12

代码农民 发表于 2016-11-15 12:55
一、选272的原因是256+16,因为段都是16的整数倍。

二、不知道..


1,256也是16的整数倍啊,
3,照你这么说的话,那4也是错的了

刘策策 发表于 2016-11-15 13:05:13

人造人 发表于 2016-11-15 12:37
三:(1)下列指令序列不能够实现把内存地址0:202h中的字节数据送入al功能的是   




感觉调试了之后还是不太懂,能更详细点吗

代码农民 发表于 2016-11-15 13:07:39

刘策策 发表于 2016-11-15 13:03
1,256也是16的整数倍啊,
3,照你这么说的话,那4也是错的了

因为272是16倍数里面能容下所定义数据段的最小尺寸.....最省

刘策策 发表于 2016-11-15 13:11:41

代码农民 发表于 2016-11-15 13:07
因为272是16倍数里面能容下所定义数据段的最小尺寸.....最省

懂了懂了,从262B起,272B是16的最小整数集

代码农民 发表于 2016-11-15 13:13:00

刘策策 发表于 2016-11-15 13:11
懂了懂了,从262B起,272B是16的最小整数集

只是第二个我也不知道是为什么...

刘策策 发表于 2016-11-15 13:19:22

代码农民 发表于 2016-11-15 13:13
只是第二个我也不知道是为什么...

0b3dh-0b2dh=10h,也许和这有关系,但我也不太懂

人造人 发表于 2016-11-15 23:48:04

第2个看书
91页
4.9 程序执行过程的跟踪

刘策策 发表于 2016-11-17 13:15:57

人造人 发表于 2016-11-15 23:48
第2个看书
91页
4.9 程序执行过程的跟踪

ok.非常感谢

auyhin丶 发表于 2016-11-18 14:52:32

刘策策 发表于 2016-11-15 13:05
感觉调试了之后还是不太懂,能更详细点吗

SP BP的默认段地址是SS。
第三跟第四的差别就是前有没有加了DS:
页: [1]
查看完整版本: 几个问题,希望得到回复