|
主题 : : 第二章检测点 望大家帮忙指错! [待解决] |
回复[ 13次 ]
点击[ 476次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2009-08-08 13:26 ]
[引用]
[回复]
[ top ] | |
荣誉值:4
信誉值:2
注册日期:2009-08-02 21:21 |
1000:0 mov ax,8
1000:3 jmp ax
1000:5 mov ax,0
1000:8 mov bx,ax
1000:a jmp bx
CPU从1000:0处开始执行指令当执行完1000:a处的指令后CPU几次修改IP_____。
1、 4
2、 5
3、 6
4、 7
这题我是选4(7次)
mov ax,936aH
mov bx,79b8H
add ax,bx
指令执行后AX中的数据是:____
1、 1c22H
2、 0c22H
3、 0d22H
4、 1d22H
这题我是选4(1d22H )
下列说法中正确的是:____
1、 8086CPU采用“段地址*16+偏移地址=物理地址”的寻址模式,所以内存是由一个一个的段组成,每一个段有一个段地址。
2、 物理地址为ffff0H的内存单元的偏移地址可能为ffffH。
3、 一个段的大小可以是8Byte。
4、 在一段没有任何跳转指令的程序中,超出64K的部分将不会被执行
这题我是选3
下列地址信息与0020H:03EFH确定的内存地址不同的是_____。
1、 5EFH
2、 203H:00EFH
3、 005EH:000FH
4、 0002H:05CFH
这题我是选2
结果只对了两题,都不知道错了哪里 | | |
|
|
|
|
[第1楼]
[ 回复时间:2009-08-08 16:17 ]
[引用]
[回复]
[ top ] | |
荣誉值:24
信誉值:0
注册日期:2009-07-21 14:42 |
你最好写出你的思想啊。比如第一题7次分别都是哪7次
第一题,我选6次
第二题,0D22选3(你选4个原因是什么呢?)
第三题,我选4.
第四题,我选2,(和你一样) | | |
|
|
|
|
[第2楼]
[ 回复时间:2009-08-08 16:23 ]
[引用]
[回复]
[ top ] | |
荣誉值:24
信誉值:0
注册日期:2009-07-21 14:42 |
1000:0 mov ax,8 1次修改
1000:3 jmp ax 2次修改,3次修改
1000:5 mov ax,0
1000:8 mov bx,ax 4次修改
1000:a jmp bx 5次修改,6次修改 | | |
|
|
|
|
[第3楼]
[ 回复时间:2009-08-08 16:24 ]
[引用]
[回复]
[ top ] | |
荣誉值:24
信誉值:0
注册日期:2009-07-21 14:42 |
第二题,就是简单的两个数字相加,用计算机就可以算出来是10D22 1超出了限度所以暂时扔掉 就是0D22 | | |
|
|
|
|
[第4楼]
[ 回复时间:2009-08-08 16:25 ]
[引用]
[回复]
[ top ] | |
荣誉值:24
信誉值:0
注册日期:2009-07-21 14:42 |
第3题,我是用DEBUG测试的,超过了64K的程序,执行到64K以外DEBUG就自动关闭了,貌似是崩溃了。所以不能执行 | | |
|
|
|
|
[第5楼]
[ 回复时间:2009-08-08 16:26 ]
[引用]
[回复]
[ top ] | |
荣誉值:24
信誉值:0
注册日期:2009-07-21 14:42 |
|
|
|
|
|
[第6楼]
[ 回复时间:2009-08-08 16:35 ]
[引用]
[回复]
[ top ] | |
荣誉值:24
信誉值:0
注册日期:2009-07-21 14:42 |
|
|
|
|
|
[第7楼]
[ 回复时间:2009-08-08 16:56 ]
[引用]
[回复]
[ top ] | |
荣誉值:4
信誉值:2
注册日期:2009-08-02 21:21 |
1000:0 mov ax,8
1000:3 jmp ax
1000:5 mov ax,0
1000:8 mov bx,ax
1000:a jmp bx
CPU从1000:0处开始执行指令当执行完1000:a处的指令后CPU几次修改IP_____。
1、 4
2、 5
3、 6
4、 7
我是这样算的:
1000:0 mov ax,8 第1次修改
1000:3 jmp ax 第2次修改,第3次修改
1000:5 mov ax,0 第4次修改
1000:8 mov bx,ax 第5次修改
1000:a jmp bx 第6次修改,第7次修改 | | |
|
|
|
|
[第8楼]
[ 回复时间:2009-08-08 16:59 ]
[引用]
[回复]
[ top ] | |
荣誉值:4
信誉值:2
注册日期:2009-08-02 21:21 |
第二题,就是简单的两个数字相加,用计算机就可以算出来是10D22 1超出了限度所以暂时扔掉 就是0D22,我没看清楚,忽略了AX是16位,而结果数据是20位。 | | |
|
|
|
|
[第9楼]
[ 回复时间:2009-08-08 17:34 ]
[引用]
[回复]
[ top ] | |
荣誉值:4
信誉值:2
注册日期:2009-08-02 21:21 |
第三题:
1、 8086CPU采用“段地址*16+偏移地址=物理地址”的寻址模式,所以内存是由一个一个的段组成,每一个段有一个段地址。
(这个肯定是错。内存没分段。)
2、物理地址为ffff0H的内存单元的偏移地址可能为ffffH。
(设基地址为SA,则SA+FFFFH=FFFF0H ,SA= EFFF1H , 段地址*16= EFFF1H , 段地址 = EFF1H,计算没错的话就对了)
3、 一个段的大小可以是8Byte。
(段地址是CPU对 所有内存单元的 物理地址 进行 分段分组 划分 后得到的 内存单元群 的特殊地址编号,
所以一个段的内存可以是很大或者很小的。)
4、 在一段没有任何跳转指令的程序中,超出64K的部分将不会被执行
(我还不会用debug,你试过了就在这算它是对的)
变成2,3,4选项都是对的..... | | |
|
|
|
|
[第10楼]
[ 回复时间:2009-08-08 18:54 ]
[引用]
[回复]
[ top ] | |
荣誉值:24
信誉值:0
注册日期:2009-07-21 14:42 |
TO 7楼
1000:0 mov ax,8 第1次修改
1000:3 jmp ax 第2次修改,第3次修改
///////////////////////////////////////
1000:5 mov ax,0 第4次修改 (这句由于上句的跳转,所以没有被执行,所以没有修改IP所以这次不算)
/////////////////////////////////////
1000:8 mov bx,ax 第5次修改
1000:a jmp bx 第6次修改,第7次修改 | | |
|
|
|
|
[第11楼]
[ 回复时间:2009-08-08 19:13 ]
[引用]
[回复]
[ top ] | |
荣誉值:24
信誉值:0
注册日期:2009-07-21 14:42 |
1、 8086CPU采用“段地址*16+偏移地址=物理地址”的寻址模式,所以内存是由一个一个的段组成,每一个段有一个段地址。
// 第一个公认是错误的不说了。
2、 物理地址为ffff0H的内存单元的偏移地址可能为ffffH。
//这个你的算法有问题。
//FFFF0H-FFFFH=EFFF1H
//这个EFFF1H必须能被16整除才可以,也就是说结尾必须是0,这个EFFF1H不能被16整除,所以不合理。
// X*16=EFFF1H X=61439.0625 X不是整数,所以不合法。
3、 一个段的大小可以是8Byte。
//一个段不是可以很大,也不是可以很小,书的第24页明确说明,一个段的最大程度为64K。
//至于最小是多少呢?还要考虑考虑,我认为,既然段的起始地址必须是16的倍数,那么最小的段应该是16Byte
4、 在一段没有任何跳转指令的程序中,超出64K的部分将不会被执行
//根据书上的内容,一个段的最大程度为64K。我经过测试,超过段后再执行,就会又回到段首地址去执行,这也是用DEBUG出错的原因。 | | |
|
|
|
|
[第12楼]
[ 回复时间:2009-08-08 20:38 ]
[引用]
[回复]
[ top ] | |
荣誉值:4
信誉值:2
注册日期:2009-08-02 21:21 |
to 10楼。
1000:3 jmp ax 第2次修改,第3次修
1000:5 mov ax,0 第4次修改 (这句由于上句的跳转,所以没有被执行,所以没有修改IP所以这次不算)
你意思是遇到这种 mov ax,0 的情况,IP都不会改变啊? 和上句的 JMP AX 有啥关系啊?
书上说 在CPU执行程序时,IP会变成:IP原值+下一段要读取的指令的长度
那么 在执行MOV ax ,0后,ip应该会改变指向下一条指令啊。
你说的不执行是什么原因呢?
请详解~~ | | |
|
|
|
|
[第13楼]
[ 回复时间:2009-08-08 23:21 ]
[引用]
[回复]
[ top ] | |
荣誉值:24
信誉值:0
注册日期:2009-07-21 14:42 |
TO 12楼
1000:0 mov ax,8 第1次修改 //AX=8
1000:3 jmp ax 第2次修改,第3次修改 //这句的意思是IP改成0008,
1000:5 mov ax,0 没有修改 //因为上句IP改成0008了,因此程序被跳转到1000:8处执行,这句没有被执行
1000:8 mov bx,ax 第4次修改 //BX被修改成AX的数值这里BX为8
1000:a jmp bx 第5次修改,第6次修改 //这里IP又被改成8了,跳转到1000:8处执行,
//
以后就一直在1000:8和1000:a处无限循环,由于这就是个测试题,不考虑死循环,所以程序到这里结束。 | | |