这里的夜悄悄 发表于 2011-12-8 00:41:52

第六章第六题答案!大家帮忙看看,为甚最后两次循环过不去啊??

assume cs:code,ds:a,ss:b

a segment
      dw 1,2,3,4,5,6,7,8,9,0ah,0bh,0ch,0dh,0eh,0fh,0ffh
a ends

b segment
      dw 0,0,0,0,0,0,0,0
b ends

code segment

start:
                mov ax,a
                mov ds,ax
                mov bx,0h
          
                mov ax,b
      mov ss,ax
      mov sp,10h

      mov cx,8
      s:
      push ds:
      add bx,2

      loop s
               
                mov ax,4c00h
                int 21h
               
code ends
end start

zzmatrix 发表于 2011-12-8 00:52:00

把栈设置多些。

zzmatrix 发表于 2011-12-8 01:02:27

调试t单步走会有问题,但不是所有的机器都会有。

这里的夜悄悄 发表于 2011-12-8 09:59:38

和机器有关系啊!!!
栈设大了就不在b的范围内了啊?

后知淡然 发表于 2011-12-8 10:40:23

本帖最后由 Sabo 于 2011-12-8 10:42 编辑

a segment
      dw 1,2,3,4,5,6,7,8,9,0ah,0bh,0ch,0dh,0eh,0fh,0ffh
a ends

b segment
      dw 0,0,0,0,0,0,0,0
b ends你cx设置为8,a处只循环8次,9到0ffh的数据都没有用。
如果要把a全部放入b,b的空间应该大于等于a的空间。
不过你写的不会影响到循环的问题,因为栈够放下8次的循环。
下面看下内存的对比。就知道循环是否完成!
设置完ds.ss后


执行完循环后

这里的夜悄悄 发表于 2011-12-8 22:40:25

对啊!谢谢你!!
思路对了最重要!!!呵呵

幸福你懂得_し゛ 发表于 2011-12-10 10:43:57

看了看,程序是没问题的,亲
页: [1]
查看完整版本: 第六章第六题答案!大家帮忙看看,为甚最后两次循环过不去啊??