文档详情

第5篇 8086汇编语言程序设计.ppt

发布:2017-05-23约8.3千字共65页下载文档
文本预览下载声明
计数循环程序 条件循环程序 若循环次数预先不能确定,可谓设法根据问题的特定条件进行循环控制。如例1 例:求12+22+32+。。。 前项的和刚大于1000的项数N,并将项数存入到T单元中。 DATA SEGMENT T DB ? DATA ENDS COSEG SEGMENT ASSUME DS:DATA,CS:COSEG START: MOV AX,DATA MOV DS,AX MOV CL,0 ;项数计数器 MOV DL,0 ;自然数计数器 MOV BX,0 ;和 INCR: INC DL ;形成一个自然数 MOV AL,DL MOV SH,AL MUL AH ADD BX,AX ;计算累加和 INC CL ;计项数 CMP BX,1000 JA ATOREN JMP INCR ;和=1000,继续求下一项 STOREN:MOV T,CL MOV AH,4CH INT 21H COSEG ENDS END START DATA SEGMENT NUM DB 5,9,8,7,3,15 LEN EQU $-NUM DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV CX,LEN DEC CX ;CX←比较趟数,即外循环次数 LOP1: MOV DX,CX ; 保存外循环次数在DX,内循环比较次数在CX中。 MOV SI,0 LOP2: MOV AL,NUM[SI] CMP AL,ANUM[SI+1] ;相邻两数据比较 JAE CONT XCHG AL,NUM[SI+1] MOV NUM[SI],AL CONT :INC SI ;修改数据地址指针 LOOP LOP2 ; 内循环结束 MOV CX,DX ;恢复外循环计数值 LOOP LOP1 ;外循环是否结束 MOV AH,4CH INT 21H CODE ENDS END START 【例5-6】(续) DATA SEGMENT MYSTR DB Welcome to MASM! DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX 【例5-6】(续) LEA SI,MYSTR NEXTCHAR: MOV DL,[SI] MOV AH,2 INT 21H CMP DL,! JZ FINISH INC SI JMP NEXTCHAR 【例5-6】(续) FINISH: MOV AH,4CH INT 21H CODE ENDS END START 【例5-6】 将内存数据段INSTR地址开始存放的一个由字母组成的字符串中的小写字母全部转换成大写字母(其余字符不变)后存至内存数据段OUTSTR地址处。 如原字符串是“hello ASM!,那么转换完后应该是“HELLO ASM!。 【例5-6】(续) DATA SEGMENT INSTR DB hello ASM! STRLEN EQU $-INSTR OUTSTR DB STRLEN DUP(?) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX 【例5-6】(续) LEA SI,INSTR LEA DI,OUTSTR MOV CX,STRLEN NEXTCHAR: MOV AL,[SI] CMP AL,a JB UNCHG ;不是小写字母,则不转换 CMP AL,z JA UNCHG ;不是小写字母,则不转换 SUB AL,20H ;将小写字母转换为大写字母 UNCHG: MOV [DI],AL INC SI INC DI LOOP NEXTCHAR 【例5-6】(续)
显示全部
相似文档