用程序如何计算1+2+ … +100的累加和
此程序为计算1+2+ … +100的累加和,并以十进制格式显示输出计算结果。通过对本例的学习,我们应该知道如何在屏幕上显示输出一个无符号的十进制数据,并进一步熟悉汇编语言中循环程序及子程序的设计方法。 源程序: DATA SEGMENT CTAB DW 10000,1000,100,10,1 NUMB DW 5,4,3,2,1 ;相应需要除的次数 DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA START: MOV AX,DATA MOV DS,AX MOV AX,0 ;累加器清0 MOV CX,100 ;循环次数 LOP1: ADD AX,CX ;累加,和保存在AX中 LOOP LOP1 ;LOOP LOP1 这条循环指令可更改为以下两条指令的组合: ;DEC CX ;JNZ LOP1 CALL OUTD ;以十进制格式显示输出计算结果 MOV AH,4CH INT 21H ;十进制格式显示输出子程序,入口参数在AX中(无符号数) OUTD PROC AND AX,AX ;二进制数0? JNZ OUT1 ;不为0转移 MOV DL,30H CALL DISP ;调用显示字符子程序,显示0后返回 RET OUT1: PUSH CX MOV SI,0 OUT2: CMP AX,CTAB[SI] ;分别与除数10000,1000…比较 JAE NEXT ;高于等于转移 ADD SI,2 ;指向下一个档次的除数 JMP OUT2 NEXT: MOV CX,NUMB[SI] ;相应需要除的次数 OUT3: XOR DX,DX ;被除数扩展到32位 DIV CTAB[SI] ;商在AX中,余数在DX中 XCHG DX,AX ;余数送AX,作下一次的被除数 ADD DL,30H CALL DISP ;调用显示字符子程序 ADD SI,2 ;指向下一个档次的除数 LOOP OUT3 POP CX RET OUTD ENDP ;显示字符子程序,入口参数在DL DISP PROC PUSH AX MOV AH,02H INT 21H POP AX RET DISP ENDP CODE ENDS END START 用程序如何计算1+2+ … +100的累加和 |
|