微机原理第五章 程序设计-dsh.ppt
文本预览下载声明
第五章 汇编语言程序设计 第一节 程序设计概述 第二节 顺序结构程序 第三节 分支程序 第四节 循环程序 第五节 子程序 第六节 算术运算、代码转换和串操作 第七节 实用程序设计举例 LOP1: MOV AL,[BX] CMP AL,0 JLE JUSTI INC DX JUSTI: INC BX DEC CX JNZ LOP1 MOV RS,DX MOV AH,4CH INT 21H CODE ENDS END START 2.先判断,后执行结构 流程图如右 入口 初始化部分 循环结束? 循环体 修改部分 出口 Y N 例3. AX寄存器中有一个 16位的二 进制数,编程统计其中值为 1的位的 个数,并将结果存于CX中。 解: 由于AX有可能为 0,若AX=0 则不必再往下作统计工作,因此可采 用先判断,后执行结构。流程图如右: START CX 0 AX=0? AX左移 CF=0? CX CX+1 END Y N Y N 程序段如下: ··· MOV CX,0 LOP: AND AX,AX ;建标志位 JZ STOP ;AX=0停机 SAL AX,1 JNC NOD JNC CX NOD: JMP LOP STOP: HLT ··· 二.循环控制方式 1.计数控制 用于计数次数已知的情况,可采用正计数或倒计数法。 例4. 编程计算 设aibi为 8位无符号数,运算结果不超过 16位二进制数。 解: BUFA中存放a1,a2,a3,a4, BUFB 中存放b1,b2,b3,b4,存储单元 C中放结果。SI 放 BUFA偏移地址,DI 放 BUFB偏移地址,CX 作计数器。 流程图及程序如下: START 预置段R SI 0 DI 0 C 0 CX 4 AX 0 C=C+ai*bi SI SI+1 DI DI+1 CX-1=0? END N Y DATA SEGMENT BUFA DB X,X,X,X COUNT EQU 4 BUFB DB X,X,X,X C DW ? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA BEGIN: MOV AX,DATA MOV DS,AX MOV SI,0 MOV DI,0 MOV CX,COUNT MOV C,0 MOV AX,0 LL: MOV AL,BUFA[SI] MUL BUFB[DI] DC C,AX INC SI INC DI
显示全部