回 帖 发 新 帖 刷新版面

主题:[讨论]小弟编写的1+2+……+200的程序,为什么结果不对?

data1 segment
      dw ?
data1 ends

code1 segment
assume cs:code1,ds:data1

start: mov ax,data1
       mov ds,ax
       mov bx,1
       mov ax,1
again:.if bx<=200
       inc bx
      .endif
      add ax,bx
loop again
      mov ax,4c00h
      int 21h
code1 ends
      end start

觉得没什么问题啊,为什么最后AX=03DE,结果不对- -

哪位高手帮忙~~感激不尽~

回复列表 (共3个回复)

沙发


loop几次啊?cx的值不确定,感觉把again的那一部分改一下应该就行了

again:inc bx

       cmp bx,200

       ja over

       add ax,bx


       jmp again

over:mov ax,4c00h

      。。。

个人意见,仅供参考,如有错误,敬请见谅!

板凳

again: add ax,bx
      .if bx<=200
       inc bx
      .endif
     loop again
改成这样, 如何?我觉得可以!!

3 楼

mov cx,200
      mov ax,0
again:add ax,cx
loop again

这样也可以吧

我来回复

您尚未登录,请登录后再回复。点此登录或注册