当前位置:编程学习 > 汇编语言 >>

汇编语言程序1一直加到200

DATA SEGMENT SUM DB ? DATA ENDS CODE SEGMENT ASSUME DS:DATA,CS:CODE MOV AX,DATA MOV DS,AX MOV CX,200 MOV AX,0 START: ADD AX,CX DEC CX JGE START MOV SUM,AX MOV AH,4CH INT 21H CODE ENDS END START
补充:这里哪里出错了???
答案:SUM DB ?

     MOV SUM,AX
这是把16位数,存入到8位数的单元。
改成:
    SUM DW ?
试试看。
其他:DATA SEGMENT  
    SUM DW   0          ;1加到200超过255,要用字类型
DATA ENDS
 
CODE SEGMENT
             ASSUME DS:DATA,CS:CODE
PROC  FRA
              MOV AX,DATA
               MOV DS,AX 
  SUB1   PROC      
               MOV CX,200        ;cx当做循环控制计数器,后面不需要DEC CX
                MOV AX,1
START:  ADD SUM,CX     ;将和值保存在sum中
               INC    AX                ;AX+1
               LOOP     START    ;直接用loop循环指令,不用跳转那么麻烦
               MOV SUM,AX
        
              MOV AH,4CH
              INT 21H
ret
      SUB1 ENDP
        
CODE ENDS
    END START
仅供参考,你那么写可能也可以实现。最明显的错误就是sum db范围太小,而1加到200远远超过255. d START:  ADD AX,CX
        DEC CX
        JGE START
 把JGE 修改为LOOP  
JGE 的用法是  两数比较,前者大于等于后者则跳转。jump if greater or equal.
LOOP  检测CX的值  如果CX的值大于零 则跳转 否则顺序执行 
还有 SUM 的类型要定义成  字 DW 

上一个:汇编语言里面的内存管理和C语言里面怎么联系的。
下一个:汇编语言 跑马灯程序设计

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,