选修程序设计的基本方法课件高中信息技术

上传人:沈*** 文档编号:133965867 上传时间:2022-08-11 格式:PPT 页数:22 大小:485KB
返回 下载 相关 举报
选修程序设计的基本方法课件高中信息技术_第1页
第1页 / 共22页
选修程序设计的基本方法课件高中信息技术_第2页
第2页 / 共22页
选修程序设计的基本方法课件高中信息技术_第3页
第3页 / 共22页
点击查看更多>>
资源描述
5.6 汇编语言程序设计的基本方法汇编语言程序设计的基本方法通常通常,编制一个汇编语言源程序应按如下步骤进编制一个汇编语言源程序应按如下步骤进行行:明确任务明确任务,确定算法。确定算法。绘制流程图绘制流程图(包括确定内存单元和分配寄存包括确定内存单元和分配寄存器器)。根据流程图编写汇编语言程序。根据流程图编写汇编语言程序。上机调试程序。上机调试程序。程序的基本结构有四种:顺序结构、分支结构、程序的基本结构有四种:顺序结构、分支结构、循环结构和子程序结构。循环结构和子程序结构。5.6.1 顺序程序设计顺序程序设计顺序结构也称线性结构,其特顺序结构也称线性结构,其特点是其中的语句或结构被连续执行。点是其中的语句或结构被连续执行。顺序程序是最简单的,也是最顺序程序是最简单的,也是最基本的一种程序结构。基本的一种程序结构。这种结构的这种结构的程序从开始到结尾一直是顺序执行程序从开始到结尾一直是顺序执行的,中途没有任何分支的,中途没有任何分支。从这种结。从这种结构的流程图来看,除了有一个起始构的流程图来看,除了有一个起始框,一个终止框外,就是若干执行框,一个终止框外,就是若干执行框,没有判断框。指令指针框,没有判断框。指令指针IP值线值线形增加,形增加,IP=IP+1S1S2S3开始结束例例1求两个数的平均值。这两个数分别存放在求两个数的平均值。这两个数分别存放在X单元和单元和Y单元中,而平均值放在单元中,而平均值放在Z单元中。源程序编制单元中。源程序编制如下如下:DATA SEGMENTX DB 8CHY DB 64H ;赋予初值赋予初值ZDB?;分配存储空间分配存储空间DATA ENDSSTACKSEGMENTDW 20H DUP(0);给堆栈段分配一个给堆栈段分配一个TOP LABLE WORD ;据区共据区共32个字,每个个字,每个STACKENDS ;字的内容均为字的内容均为0CODESEGMENTMAIN PROC FAR;定义子程序名为MAIN,类型FAR ASSUME CS:CODE ;把段寄存器和 ASSUME DS:DATA ;段名对应起来 ASSUME SS:STACKSTART:PUSH DSMOV AX,0PUSH AXMOV AX,DATA;给数据段赋初值MOV DS,AXMOV AX,STACKMOV SS,AXMOV SP,OFFSET TOPMOV AL,XADD AL,Y;两数低字节相加结果送ALMOV AH,0ADC AH,0;两数高字节带进位相加SHR AX,1MOV Z,ALRETMAINENDPCODEENDSEND START 例2 编写程序,计算(W-(X*Y+Z-100)/W,其中W、X、Y、Z均为16位带符号数,计算结果的商存入AX,余数存入DX。例3 把非压缩十进制数DAT1转换为压缩十进制数第5章 汇编语言程序设计 金手指考试网 http:/ 科目四元贝驾考网 http:/ 科目一科目四仿真考试题C1Grammar 例2编写程序,计算(W-(X*Y+Z-100)/W,其中W、X、Y、Z均为16位带符号数,计算结果的商存入AX,余数存入DX。DATA SEGMENTW DW 268X DW 73Y DW 48Z DW 85DATA ENDSSTACK SEGMENT DW 100 DUP(?)STACK ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACKSTART:MOV AX,DATA MOV DS,AX MOV AX,X ;计算X*Y IMUL Y MOV CX,AX ;用CX存储结果低位MOV BX,DX ;用BX存储结果高位 MOV AX,Z ;计算X*Y+Zl CWDl ADD CX,AXl ADC BX,DXl SUB CX,100l SBB BX,0l MOV AX,Wl CWD l SUB AX,CXl SBB DX,BXl IDIV Wl MOV AH,4CHl INT 21Hl CODE ENDSl END START例3 把非压缩十进制数DAT1转换为压缩十进制数。STACK 64H DATA DAT1 DW 0908H ;非压缩十进制数0908H CODE BEGIN:MOV AX,DATA MOV DS,AX MOV AX,DAT1 ;AX0908H MOV CL,4 ;CL 4 SAL AH,CL ;09字节左移4位,AH=90H ROL AX,CL ;9008H字循环左移4位,AX=0089H ROL AL,CL ;89字节循环左移4位,AL=98H MOV BYTE PTR DAT1,AL ;DAT198H,压缩十进制数98H MOV AH,4CH ;返回DOS INT 21H END BEGIN 返返 回回5.6.2 分支程序设计分支程序设计分支程序结构也称条件结构,通常是在两种或两分支程序结构也称条件结构,通常是在两种或两个以上的不同的操作中选择其中的一个,如下图所示:个以上的不同的操作中选择其中的一个,如下图所示:分支是通过条件转移指令来实现的。分支结构有分支是通过条件转移指令来实现的。分支结构有一个共同点:运行方向总是向前的一个共同点:运行方向总是向前的。IP受标志位的影受标志位的影响而跳变,影响标志的指令响而跳变,影响标志的指令CMP、TEST、JXX条件S1S2条件SS1S2Sn条件NNYY两路分支程序设计 例4用比较指令和条件转移指令实现两路分支的程序段。MOV AX,M ;假定M和N为有符号数 MOV BX,N CMP AX,BX ;比较 M和N的大小,影响标志位,准备条件 JG NEXT ;MN时转移,注意若M、N为无符号数时用JA指令 ;分支程序2 JMP DONE NEXT:;分支程序1 DONE:RET例5 现有一符号函数:1 当X0时Y=0 当X=0时 -1 当X0时假定X为-25,且存放在VARX单元中,函数值Y存放在VARY单元,试编写程序根据X的值确定函数Y的值。根据题意画出流程图如下:实现符号函数程序的流程图开始ALXAL0?Y-1结束AL0Y1Y0YYNN编写程序如下:DSEGSEGMENTVARX DB -25VARY DB?DSEGENDSCSEGSEGMENTASSUME CS:CSEG,DS:DSEGSTART:MOV AX,DSEGMOV DS,AXMOV AL,VARXCMP AL,0JGE NEXTMOV AL,-1JMP HALTNEXT:JE HALTMOV AL,1HALT:MOV VARY,AL MOV AH,4CHINT 21HCODEENDSEND START 例 6 已知X是单字节带符号数,请设计计算下列表达式的程序。Y=X+20 (X0)|X|(X0)例 6 已知X是单字节带符号数,请设计计算下列表达式的程序。Y=程序如下:DATA SEGMENT X DB?Y DB?DATA ENDS CODE SEGMENT ;代码段 START:PROC FAR ASSUME CS:CODE,DS:DATA MOV AX,0 X+20 (X0)|X|(X0)l MOV AX,DATA ;初始化DSl MOV DS,AXl MOV AL,X ;取数Xl CMP AL,0 ;准备条件l JNS PLUS ;X0则转移l NEG AL ;X0则求补l JMP DONElPLUS:ADD AL,20 ;X0时,X+20lDONE:MOV Y,AL ;计算结果送Yl RET ;返回lSTART ENDPlCODE ENDSl END START ;汇编结束分支结构程序设计的关键在于准确地知道操作结果影响分支结构程序设计的关键在于准确地知道操作结果影响的标志位状态和正确地使用条件转移指令。根据对条件的标志位状态和正确地使用条件转移指令。根据对条件的判断而选择不同的处理方法是人的基本智能体现。的判断而选择不同的处理方法是人的基本智能体现。例例:设内存中有三个互不相等的无符号字数据,分别:设内存中有三个互不相等的无符号字数据,分别是放在是放在ARG开始的字单元,编制程序将其中最大值存开始的字单元,编制程序将其中最大值存入入MAX单元。单元。分析:求三个无符号数中的最大值,只要把三个数据两分析:求三个无符号数中的最大值,只要把三个数据两两比较,用两比较,用JA/JNB/JNA/JC等指令就可判断两数的大小,等指令就可判断两数的大小,从而选出其中最大值。从而选出其中最大值。源程序如下:源程序如下:SSEG SEGMENT STACK STK DB 20 DUP(0)SSEG ENDS DSEG SEGMENTARG DW 7138H,84A6H,29EHMAX DW?DESG ENDSCSEG SEGMENT ASSUME CS:CSEG,DS:DSEG,SS:SSEGFMAX:MOV AX,DSEG MOV DS,AX MOV SS,AX MOV SP,SIZE STK LEA SI,ARG MOV AX,SI MOV BX,SI+2 CMP AX,BX循环结构程序设计循环体图图2先判断后执行循环结构先判断后执行循环结构循环初始化NY循环控制部分循环初始化循环体N循环控制部分Y图图1 先执行后判断循环结构先执行后判断循环结构循环程序一般由四个部分组成:循环程序一般由四个部分组成:(1)循环初值部分:这是为了保证循环程序能正常进)循环初值部分:这是为了保证循环程序能正常进行循环操作而必须做的准备工作。循环初值分两类:一行循环操作而必须做的准备工作。循环初值分两类:一类是循环工作部分的初值,别一类是控制循环结束条件类是循环工作部分的初值,别一类是控制循环结束条件的初值。的初值。(2)工作部分:即需要重复执行的程序段。这是循环)工作部分:即需要重复执行的程序段。这是循环的中心,称之为循环体。的中心,称之为循环体。(3)修改部分:按一定规律修改操作数地址及控制变)修改部分:按一定规律修改操作数地址及控制变量,以便每次执行循环体时得到新的数据。量,以便每次执行循环体时得到新的数据。(4)控制部分:用来保证循环程序按规定的次数或特)控制部分:用来保证循环程序按规定的次数或特写条件正常循环。写条件正常循环。例题 例7 把从BUF单元开始的80个16位无符号数按从大到小的顺序排列。
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!