收藏 分享(赏)

第5-1章-汇编语言程序设计.ppt

上传人:无敌 文档编号:84884 上传时间:2018-03-11 格式:PPT 页数:38 大小:322.52KB
下载 相关 举报
第5-1章-汇编语言程序设计.ppt_第1页
第1页 / 共38页
第5-1章-汇编语言程序设计.ppt_第2页
第2页 / 共38页
第5-1章-汇编语言程序设计.ppt_第3页
第3页 / 共38页
第5-1章-汇编语言程序设计.ppt_第4页
第4页 / 共38页
第5-1章-汇编语言程序设计.ppt_第5页
第5页 / 共38页
点击查看更多>>
资源描述

1、第5章 汇编语言程序设计,5.1 概述5.2 顺序程序设计5.3 分支程序设计5.4 循环程序设计5.5 子程序设计4.6 模块化程序设计,开 始,5.1 概述,5.1.1 汇编语言程序设计的一般步骤5.1.2 流程图,返回本章首页,5.1.1 汇编语言程序设计的一般步骤,汇编语言程序设计一般有以下几个步骤:1分析问题,确定算法2绘制流程图3根据流程图编制程序4调试程序,返回本节,5.1.2 流程图,1流程图的概念流程图是由特定的几何图形、指向线、文字说明来表示数据处理的步骤,形象描述逻辑控制结构以及数据流程的示意图。流程图具有简洁、明了、直观的特点。,2流程图符号表示(1)起止框:表示程序的

2、开始和结束。,起止框,(2)判断框,(3)处理框,(4)调用框,(5)指向线,(6)连接框,返回本节,5.2 顺序程序设计,举例: 编写一个汇编语言程序,实现下列公式计算。 假设X=4,Y=5 Z= (XY)8X 2,设计思路一:(1)设公式中出现的三个变量X、Y、Z是8位带符号数;(2)用算术运算指令实现加减乘除运算;(3)指令顺序按照运算顺序书写。,程序段:MOV AL,X;ALXADD AL,Y;ALX+Y 加法MOV BL,8;BL8IMUL BL;AXAL8 乘法MOV BL,X;BLXMOV BH,0;BH0SUB AX,BX;AXAXX 减法MOV BL,2;BL2IDIV BL

3、 ;AX2 除法,商在 AL,余数在AH中MOV Z,AL;Z商MOV Z1,AH;Z1余数,设计思路二:(1)公式中出现的三个变量X、Y、Z是带符号数,在数据段中定义;(2)用算术运算指令实现加减运算;(3)将操作数左移3位二进制位数代替乘以8运算,操作数右移1位相当于除以2;(4)指令在代码段中,指令顺序按照运算顺序书写。,DATA SEGMENT ;数据段定义伪指令X DW 4 ;定义X为字单元,值为4Y DW 5Z DW ? ;定义Z为空单元DATA ENDS ;数据段结束,完整的程序如下:;abc.asm 公式计算,CODE SEGMENT ;代码段定义伪指令 ASSUME CS:C

4、ODE,DS:DATA ;指定段寄存器与对应段名START:MOV AX,DATA MOV DS,AX ;将数据段段地址送入DSMOV BX, X MOV AX, YADD AX,BX ;加法MOV CL,3SAL AX,CL ;算术左移3次,相当于乘以8SUB AX,X ;减法SAR AX,1 ;算术右移1次,相当于除以2MOV Z,AXMOV AH,4CH ;此两句为结束程序,返回DOSINT 21H CODE ENDS ;代码段结束 END START ;整个程序结束伪指令,5.3 分支程序设计,5.3.1 用条件转移指令实现程序分支5.3.2 用跳转表实现多路分支,返回本章首页,5.3

5、.1 用条件转移指令实现程序分支,【例5.3】编写计算下面函数值的程序: 1X0Y= 0X=0 -1X设输入数据为X、输出数据Y,且皆为字节变量。程序流程图如图4.2所示。程序如下:,图5.2 分支运算程序流程图,DATASEGMENTX DB -10Y DB ?DATAENDSSTACKSEGMENT STACK DB 200 DUP(0)STACKENDSCODESEGMENTASSUME DS:DATA,SS:STACK,CS:CODESTART:MOVAX,DATA,MOVDS,AX CMPX,0;与0进行比较 JGEA1;X0转A1 MOVY,-1;X 0时,-1Y JMPEXITA

