基本结构程序设计.ppt
《基本结构程序设计.ppt》由会员分享,可在线阅读,更多相关《基本结构程序设计.ppt(96页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、本章内容本章内容:掌握顺序结构程序的设计;掌握顺序结构程序的设计;掌握分支转移指令的使用;掌握分支转移指令的使用;掌握分支程序和循环程序的设计方法。掌握分支程序和循环程序的设计方法。第第5章章基本结构程序设计基本结构程序设计汇编语言程序设计汇编语言程序设计第第5章章基本结构程序设计基本结构程序设计 第第2 2页页第第2页页本章要求本章要求1.1.掌握顺序结构程序的设计方法,能利用汇编语言基本指令熟练掌握顺序结构程序的设计方法,能利用汇编语言基本指令熟练进行顺序结构程序设计;进行顺序结构程序设计;2.2.熟练掌握分支转移指令的使用,如何生成有效测试标志,选择熟练掌握分支转移指令的使用,如何生成有
2、效测试标志,选择何种方式的转移指令。何种方式的转移指令。3.3.掌握分支程序设计方法;掌握分支程序设计方法;4.4.掌握循环程序设计方法及串指令的应用。掌握循环程序设计方法及串指令的应用。本章重点及难点本章重点及难点:汇编指令的综合应用及多分支、多重循环程序设计。汇编指令的综合应用及多分支、多重循环程序设计。计划学时计划学时:8-10学学时时汇编语言程序设计汇编语言程序设计第第5章章基本结构程序设计基本结构程序设计 第第3 3页页第第3页页 顺序结构程序在设计上比较简单,它按指令书写的先后次序执行一系列操作,这种程序也称为直线程序。组成输入数据已知的数据,即让计算机进行运算的对象处理根据问题的
3、需要对输入数据进行相应的运算处理输出结果将运算处理的结果输出基本语句:数据传送指令、算术运算指令和逻辑运算指令执行过程:指令2指令n开始结束5.1顺序结构程序设计顺序结构程序设计汇编语言程序设计汇编语言程序设计第第5章章基本结构程序设计基本结构程序设计 第第4 4页页第第4页页【例】【例】:在屏幕上显示一个字符串:在屏幕上显示一个字符串:“WELCOME!”“WELCOME!”。完整程序完整程序:DATASEGMENT;数据段开始;数据段开始STRINGDBWELCOME!,13,10,$DATAENDS;数据段结束;数据段结束CODESEGMENT;代码段开始;代码段开始ASSUMECS:C
4、ODE,DS:DATASTART:MOVAX,DATAMOVDS,AX;设置;设置DSMOVAH,9;子功能号;子功能号9,用于输出字符串用于输出字符串LEADX,STRING;字符串偏移地址;字符串偏移地址INT21H;系统功能调用;系统功能调用MOVAX,4C00H;返回;返回DOSINT21HCODEENDS;代码段结束;代码段结束ENDSTART汇编语言程序设计汇编语言程序设计第第5章章基本结构程序设计基本结构程序设计 第第5 5页页第第5页页【例】【例】:对于三个8位无符号数86H、34H和21H,编写RESULT=86H*34H-21H的程序。DATASEGMENTNUMDB86H
5、,34H,21HRESULTDW?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXLEASI,NUMMOVAL,SIMOVBL,SI+1MULBL;乘积放在AXMOVBL,SI+2MOVBH,0;把BX高位字节清零SUBAX,BXMOVRESULT,AX;保存运算结果MOVAH,4CHINT21HCODEENDSENDSTART 取操作数1取操作数2求乘积取操作数3将减数扩展为16位做减法结果送指定处开始结束汇编语言程序设计汇编语言程序设计第第5章章基本结构程序设计基本结构程序设计 第第6 6页页第第6页页【例】:
6、以BUF为首址的内存中存有015的平方值表。查表求X单元中数(在015之间)的平方值,并送回X单元。DATA SEGMENTDATA SEGMENTBUF DB 0,1,4,9,16,25,36,49,64,81,100,121,144,169,196,225X DB 12DATA ENDSDATA ENDSSTACK SEGMENT STACK STACK DB 100 DUP(?)STACK ENDSCODE SEGMENTCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START:MOV AX,DATA MOV DS,AX MOV SI,OFFS
7、ET BUF XOR AX,AX MOV AL,X ADD SI,AX MOV AL,SI MOV X,AL MOV AH,4CH INT 21H CODE ENDSCODE ENDS END START取表的首地址取要求值的数查表求其平方值开始结束汇编语言程序设计汇编语言程序设计第第5章章基本结构程序设计基本结构程序设计 第第7 7页页第第7页页转移的目标地址直接出现在指令中功能:无条件地使程序转移到指定的目标地址类型段内转移改变IP的值,CS的值不变直接方式间接方式转移的目标地址在寄存器或存储单元中段间转移改变IP和CS的值直接方式间接方式格式:JMP 目标标号功能:IP IP+disp格
8、式:JMP 字地址指针功能:IP EA格式:JMP 目标标号功能:IP OFFSET 目标标号 CS SEG 目标标号格式:JMP 双地址指针功能:IP EA CS EA+2转移指令转移指令5.2分支程序设计分支程序设计1.无条件转移指令无条件转移指令JMP汇编语言程序设计汇编语言程序设计第第5章章基本结构程序设计基本结构程序设计 第第8 8页页第第8页页功能:以某些标志位或标志位的逻辑运算为依据,满足条件,程序转移 至指定目标;不满足条件,程序顺序执行。注意注意:条件转移的目标地址 在+127或-128字节的范围之内分类:1.单个标志位的条件转移指令 2.组合条件的条件转移指令2.条件转移指
9、令条件转移指令汇编语言程序设计汇编语言程序设计第第5章章基本结构程序设计基本结构程序设计 第第9 9页页第第9页页(1 1).单个标志位的条件转移指令单个标志位的条件转移指令类型C标志JB/JNAE/JC C=1时,转移JAE/JNB/JNC C=0时,转移Z标志JE/JZZ=1时,转移JNE/JNZ Z=0时,转移S标志JS S=1时,转移JNSS=0时,转移P标志JP/PE P=1时,转移JNP/JPO P=0时,转移O标志JOO=1时,转移JNOO=0时,转移汇编语言程序设计汇编语言程序设计第第5章章基本结构程序设计基本结构程序设计 第第1010页页第第10页页(2).组合条件的条件转移
10、指令组合条件的条件转移指令比较大小比较大小无符号数无符号数JB/JCJNAEJBE/JNCJNAJNB/JNCJAEJNBEJA带符号数带符号数JL/JNGEJLE/JNGJNL/JNGEJG/JNLE(3).CX的值为的值为0转移指令转移指令格式:JCXZCX=0,转移说明:(1)条件转移指令不影响标志位 (2)条件转移指令前安排算术运算、比较、测试 等影响相应标志位的指令无符号数:无符号数:A代表大于代表大于B代表小于代表小于带符号数:带符号数:G代表大于代表大于L代表小于代表小于汇编语言程序设计汇编语言程序设计第第5章章基本结构程序设计基本结构程序设计 第第1111页页第第11页页分支程
11、序基本执行流程分支程序基本执行流程指令操作(影响标志位)指令操作(影响标志位)测试标志位测试标志位执行程序段执行程序段A执行程序段执行程序段B下一条指令下一条指令真真假假汇编语言程序设计汇编语言程序设计第第5章章基本结构程序设计基本结构程序设计 第第1212页页第第12页页【例】【例】:测试测试AX当前值是否为零,若为零,则置当前值是否为零,若为零,则置CX为为50,否则令,否则令CX为为200。程序段一程序段一:CMPAX,0JZLMOVCX,200JMPNEXTL:MOVCX,50NEXT:;比较;比较AX是否为是否为0;若;若AX为为0,即,即ZF=1则转移则转移;若;若AX不为不为0,
12、则令,则令CX=200;跳转到;跳转到NEXT程序段二程序段二:CMPAX,0JNZLMOVCX,50JMPNEXTL:MOVCX,200NEXT:汇编语言程序设计汇编语言程序设计第第5章章基本结构程序设计基本结构程序设计 第第1313页页第第13页页【例】【例】:判断判断AX当前值的正负,若为正数,则置当前值的正负,若为正数,则置CX为为50,否则令,否则令CX为为200。程序段一程序段一:CMPAX,0JNSLMOVCX,200JMPNEXTL:MOVCX,50NEXT:;比较;比较AX是否为是否为0,影响,影响SF标志标志;若;若AX为正,即为正,即SF=0则转移则转移;若;若AX为负数
13、,则令为负数,则令CX=200;跳转到;跳转到NEXT程序段二程序段二:ADDAX,0JSLMOVCX,50JMPNEXTL:MOVCX,200NEXT:程序段三(用程序段三(用ZF测试)测试):TESTAX,8000HJNZLMOVCX,50JMPNEXTL:MOVCX,200NEXT:程序段四(用程序段四(用CF测试)测试):BTAX,15JCLMOVCX,50JMPNEXTL:MOVCX,200NEXT:程序段五(用程序段五(用CF测试)测试):SHLAX,1JCLMOVCX,50JMPNEXTL:MOVCX,200NEXT:汇编语言程序设计汇编语言程序设计第第5章章基本结构程序设计基本
14、结构程序设计 第第1414页页第第14页页【例】【例】:已知已知X为为16位的数,判断位的数,判断X是奇数还是偶数,若为奇数,则令是奇数还是偶数,若为奇数,则令Z=X,若为偶数,令若为偶数,令Z=0。程序段一(用程序段一(用ZF测试)测试):MOVAX,XTESTAX,1JNZLMOVZ,0JMPNEXTL:MOVZ,AXNEXT:程序段二(用程序段二(用CF测试)测试):MOVAX,XBTAX,0JCLMOVZ,0JMPNEXTL:MOVZ,AXNEXT:SHRAX,1汇编语言程序设计汇编语言程序设计第第5章章基本结构程序设计基本结构程序设计 第第1515页页第第15页页【例】【例】:已知已
15、知W为为16位的数,若位的数,若W为正数,则令为正数,则令Z=W,若为,若为0,令,令Z=400H,若为负数,则,若为负数,则Z=|W|+50H。AXWAX=0?SF=0?Z400HZAXZ|W|+50HNEXTZF=1ZF=0SF=0SF=1流程图片段流程图片段汇编语言程序设计汇编语言程序设计第第5章章基本结构程序设计基本结构程序设计 第第1616页页第第16页页程序段一:程序段一:MOVAX,WCMPAX,0JZL1JNSL2NEGAXADDAX,50HMOVZ,AXJMPNEXTL2:MOVZ,AXJMPNEXTL1:MOVZ,400HNEXT:程序段二:程序段二:MOVAX,WCMPA
16、X,0JNZL1MOVZ,400HJMPNEXTL1:JNSL2NEGAXADDAX,50HMOVZ,AXJMPNEXTL2:MOVZ,AXNEXT:汇编语言程序设计汇编语言程序设计第第5章章基本结构程序设计基本结构程序设计 第第1717页页第第17页页【例】【例】:如果:如果X50,转到,转到TOO_HIGH,不满足,不满足,X-Y;如果溢出转到;如果溢出转到OVERFLOW,否则,否则|X-Y|RESULT。JOJNS程序段如下程序段如下:MOVAX,XCMPAX,50JGTOO_HIGH;大于则转移到;大于则转移到TOO_HIGHSUBAX,YOVERFLOW;溢出则转移;溢出则转移NO
17、NNEG;结果为正则转移;结果为正则转移NEGAXNONNEG:MOVRESULT,AXTOO_HIGH:OVERFLOW:汇编语言程序设计汇编语言程序设计第第5章章基本结构程序设计基本结构程序设计 第第1818页页第第18页页【例】【例】:已知已知X为一个带符号数,比较为一个带符号数,比较X的值,若的值,若X大于大于55H,则令,则令Y=X/2-30H,若,若X小于小于-1,则令,则令Y=|X|,否则,否则,Y=0。编程解决该问题。编程解决该问题。MOVAX,XCMPAX,55H;第一次比较;第一次比较JGXGY;大于则转移;大于则转移CMPAX,-1;第二次比较;第二次比较JLXLY;小于
18、则转移;小于则转移MOVY,0;令;令Y=0JMPEXITXLY:NEGAX;求绝对值;求绝对值MOVY,AX;结果送到;结果送到YJMPEXITXGY:SARAX,1;大于,则执行;大于,则执行Y=X/2-30HSUBAX,30HMOVY,AX;结果送到;结果送到YEXIT:汇编语言程序设计汇编语言程序设计第第5章章基本结构程序设计基本结构程序设计 第第1919页页第第19页页5.2.2 5.2.2 双分支结构程序双分支结构程序1.1.双分支结构程序的典型结构双分支结构程序的典型结构双分支结构程序的典型结构一双分支结构程序的典型结构一双分支结构程序的典型结构二双分支结构程序的典型结构二条件条
19、件B真真假假条件条件AB真真假假汇编语言程序设计汇编语言程序设计第第5章章基本结构程序设计基本结构程序设计 第第2020页页第第20页页条件产生条件产生在进行条件测试以前,必须执行能生成状态标志的先行指令,如:TEST、CMP、ADD、SUB、AND、OR、XOR和移位指令等,这些指令执行后能按规定影响PSW中的状态标志位OF,SF,ZF,PF与CF。为条件检测作好准备。测试与定向测试与定向条件转移指令自动对相应的状态标志位进行测试,以确定是否满足条件,决定程序的不同走向。而每一条条件转移指令,恰好有两种选择,转移或顺序执行。标号标号对于每个分支,在转移的目标地址处一定要给出标号。需注意的问题
20、需注意的问题汇编语言程序设计汇编语言程序设计第第5章章基本结构程序设计基本结构程序设计 第第2121页页第第21页页2.2.双分支结构程序设计举例双分支结构程序设计举例【例】:设计字符比较程序,两个字符相同时,显示YES;否则显示NODATASEGMENTD1DBAD2DBBRES1DBYES,$RES2DBNO,$DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVAL,D1MOVBL,D2 CMPAL,BLJNENEXT1LEADX,RES1JMPNEXT2NEXT1:LEADX,RES2NEXT2:MOVA
21、H,09HINT21HMOVAH,4CHINT21HCODEENDSENDSTARTNY相同?显示NO显示YES取数开始返回汇编语言程序设计汇编语言程序设计第第5章章基本结构程序设计基本结构程序设计 第第2222页页第第22页页【例】:设存储单元A和B各有一无符号字节数,比较大小,将较大数送A单元DATASEGMENTADB39HBDB0B4HDATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVAL,ACMPAL,BJNCNEXTXCHGAL,BMOVA,ALNEXT:MOVAH,4CHINT21HCODEEND
22、SENDSTART取数YNABA、B交换开始返回汇编语言程序设计汇编语言程序设计第第5章章基本结构程序设计基本结构程序设计 第第2323页页第第23页页 【例】【例】比较两个带符号字节数的大小,找出两个数中大的存入MAX字节单元,编写源程序如下:DATASEGMENTDA1DBX1,X2;X1,X2为任意二个带符号数MAXDB?DATAENDSSTAKSEGMENTSTACKDW20HDUP(?)STAKENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVAL,DA1;取X1,送到AL中CMPAL,DA1+1JGEL1;
23、若XX2则转到L1,这里产生分支MOVAL,DA1+1;若XX2则DA1+1的内容送ALL1:MOVMAX,ALMOVAH,4CHINT21HCODEENDSENDSTART 汇编语言程序设计汇编语言程序设计第第5章章基本结构程序设计基本结构程序设计 第第2424页页第第24页页多分支结构程序设计多分支结构程序设计含义:程序有两个以上的分支设计方法:双分支方法、地址表法、转移表法、逻辑分解法结构:条件=?X1X2Xn其它程序段1程序段2程序段0程序段n汇编语言程序设计汇编语言程序设计第第5章章基本结构程序设计基本结构程序设计 第第2525页页第第25页页1.由多个双分支结构实现多分支结构程序设
24、计【例】【例】:计算符号函数SNG(X)的值符号函数:1 当X0时 Y=0 当X=0时-1 当X0时YNYNAL XAL0Y 1Y 0开始返回汇编语言程序设计汇编语言程序设计第第5章章基本结构程序设计基本结构程序设计 第第2626页页第第26页页DATASEGMENTXDB0B9HYDB?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVAL,XCMPAL,0JLNEXT1;X0则转NEXT2MOVY,0;X=0则令Y=0JMPRES源程序如下:源程序如下:NEXT1:MOVY,0FFHJMPRESNEXT2:
25、MOVY,1RES:MOVAH,4CHINT21HCODEENDSENDSTART汇编语言程序设计汇编语言程序设计第第5章章基本结构程序设计基本结构程序设计 第第2727页页第第27页页2.2.转移表法多分支程序设计转移表法多分支程序设计设计方法:把转移到各分支程序段的转移指令依次存放在一起,形成转移表。各转移指令在表中的位置:离表首地址的偏移量作为转移条件,偏移量加上表首地址作为转移地址,转到表的相应位置,执行相应的无条件转移指令典型例子:JMPBXTAB:JMPSHORTMODE0;转移表JMPSHORTMODE1JMPSHORTMODE2JMPSHORTMODE3JMPSHORTMODE
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基本 结构 程序设计
限制150内