|
用程序如何計(jì)算1+2+ … +100的累加和
此程序?yàn)橛?jì)算1+2+ … +100的累加和,并以十進(jìn)制格式顯示輸出計(jì)算結(jié)果。通過對(duì)本例的學(xué)習(xí),我們應(yīng)該知道如何在屏幕上顯示輸出一個(gè)無符號(hào)的十進(jìn)制數(shù)據(jù),并進(jìn)一步熟悉匯編語言中循環(huán)程序及子程序的設(shè)計(jì)方法。 源程序: DATA SEGMENT CTAB DW 10000,1000,100,10,1 NUMB DW 5,4,3,2,1 ;相應(yīng)需要除的次數(shù) DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA START: MOV AX,DATA MOV DS,AX MOV AX,0 ;累加器清0 MOV CX,100 ;循環(huán)次數(shù) LOP1: ADD AX,CX ;累加,和保存在AX中 LOOP LOP1 ;LOOP LOP1 這條循環(huán)指令可更改為以下兩條指令的組合: ;DEC CX ;JNZ LOP1 CALL OUTD ;以十進(jìn)制格式顯示輸出計(jì)算結(jié)果 MOV AH,4CH INT 21H ;十進(jìn)制格式顯示輸出子程序,入口參數(shù)在AX中(無符號(hào)數(shù)) OUTD PROC AND AX,AX ;二進(jìn)制數(shù)0? JNZ OUT1 ;不為0轉(zhuǎn)移 MOV DL,30H CALL DISP ;調(diào)用顯示字符子程序,顯示0后返回 RET OUT1: PUSH CX MOV SI,0 OUT2: CMP AX,CTAB[SI] ;分別與除數(shù)10000,1000…比較 JAE NEXT ;高于等于轉(zhuǎn)移 ADD SI,2 ;指向下一個(gè)檔次的除數(shù) JMP OUT2 NEXT: MOV CX,NUMB[SI] ;相應(yīng)需要除的次數(shù) OUT3: XOR DX,DX ;被除數(shù)擴(kuò)展到32位 DIV CTAB[SI] ;商在AX中,余數(shù)在DX中 XCHG DX,AX ;余數(shù)送AX,作下一次的被除數(shù) ADD DL,30H CALL DISP ;調(diào)用顯示字符子程序 ADD SI,2 ;指向下一個(gè)檔次的除數(shù) LOOP OUT3 POP CX RET OUTD ENDP ;顯示字符子程序,入口參數(shù)在DL DISP PROC PUSH AX MOV AH,02H INT 21H POP AX RET DISP ENDP CODE ENDS END START 用程序如何計(jì)算1+2+ … +100的累加和 |
|
|