殇年已陌。 发表于 2011-4-7 11:55:57

详细求解实验9.2 帮下忙啦

额    实验9.2程序如下   (因为没办法截图 我就只能手打了)

assumecs:code
   code segment
   
   start:movax ,2000H
                movds ,ax
                movbx, 0                                                
            S:__________
               __________
               __________    ( 这里便是要填写的代码)
               __________
               jmpshorts
          OK:movdx,bx
                mov ax,4c00h
                int   21h
codeends
endstart                              

            好首先呢问题是补全程序,利用jcxz指令, 实现在内存2000H段中查找第一个值为0的字节,找到后,将它的偏移地址存储在dx中。


          答案如下:第一条:mov cl,
                                 第二条:mov ch,0
                                 第三条:jcxzok
                                 第四条:incbx
   我的理解是之所以将cl和ch归零 是因为能更好的让cx变成0那么下一条jcxzok   就是让cx为零时开始跳转到ok处   那么能解释下为什么最后要
把bx加1
       小弟在线等答案   有劳各位了{:3_46:}

故乡的风 发表于 2011-4-7 12:09:44

这位大哥,利用循环一个一个字节查找时,每次循环bx肯定要加1啊,不然怎么一个一个查找字符啊

wangzhiying 发表于 2011-4-7 12:16:15

inc bx是为了实现循环啊。
当cx等于0的时候。执行jcxz ok。跳过inc bx,执行ok处得代码。
当cx不为0的时候jcxz ok不跳转。然后执行bx+1,执行jmpshorts
跳转到S处执行。这就形成了循环查找DS:处得值是否为0,

wangzhiying 发表于 2011-4-7 12:17:18

你看代码。要把代码执行的顺序弄清楚。

殇年已陌。 发表于 2011-4-7 13:19:52

哦哦有劳了现在懂了
页: [1]
查看完整版本: 详细求解实验9.2 帮下忙啦