6、1: JG A2;X0转A2 MOVY,0;X=0时,0Y JMPEXITA2: MOVY,1;X0,1Y EXIT: MOVAH,4CH INT21H CODE ENDS ENDSTART,MOVDS,AX CMPX,0;与0进行比较 JGEA1;X0转A1 MOVY,-1;X 0时,-1Y JMPEXITA1: JGA2;X0转A2 MOVY,0;X=0时,0Y JMPEXITA2: MOVY,1;X0,1Y EXIT: MOVAH,4CH INT21H CODE ENDS ENDSTART,【例5.4】试编一程序,求三个带符号字数据中的最大值,并将最大值存入MAX字单元中。设三个带符号数

7、分别在三个字变量X、Y、Z中存储。程序流程图如图5.3所示,图5.3例5.4程序流程图,程序如下:STACSEGMENT STACK DB 200 DUP(0)STACKENDSDATASEGMENT X DW 00ABH Y DW 5 Z DW 200 MAXDW ?DATAENDSCODESEGMENTASSUME DS:DATA,SS:STACK,CS:CODE,START:MOVAX,DATA MOVDS,AX MOVAX,X CMPAX,Y;XY? JGL1 MOVAX,Y;YZ?L1: CMP AX,Z;XZ? JG EXIT MOV AX,ZEXIT:MOV MAX,AX MOV

8、 AH,4CH INT 21HCODEENDS ENDSTART,返回本节,5.3.2 用跳转表实现多路分支,【例5.5】设某程序有8路分支,试根据给定的N值(18),将程序的执行转移到其中的一路分支。程序流程如图5.4所示。,图5.5 例5.4程序流程图,程序如下:DATASEGMENT TABDW P1,P2,P3,P4,P5,P6,P7,P8 NDB 5DATAENDSSTACKSEGMENT DB 200 DUP(0)STACKENDSCODESEGMENTASSUME DS:DATA,SS:STACK,CS:CODE,START:MOVAX,DATA MOVDS,AX MOVAL,N

9、 DECAL ADDAL,AL MOVBL,AL MOVBH,0 JMPTABBX,P1:JMPEXITP2:JMPEXITP3:JMPEXITP4: ,JMPEXITP8:EXIT:MOVAH,4CH INT21HCODEENDS ENDSTART上述程序中的无条件转移指令的转移地址采用的是变址寻址。同理,转移地址也可以用寄存器间接寻址或基址加变址寻址,读者可自行考虑。,返回本节,5.4 循环程序设计,5.4.1 循环程序的结构5.4.2 单重循环程序设计5.4.3 多重循环程序设计,返回本章首页,5.4.1 循环程序的结构,1初始化部分2循环体部分3循环控制部分,循环程序的常见结构形式如图

10、5.5(a)、(b)所示。,返回本节,图5.5 循环程序结构图,5.4.2 单重循环程序设计,1计数控制2条件控制,1计数控制,【例5.7】已知有几个元素存放在以BUF为首址的字节存贮区中,试统计其中正元素的个数。显然,每个元素为一个8位有符号二进制数,统计其中正元素的个数可用循环程序实现。其程序流程图如图5.6所示。,图5.6 程序流程图,DATA SEGMENT buf db 12h,34h,56h n equ $-buf num dw ?DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX mov ax,0 lea bx, buf mov cx,n,LOP1:mov dl,byte ptrbx cmp dl,0 jle LOP2 inc axLOP2: inc bx loop LOP1 mov num,ax MOV AH,4CH INT 21HCODE ENDS END START,【例5.8】试编写一程序,要求比较两个字符串STR1和STR所含字符是否相同,若相同则显示MATCH!,若不相同则显示NO MATCH!。(程序略)其流程图如图5.7所示。,图5.7 程序流程图,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报