《《基本结构程序设计》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;代码段开始;代
4、码段开始ASSUMECS:CODE,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的程序。DATAS
5、EGMENTNUMDB86H,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 D
7、S,AX MOV SI,OFFSET 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 目
8、标标号功能: IP IP + disp格式: 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.单个标志位的条
9、件转移指令 2.组合条件的条件转移指令2.条件转移指令条件转移指令汇编语言程序设计汇编语言程序设计第第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章章基本结构程序设计基本结构程序设计
10、 第第1010页页第第10页页(2).组合条件的条件转移指令组合条件的条件转移指令比较大小比较大小无符号数无符号数JB/JCJNAEJBE/JNCJNAJNB/JNCJAEJNBEJA带符号数带符号数JL/JNGEJLE/JNGJNL/JNGEJG/JNLE(3).CX的值为的值为0转移指令转移指令格式:JCXZCX=0,转移说明:(1)条件转移指令不影响标志位 (2)条件转移指令前安排算术运算、比较、测试 等影响相应标志位的指令无符号数:无符号数:A代表大于代表大于B代表小于代表小于带符号数:带符号数:G代表大于代表大于L代表小于代表小于汇编语言程序设计汇编语言程序设计第第5章章基本结构程序
11、设计基本结构程序设计 第第1111页页第第11页页分支程序基本执行流程分支程序基本执行流程指令操作(影响标志位)指令操作(影响标志位)测试标志位测试标志位执行程序段执行程序段A执行程序段执行程序段B下一条指令下一条指令真真假假汇编语言程序设计汇编语言程序设计第第5章章基本结构程序设计基本结构程序设计 第第1212页页第第12页页【例】【例】:测试测试AX当前值是否为零,若为零,则置当前值是否为零,若为零,则置CX为为50,否则令,否则令CX为为200。程序段一程序段一:CMPAX,0JZLMOVCX,200JMPNEXTL:MOVCX,50NEXT:;比较;比较AX是否为是否为0;若;若AX为
12、为0,即,即ZF=1则转移则转移;若;若AX不为不为0,则令,则令CX=200;跳转到;跳转到NEXT程序段二程序段二:CMPAX,0JNZLMOVCX,50JMPNEXTL:MOVCX,200NEXT:汇编语言程序设计汇编语言程序设计第第5章章基本结构程序设计基本结构程序设计 第第1313页页第第13页页【例】【例】:判断判断AX当前值的正负,若为正数,则置当前值的正负,若为正数,则置CX为为50,否则令,否则令CX为为200。程序段一程序段一:CMPAX,0JNSLMOVCX,200JMPNEXTL:MOVCX,50NEXT:;比较;比较AX是否为是否为0,影响,影响SF标志标志;若;若A
13、X为正,即为正,即SF=0则转移则转移;若;若AX为负数,则令为负数,则令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:汇编语
14、言程序设计汇编语言程序设计第第5章章基本结构程序设计基本结构程序设计 第第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章章基本结构程序设计基本结构程
15、序设计 第第1515页页第第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,40
16、0HNEXT:程序段二:程序段二:MOVAX,WCMPAX,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;溢出则转移;溢出则转移NONNEG;结果为正则转移;结果为正则转移NEGAXNONNEG:MOVRESULT,AXTOO_HIGH:OVERFLOW:汇编语言程序设计汇编语言程序设计第第5章章基本结构程序设计基本结构程序设计 第第1818页页第第18页页【例】【例】:已知已知X为一个带符号数,比较为一个带符号数,比较X的值,若的值,若X大于大于55H,则令,则令Y=X