《程序设计》PPT课件.ppt
《《程序设计》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《程序设计》PPT课件.ppt(43页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第6 6节节 汇编语言程序设计基本技术汇编语言程序设计基本技术5.6.1 程序设计步骤程序设计步骤分析问题,建立数学模型;分析问题,建立数学模型;确定算法;确定算法;编制程序流程图;编制程序流程图;编制程序;编制程序;调试程序。调试程序。5.6.2 顺序程序设计顺序程序设计按编写指令的顺序执行,且每条指令只执行一次。指令1指令2指令n-1指令n顺序程序结构图例:试编制程序,计算下列公式的值,并将结果存放在FUN存储单元中。F 其中X,Y,Z的值分别存放在VARX、VARY、VARZ三个字存储单元中,且计算过程的中间值和最后结果仍在16位二进制数的范围内。编制源程序如下:TITLEEXAMPL
2、EPROGRAMDATASEGMENT;设置数据段VARXDW123H;变量XVARYDW456H;变量YVARZDW789H;变量ZFUNDW?;结果单元DATAENDSSTACK1SEGMENTPARASTACK;设置堆栈段DW20HDUP(0)STACK1ENDSCODESEGMENT;设置代码段ASSUMECS:CODE,DS:DATA,SS:STACK1START:MOVAX,DATA;置段基值于DSMOVDS,AXMOVAX,VARX;取变量XADDAX,VARY;AX(X+Y)MOVBX,AX;BX(X+Y)SALAX,1;AX2*(X+Y)SALAX,1;AX4*(X+Y)AD
3、DAX,BX;AX5*(X+Y)SALAX,1;AX10*(X+Y)MOVBX,VARZ;取变量ZDECBX;BX(Z1)MOVCX,BX;CX(Z1)SALBX,1;BX2*(Z1)ADDBX,CX;BX3*(Z1)SUBAX,BX;AX10*(X+Y)3*(Z1)SARAX,1;AX10*(X+Y)3*(Z1)/2MOVFUN,AX;存放计算结果MOVAH,4CH;终止用户程序,返回DOSINT21HCODEENDSEND START例:用查表方法将一位十六进制数(09,AF)转换成它对应的ASCII码。首先在数据段建立一个表TABLE,按照十六进制数从小到大(即从09到AF)的顺序,在表
4、中存入它们对应的ASCII码值(十六进制数用大写英文字母AF)。为查出某个数的ASCII码,需计算它在内存中的地址。用简化段定义伪指令,编制源序如下:.MODELSMALL;设置内存模式.DATA;设置数据段TABLEDB30H,31H,32H,33H,34H,35H,36H,37HDB38H,39H,41H,42H,43H,44H,45H,46HHEXDB4ASCI DB?.STACK 100H;设置堆栈段.CODE;设置代码段START:MOVAX,DATADATAMOVDS,AXLEABX,TABLE;取表首址XORAH,AH ;AH清零MOVAL,HEX ;取一位十六进制数ADDBX,
5、AX;确定查表位置MOVAL,BX ;查表MOVASCI,AL ;存结果MOVAH,4CH;终止程序,返回DOSINT21HENDSTART5.6.3 分支程序设计分支程序设计1 1、转移指令、转移指令无条件转移指令无条件转移指令条件转移指令条件转移指令直接寻址直接寻址间接寻址间接寻址段内转移段内转移段间转移段间转移单条件转移指令单条件转移指令无符号数条件转移指令无符号数条件转移指令符号数条件转移指令符号数条件转移指令段内转移段内转移段间转移段间转移(1)无条件转移指令格式:格式:JMP JMP 目标地址目标地址目标地址有两种表达方式目标地址有两种表达方式a.直接寻址:目标地址通常是标号目标地
6、址通常是标号段内转移段内转移:相对转移,相对转移,指令给出位移量指令给出位移量DISPDISP;执行操作:执行操作:IP (IP)+(IP)+DISPDISP段间转移段间转移:指令中给出目标地址的段基值和指令中给出目标地址的段基值和偏移地址;偏移地址;执行操作:执行操作:IP 偏移地址偏移地址 CS CS 段基值段基值例如:例如:JMP NEXT JMP NEXT;NEXT为标号为标号JMP指令的下一指令指令的下一指令与目标地址所指的指与目标地址所指的指令之间的字节距离令之间的字节距离b.间接寻址:目标地址通常由寄存器或存储单元提供目标地址通常由寄存器或存储单元提供段内转移段内转移:寄存器或存
7、储单元提供偏移地址寄存器或存储单元提供偏移地址执行操作:执行操作:IP 偏移地址偏移地址段间转移段间转移:由一个双字单元提供目标地址的由一个双字单元提供目标地址的段基值和偏移地址;段基值和偏移地址;执行操作:执行操作:IP 偏移地址偏移地址 CS CS 段基值段基值(2)条件转移指令格式:格式:Jxx Jxx 目标地址目标地址只能在段内转移,而且是相对转移。只能在段内转移,而且是相对转移。xxxx为转移条件为转移条件a.单条件转移指令单条件转移指令指令转移条件含义JCCF=1有进位/借位转移JNCCF=0无进位/借位转移JE/JZZF=1相等/等于0转移JNE/JNZZF=0不相等/不等于0转
8、移JSSF=1是负数转移JNSSF=0是正数转移JOOF=1有溢出转移JNOOF=0无溢出转移JP/JPEPF=1有偶数个“1”转移JNP/JPOPF=0有奇数个“1”转移b.无符号数条件转移指令无符号数条件转移指令指令转移条件含义JA/JNBECF=0ANDZF=0AB转移JAE/JNBCF=0ORZF=1AB转移JB/JNAECF=1ANDZF=0AB转移JGE/JNLSF=OFORZF=1AB转移JL/JNGESFOFANDZF=0AB转移JLE/JNGSFOFORZF=1AB转移2 2、分支程序设计、分支程序设计(1)比较/测试分支结构比较/测试分支结构程序流程例:编程序段,把例:编程
9、序段,把DA1DA1字节数据变为偶数。字节数据变为偶数。分析:若二进制数最低位为分析:若二进制数最低位为0 0,则为偶数。,则为偶数。程序段流程程序段如下:程序段如下:TESTTEST DA1,01H DA1,01H JE NEXTJE NEXT INC DA1 INC DA1 NEXT:NEXT:例:设数据段中例:设数据段中NUM1,NUM2NUM1,NUM2两字节单元中有两字节单元中有 无符号整数,编程完成下面的操作:无符号整数,编程完成下面的操作:如两个数均是偶数,两个数加1后分别送入DA1、DA2字节单元中;如两个数均是奇数,两个数分别直接送入DA1、DA2字节单元中;如一个是奇数,一
10、个是偶数,则奇数直接送DA1字节单元,偶数直接送DA2字节单元。分析:依次测试分析:依次测试NUM1NUM1和和NUM2NUM2的奇偶性的奇偶性,有有4 4种情况。种情况。NUM1NUM1奇奇偶偶NUM2NUM2偶偶DA1DA1NUM1,NUM1,DA2DA2NUM2NUM2DA1DA1NUM1,NUM1,DA2DA2NUM2NUM2DA1DA1NUM2,NUM2,DA2DA2NUM1NUM1DA1DA1NUM1+1,NUM1+1,DA2DA2NUM2+1NUM2+1奇奇偶偶奇奇根据分析,画出流程图如下:根据分析,画出流程图如下:程序段如下:程序段如下:MOV AL,NUM1MOV AL,NU
11、M1MOV AH,NUM2MOV AH,NUM2TEST AL,01HTEST AL,01HJNE JNE END0END0TEST AH,01HTEST AH,01HJNE JNE L1L1 INC AL INC ALINC AHINC AH JMP END0JMP END0L1L1:XCHG AL,AHXCHG AL,AHEND0END0:MOV DA1,AL:MOV DA1,ALMOV DA2,AHMOV DA2,AHL1L1END0END0(2)用跳转表形成多路分支结构假设某程序根据不同情况在5个计算公式中选择1个。可编制5个程序段,分别完成1个公式的运算。在程序中构造跳转表,有两种情
12、况。例:由分支的入口地址构成例:由分支的入口地址构成跳转表。跳转表。跳转表在跳转表在数据段数据段,表中每一,表中每一项都是一个项都是一个分支的偏移地址分支的偏移地址。为转移到第为转移到第N N个公式,需先个公式,需先找到该分支的找到该分支的入口地址入口地址。入口地址在跳转表中的偏入口地址在跳转表中的偏移量为移量为2*(N-1)2*(N-1)。数据段如下:数据段如下:DATASEGMENTJUMP_TABLEDWSUB1,SUB2,SUB3,SUB4,SUB5PARAMDB3DATAENDS实现多路分支的程序段如下:实现多路分支的程序段如下:XORAX,AXMOVAL,PARAM;取参数DECA
13、L;计算2*(PARAM-1)SHLAL,1MOVBX,OFFSETJUMP_TABLEADDBX,AXMOVAX,BX;取转移的入口地址JMPAX;间接转移到分支入口例:由转移指令构成跳转表的多路分支程序设计。例:由转移指令构成跳转表的多路分支程序设计。跳转表在跳转表在代码段代码段,表中每一项都是,表中每一项都是JMPJMP指令代码指令代码。为转移到第为转移到第N N个公式,需先转移到跳转表中对应的个公式,需先转移到跳转表中对应的JMPJMP指令(在表中的偏移量为指令(在表中的偏移量为3*(N-1)3*(N-1),再通过这,再通过这里的里的JMPJMP指令转移到对应的计算公式。指令转移到对应
14、的计算公式。实现多路分支的程序段如下:实现多路分支的程序段如下:XOR BX,BX XOR BX,BX MOV BL,PARAM ;MOV BL,PARAM ;取参数取参数 DEC BL DEC BL;参数减参数减1 1 MOV AL,BL MOV AL,BL;再乘再乘3 3 SHL BL,1 SHL BL,1 ADD BL,AL ADD BL,AL ADD BX,OFFSET JUMP_TABLE ADD BX,OFFSET JUMP_TABLE JMP BXJMP BX ;转至跳转表转至跳转表JUMP_TABLEJUMP_TABLE:JMP SUB1JMP SUB1;转至分支转至分支5.6
15、.4 循环程序设计循环程序设计1 1、循环控制指令、循环控制指令(1)LOOP指令属于程序转移类指令属于程序转移类指令格式:格式:LOOP LOOP 目标地址目标地址例:例:编制程序,产生编制程序,产生n n个数据的裴波纳契数列。个数据的裴波纳契数列。裴波纳契数列中,裴波纳契数列中,a a1 1=0,a=0,a2 2=1,=1,从第从第3 3个数开始,个数开始,a an=n=a an-1n-1+a+an-2n-2 。数据段中数据定义如下:数据段中数据定义如下:FIBONA DW 100 DUP(0);FIBONA DW 100 DUP(0);存放数列存放数列NUM DB 20H NUM DB
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 PPT 课件
限制150内