- [游客] 表示每次运行到cx=2的时候就不能再往下一步进行了! 谁能告诉我是哪里的问题? 06/11 23:38
- [游客] 这是C下的么?main中的 int c[]={6,7,8,9} ; int *p = c; 08/06 15:33
- [游客] 实现队列?呵呵,以前学C的时候也弄过队,循环队列等东西,锻炼了很多思维逻辑上的东西。 博主可以自己 08/06 15:30
- [maxm] 这实验没难度,关键是细心 几个易出错的地儿我都在注释中做了标记 希望大家别跟我一样犯糊涂 (*^ 06/04 20:58
- [maxm] 感谢fangyugirl分享心得 05/08 18:47
- [fangyugirl] 看到你说你在这章徘徊了两周,我跟你差不多的。我是做BIOS的,上班时没有事情了就看书,做课程设计一时 04/23 13:44
- [maxm] 哎,没有自己电脑。 03/19 20:57
- [游客] 然后继续编程 呵呵 03/18 20:56
- [游客] 我被卡在这一章了,就因为这个实验。 03/18 15:31
- [maxm] 最后加了点注释,程序改动如下: ;------------------------------ 03/13 15:52
[2009-02-23 16:09] 第9章 问题多多^_^
s: mov ax,bx
loop s
以上指令序列执行后mov ax,bx被执行了多少次_____。
1、 0
2、 256
3、 65535
4、 65536
4.mov ax,2
mov cx,3
s: add ax,2
s1:loop s
mov di,offset s1
mov si,offset s3
mov ax,cs:[di]
mov cs:[si],ax
mov ax,1
mov cx,3
s2: add ax,2
s3: nop
nop
所有指令执行完后ax的值为_____。
1、 15
2、 7
3、 11
4、 3
------------------------------------------------------
错了2道,分析一下,真汗 :
3. 考察2点 (1)loop 标号 的含义 (2)cx是16位的 。这2点理解了不难选出正确答案: 65536 ,因为cx的变化轨迹为0~--> -32768 --> 32767 --> 0
4.关键: 拷贝的是 loop s 的机器码(E2FB),loop指令的机器码中 FB 是转移的位移(==标号处的ip值 - 当前ip值),而非loop s 指令本身,这点明白了,就很容易选出正确答案为 (ax)==7 ,
太粗心了, 请各位指点
[ maxm 发表于 2009-02-23 16:43 ]
如分析有误,请各位指点。
[ maxm 发表于 2009-02-23 17:18 ]
盯了半天还有一道也错了,超汗 !
---------------------------------------------
下列能够改变CS:IP所指位置并能通过编译的指令是___。 4
1、 jmp short [bx]
2、 jne [bx]
3、 loop byte ptr [bx]
4、 jmp [bx]
关键:[bx] (即ds:[bx]) 里面存放的是标号的值 !!!比如 jmp short [bx] ,假设此时 [bx] not in (-128 ~ 127), 那肯定是要错的 ,其他2和3同样的道理 。4 嘛,是啊 4,怎么解释 ?
[ maxm 发表于 2009-02-23 17:28 ]
首先4 编译通过 ,既然编译通过就简单了,编了一段小程序,debug了一下 :
---------------------------------------------
AX=0BF6 BX=0000 CX=000F DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=0BF6 ES=0BE6 SS=0BF6 CS=0BF6 IP=0008 NV UP EI PL NZ NA PO NC
0BF6:0008 FF27 JMP [BX] DS:0000=F6B8
-t
AX=0BF6 BX=0000 CX=000F DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=0BF6 ES=0BE6 SS=0BF6 CS=0BF6 IP=F6B8 NV UP EI PL NZ NA PO NC
0BF6:F6B8 F60082 TEST BYTE PTR [BX+SI],82 DS:0000=B8
-q
F:\masm5>
--------------------------------------------
可见(ip) 变成了f6b8 说明指令:jmp 内存单元 中 ,默认 内存单元是一个字。 也不用查书了 ^_^
[ starrynight 发表于 2009-02-24 11:45 ]
4.关键一点 拷贝的是 loop s 的机器码,而非loop s 指令本身,这点明白了,就很容易选出正确答案为 (ax)=7
此题答案为 2 。
[ 游客 发表于 2009-02-24 15:39 ]
感谢楼上 ^_^ 改过来了。
[ maxm 发表于 2009-02-24 15:55 ]
第4道检测题,让我彻底整明白了补码的减法 的含义:'减去一个数' refers to '加上 模 - 该数的绝对值'。
[ kelithb 发表于 2009-02-25 10:43 ]
受益匪浅!