汇编语言程序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语言里面怎么联系的。
下一个:汇编语言 跑马灯程序设计