选修1《程序设计的基本方法》ppt课件1 高中信息技术_第1页
选修1《程序设计的基本方法》ppt课件1 高中信息技术_第2页
选修1《程序设计的基本方法》ppt课件1 高中信息技术_第3页
选修1《程序设计的基本方法》ppt课件1 高中信息技术_第4页
选修1《程序设计的基本方法》ppt课件1 高中信息技术_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

5.6汇编语言程序设计的基本方法,通常,编制一个汇编语言源程序应按如下步骤进行:明确任务,确定算法。绘制流程图(包括确定内存单元和分配寄存器)。根据流程图编写汇编语言程序。上机调试程序。程序的基本结构有四种:顺序结构、分支结构、循环结构和子程序结构。,5.6.1顺序程序设计,顺序结构也称线性结构,其特点是其中的语句或结构被连续执行。顺序程序是最简单的,也是最基本的一种程序结构。这种结构的程序从开始到结尾一直是顺序执行的,中途没有任何分支。从这种结构的流程图来看,除了有一个起始框,一个终止框外,就是若干执行框,没有判断框。指令指针IP值线形增加,IP=IP+1,S1,S2,S3,开始,结束,例1求两个数的平均值。这两个数分别存放在X单元和Y单元中,而平均值放在Z单元中。源程序编制如下:DATASEGMENTXDB8CHYDB64H;赋予初值ZDB?;分配存储空间DATAENDSSTACKSEGMENTDW20HDUP(0);给堆栈段分配一个TOPLABLEWORD;据区共32个字,每个STACKENDS;字的内容均为0,CODESEGMENTMAINPROCFAR;定义子程序名为MAIN,类型FARASSUMECS:CODE;把段寄存器和ASSUMEDS:DATA;段名对应起来ASSUMESS:STACKSTART:PUSHDSMOVAX,0PUSHAXMOVAX,DATA;给数据段赋初值MOVDS,AXMOVAX,STACKMOVSS,AXMOVSP,OFFSETTOP,MOVAL,XADDAL,Y;两数低字节相加结果送ALMOVAH,0ADCAH,0;两数高字节带进位相加SHRAX,1MOVZ,ALRETMAINENDPCODEENDSENDSTART,例2编写程序,计算(W-(X*Y+Z-100)/W,其中W、X、Y、Z均为16位带符号数,计算结果的商存入AX,余数存入DX。例3把非压缩十进制数DAT1转换为压缩十进制数,例2编写程序,计算(W-(X*Y+Z-100)/W,其中W、X、Y、Z均为16位带符号数,计算结果的商存入AX,余数存入DX。DATASEGMENTWDW268XDW73YDW48ZDW85DATAENDSSTACKSEGMENTDW100DUP(?)STACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKSTART:MOVAX,DATAMOVDS,AXMOVAX,X;计算X*YIMULYMOVCX,AX;用CX存储结果低位MOVBX,DX;用BX存储结果高位MOVAX,Z;计算X*Y+Z,CWDADDCX,AXADCBX,DXSUBCX,100SBBBX,0MOVAX,WCWDSUBAX,CXSBBDX,BXIDIVWMOVAH,4CHINT21HCODEENDSENDSTART,8,金手指考试网元贝驾考网科目一科目四仿真考试题C1,Grammar,例3把非压缩十进制数DAT1转换为压缩十进制数。STACK64HDATADAT1DW0908H;非压缩十进制数0908HCODEBEGIN:MOVAX,DATAMOVDS,AXMOVAX,DAT1;AX0908HMOVCL,4;CL4SALAH,CL;09字节左移4位,AH=90HROLAX,CL;9008H字循环左移4位,AX=0089HROLAL,CL;89字节循环左移4位,AL=98HMOVBYTEPTRDAT1,AL;DAT198H,压缩十进制数98HMOVAH,4CH;返回DOSINT21HENDBEGIN,返回,5.6.2分支程序设计,分支程序结构也称条件结构,通常是在两种或两个以上的不同的操作中选择其中的一个,如下图所示:分支是通过条件转移指令来实现的。分支结构有一个共同点:运行方向总是向前的。IP受标志位的影响而跳变,影响标志的指令CMP、TEST、JXX,条件,S1,S2,条件,S,S1,S2,Sn,条件,N,N,Y,Y,两路分支程序设计,例4用比较指令和条件转移指令实现两路分支的程序段。MOVAX,M;假定M和N为有符号数MOVBX,NCMPAX,BX;比较M和N的大小,影响标志位,准备条件JGNEXT;MN时转移,注意若M、N为无符号数时用JA指令;分支程序2JMPDONENEXT:;分支程序1DONE:RET,例5现有一符号函数:1当X0时Y=0当X=0时-1当X0时假定X为-25,且存放在VARX单元中,函数值Y存放在VARY单元,试编写程序根据X的值确定函数Y的值。根据题意画出流程图如下:,实现符号函数程序的流程图,开始,ALX,AL0?,Y-1,结束,AL0,Y1,Y0,Y,Y,N,N,编写程序如下:DSEGSEGMENTVARXDB-25VARYDB?DSEGENDSCSEGSEGMENTASSUMECS:CSEG,DS:DSEGSTART:MOVAX,DSEGMOVDS,AXMOVAL,VARXCMPAL,0JGENEXTMOVAL,-1JMPHALT,NEXT:JEHALTMOVAL,1HALT:MOVVARY,ALMOVAH,4CHINT21HCODEENDSENDSTART,例6已知X是单字节带符号数,请设计计算下列表达式的程序。Y=,例6已知X是单字节带符号数,请设计计算下列表达式的程序。Y=程序如下:DATASEGMENTXDB?YDB?DATAENDSCODESEGMENT;代码段START:PROCFARASSUMECS:CODE,DS:DATAMOVAX,0,MOVAX,DATA;初始化DSMOVDS,AXMOVAL,X;取数XCMPAL,0;准备条件JNSPLUS;X0则转移NEGAL;X0则求补JMPDONEPLUS:ADDAL,20;X0时,X+20DONE:MOVY,AL;计算结果送YRET;返回STARTENDPCODEENDSENDSTART;汇编结束,分支结构程序设计的关键在于准确地知道操作结果影响的标志位状态和正确地使用条件转移指令。根据对条件的判断而选择不同的处理方法是人的基本智能体现。例:设内存中有三个互不相等的无符号字数据,分别是放在ARG开始的字单元,编制程序将其中最大值存入MAX单元。分析:求三个无符号数中的最大值,只要把三个数据两两比较,用JA/JNB/JNA/JC等指令就可判断两数的大小,从而选出其中最大值。源程序如下:SSEGSEGMENTSTACKSTKDB20DUP(0)SSEGENDS,DSEGSEGMENTARGDW7138H,84A6H,29EHMAXDW?DESGENDSCSEGSEGMENTASSUMECS:CSEG,DS:DSEG,SS:SSEGFMAX:MOVAX,DSEGMOVDS,AXMOVSS,AXMOVSP,SIZESTKLEASI,ARGMOVAX,SIMOVBX,SI+2CMPAX,BX,JAEFMAX1MOVAX,BXFMAX1:CMPAX,SI+4JAEFMAX2MOVAX,SI+4FMAX2:MOVMAX,AXMOVAH,4CHINT21HCSEGENDSENDFMAX,循环结构程序设计,循环程序一般由四个部分组成:(1)循环初值部分:这是为了保证循环程序能正常进行循环操作而必须做的准备工作。循环初值分两类:一类是循环工作部分的初值,别一类是控制循环结束条件的初值。(2)工作部分:即需要重复执行的程序段。这是循环的中心,称之为循环体。(3)修改部分:按一定规律修改操作数地址及控制变量,以便每次执行循环体时得到新的数据。(4)控制部分:用来保证循环程序按规定的次数或特写条件正常循环。,例题,例7把从BUF单元开始的80个16位无符号数按从大到小的顺序排列。,例题,例4-26把从BUF单元开始的80个16位无符号数按从大到小的顺序排列。,DSEGSEGMENTBUFDW80DUP(?)DSEGENDSCSEGSEGMENTASSUMECS:CSEG,DS:DSEGSTART:MOVAX,DSE

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论