- 1、本文档共33页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第18讲 循环结构和子程序
微型计算机原理 王立萍 【例1】在字单元X中有一个16位的二进制数,统计其中“1”的个数,并将结果存入Y单元。 【例2】编写程序,统计数据区中0、正数、负数的个数,结果存放在C1、C2、C3中。 【例3】数组A包含30个互不相等的整数,数组B包含40个互不相等的整数,将既在数组A中又在数组B中出现的整数存放在数组C中。 MOV CX,40 ;内层循环次数 MOV AX,A[SI] NEXT2:CMP B[DI],AX ;比较两数组中的数 JNE L1 ;不相等,转L1取数组B中下一个数 MOV C[BX],AX ;相等则存入数组C中 ADD BX,2 JMP L2 L1: ADD DI,2 ;取数组B中下一个数 LOOP NEXT2 L2: ADD SI,2 ;取数组A中下一个数 POP CX ;恢复外层循环次数 LOOP NEXT1 RET MAIN ENDP CODE ENDS END START 方法二:在子程序中信息保护的格式为: SUB1 PROC NEAR PUSH BX PUSH CX …… ;子程序功能段 POP CX POP BX RET SUB1 ENDP 【例4】求数组ARRAY中元素之和并存于SUM单元。 【例5】实现将10个8位的无符号数按递减次序 排序,并将结果显示出来。 DATA SEGMENT ARRAY DB 05H,78H,0F8H,7BH,00H DB 8CH,20H,0A0H,80H,60H DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA MAIN PROC FAR START: PUSH DS XOR AX,AX PUSH AX MOV AX,DATA MOV DS,AX AB1: MOV SI,OFFSET ARRAY MOV BL,0 ;交换标志BL置0 MOV CX,9 AGAIN: MOV AL,[SI] INC SI CMP AL,[SI] ;两两相比较 JNC CD1;前一个数大于等于后一个数则转到CD1 MOV AH,[SI] ;否则顺序执行程序实现交换 MOV [SI],AL DEC SI MOV [SI],AH INC SI MOV BL,1 CD1: LOOP AGAIN DEC BL JZ AB1 ;BL减1后为0说明排序没完成 ;再一次进入外循环 MOV SI,OFFSET ARRAY ;则排序已完成需显示 MOV CX,10 LP11: MOV BL,[SI] CALL DISPL ;调用显示子程序 INC SI LOOP LP11 RET MAIN ENDP DISPL PROC NEAR ;显示子程序 MOV DH,2 ;显示两位十六进制数 LOP2: MOV CL,4 ROR B
文档评论(0)