




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第5章 汇编语言程序设计 5.6 汇编语言程序设计的基本方法汇编语言程序设计的基本方法通常通常, ,编制一个汇编语言源程序应按如下步骤进编制一个汇编语言源程序应按如下步骤进行行: : 明确任务明确任务, ,确定算法。确定算法。 绘制流程图绘制流程图( (包括确定内存单元和分配寄存包括确定内存单元和分配寄存器器) )。 根据流程图编写汇编语言程序。根据流程图编写汇编语言程序。 上机调试程序。上机调试程序。程序的基本结构有四种:顺序结构、分支结构、程序的基本结构有四种:顺序结构、分支结构、循环结构和子程序结构。循环结构和子程序结构。第5章 汇编语言程序设计 5.6.1 顺序程序设计顺序程序设计顺序
2、结构也称线性结构,其特顺序结构也称线性结构,其特点是其中的语句或结构被连续执行。点是其中的语句或结构被连续执行。顺序程序是最简单的,也是最顺序程序是最简单的,也是最基本的一种程序结构。这种结构的基本的一种程序结构。这种结构的程序从开始到结尾一直是顺序执行程序从开始到结尾一直是顺序执行的,中途没有任何分支。从这种结的,中途没有任何分支。从这种结构的流程图来看,除了有一个起始构的流程图来看,除了有一个起始框,一个终止框外,就是若干执行框,一个终止框外,就是若干执行框,没有判断框。指令指针框,没有判断框。指令指针IP值线值线形增加,形增加,IP=IP+1S1S2S3开场完毕第5章 汇编语言程序设计
3、例例1求两个数的平均值。这两个数分别存放在求两个数的平均值。这两个数分别存放在X单元和单元和Y单元中,而平均值放在单元中,而平均值放在Z单元中。源程序编制单元中。源程序编制如下如下:DATA SEGMENTX DB 8CHY DB 64H ;赋予初值赋予初值ZDB ? ;分配存储空间分配存储空间DATA ENDSSTACKSEGMENTDW 20H DUP(0) ;给堆栈段分配一个给堆栈段分配一个TOP LABLE WORD ;据区共据区共32个字,每个字,每个个STACKENDS ;字的内容均为字的内容均为0第5章 汇编语言程序设计 CODESEGMENTMAIN PROC FAR ;定义子
4、程序名为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 TOP第5章 汇编语言程序设计 MOV AL, XADD AL, Y ;两数低字节相加结果送ALMOV AH, 0ADC AH, 0 ;两数高字节带进位相加SHR AX, 1MOV Z, ALRETMAINENDPCODEENDSEND START第5
5、章 汇编语言程序设计 例2 编写程序,计算(W-(X*Y+Z-100)/W,其中W、X、Y、Z均为16位带符号数,计算结果的商存入AX,余数存入DX。 例3 把非压缩十进制数DAT1转换为压缩十进制数第5章 汇编语言程序设计 例2编写程序,计算(W-(X*Y+Z-100)/W,其中W、X、Y、Z均为16位带符号数,计算结果的商存入AX,余数存入DX。 DATA SEGMENT W DW 268 X DW 73 Y DW 48 Z DW 85 DATA ENDS STACK SEGMENT DW 100 DUP(?) STACK ENDS CODE SEGMENT ASSUME CS:CODE,
6、DS:DATA,SS:STACK START: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第5章 汇编语言程序设计 例3 把非压缩十进制数DAT1转换为压缩十进
7、制数。 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章 汇编语言程序设计
8、5.6.2 分支程序设计分支程序设计分支程序结构也称条件结构,通常是在两种或两分支程序结构也称条件结构,通常是在两种或两个以上的不同的操作中选择其中的一个,如下图所示:个以上的不同的操作中选择其中的一个,如下图所示:分支是通过条件转移指令来实现的。分支结构有分支是通过条件转移指令来实现的。分支结构有一个共同点:运行方向总是向前的。一个共同点:运行方向总是向前的。IP受标志位的影受标志位的影响而跳变,影响标志的指令响而跳变,影响标志的指令CMP、TEST、JXX条件S1S2条件SS1S2Sn条件NNYY第5章 汇编语言程序设计 两路分支程序设计 例4用比较指令和条件转移指令实现两路分支的程序段。
9、 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章 汇编语言程序设计 例5 现有一符号函数:1 当X0时Y= 0 当X=0时 -1 当X0时假定X为-25,且存放在VARX单元中,函数值Y存放在VARY单元,试编写程序根据X的值确定函数Y的值。根据题意画出流程图如下:第5章 汇编语言程序设计 实现符号函数程序的流程图开场ALXAL0?Y-1完毕AL0Y1Y0YYNN第5章 汇
10、编语言程序设计 编写程序如下:DSEG SEGMENTVARX DB -25VARY DB ?DSEG ENDSCSEG SEGMENTASSUME CS:CSEG,DS:DSEGSTART:MOV AX, DSEGMOV DS, AXMOV AL, VARXCMP AL, 0JGE NEXTMOV AL, -1JMP HALT第5章 汇编语言程序设计 NEXT:JE HALTMOV AL, 1HALT:MOV VARY, AL MOV AH, 4CHINT 21HCODEENDSEND START第5章 汇编语言程序设计 例 6 已知X是单字节带符号数,请设计计算下列表达式的程序。 Y= X
11、+20 (X0)|X| (X0)第5章 汇编语言程序设计 例 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) MOV AX,DATA ;初始化DS MOV DS,AX MOV AL,X ;取数X CMP AL,0 ;准备条件 JNS PLUS ;X0则转移 NEG AL ;X0则求补 JMP DONEPLUS: ADD AL,20
12、 ;X0时,X+20DONE: MOV Y,AL ;计算结果送Y RET ;返回START ENDPCODE ENDS END START ;汇编结束第5章 汇编语言程序设计 分支结构程序设计的关键在于准确地知道操作结果影响分支结构程序设计的关键在于准确地知道操作结果影响的标志位状态和正确地使用条件转移指令。根据对条件的标志位状态和正确地使用条件转移指令。根据对条件的判断而选择不同的处理方法是人的基本智能体现。的判断而选择不同的处理方法是人的基本智能体现。例例:设内存中有三个互不相等的无符号字数据,分别:设内存中有三个互不相等的无符号字数据,分别是放在是放在ARG开始的字单元,编制程序将其中最
13、大值存开始的字单元,编制程序将其中最大值存入入MAX单元。单元。分析:求三个无符号数中的最大值,只要把三个数据两分析:求三个无符号数中的最大值,只要把三个数据两两比较,用两比较,用JA/JNB/JNA/JC等指令就可判断两数的大小,等指令就可判断两数的大小,从而选出其中最大值。从而选出其中最大值。源程序如下:源程序如下:SSEG SEGMENT STACK STK DB 20 DUP (0)SSEG ENDS 第5章 汇编语言程序设计 DSEG SEGMENTARG DW 7138H,84A6H,29EHMAX DW ?DESG ENDSCSEG SEGMENT ASSUME CS:CSEG,
14、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第5章 汇编语言程序设计 JAE FMAX1MOV AX, BXFMAX1 : CMP AX,SI+4JAE FMAX2 MOV AX,SI+4FMAX2 : MOV MAX,AXMOV AH,4CHINT 21HCSEG ENDS END FMAX第5章 汇编语言程序设计 循环结构程序设计循环体图图2先判断后执行循环结构先判断后执行循环结构循环初始化NY循环控制部分
15、循环初始化循环体N循环控制部分Y图图1 先执行后判断循环结构先执行后判断循环结构第5章 汇编语言程序设计 循环程序一般由四个部分组成:循环程序一般由四个部分组成:(1循环初值部分:这是为了保证循环程序能正常进循环初值部分:这是为了保证循环程序能正常进行循环操作而必须做的准备工作。循环初值分两类:一行循环操作而必须做的准备工作。循环初值分两类:一类是循环工作部分的初值,别一类是控制循环结束条件类是循环工作部分的初值,别一类是控制循环结束条件的初值。的初值。(2工作部分:即需要重复执行的程序段。这是循环工作部分:即需要重复执行的程序段。这是循环的中心,称之为循环体。的中心,称之为循环体。(3修改部
16、分:按一定规律修改操作数地址及控制变修改部分:按一定规律修改操作数地址及控制变量,以便每次执行循环体时得到新的数据。量,以便每次执行循环体时得到新的数据。(4控制部分:用来保证循环程序按规定的次数或特控制部分:用来保证循环程序按规定的次数或特写条件正常循环。写条件正常循环。 第5章 汇编语言程序设计 例题 例7 把从BUF单元开始的80个16位无符号数按从大到小的顺序排列。第5章 汇编语言程序设计 例题 例4-26 把从BUF单元开始的80个16位无符号数按从大到小的顺序排列。l DSEG SEGMENTl BUF DW 80 DUP(?) l DSEG ENDSl CSEG SEGMENTl ASSUME CS:CSEG,DS:D
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《提高经济统计学中定性数据处理方法的有效性》论文
- 体育旅游中的消费者满意度提升策略论文
- 《绿豆质量与种植环境的关系研究》论文
- 2025-2030全球及中国洗手液和肥皂行业市场现状供需分析及市场深度研究发展前景及规划可行性分析研究报告
- 冰岛语中的形容词比较级研究论文
- 2025-2030全球及中国水性UV涂料体系行业市场现状供需分析及市场深度研究发展前景及规划可行性分析研究报告
- 智能体育与健康管理的融合研究论文
- 2025-2030全球及中国下一代移动回程网络行业市场现状供需分析及市场深度研究发展前景及规划可行性分析研究报告
- 2025-2030儿童洗衣液市场发展分析及行业投资战略研究报告
- 2025年烘焙师职业资格考试真题卷:烘焙师职业技能培训效果评估与持续改进策略试题
- GB/T 39766-2021人类生物样本库管理规范
- 315食品安全宣传PPT模板
- GB/T 20145-2006灯和灯系统的光生物安全性
- GB 21519-2008储水式电热水器能效限定值及能效等级
- 2023年陕西省学业水平考试物理试真题答案无
- 运输供应商年度评价表
- 旅游项目融投资概述
- 全旅馆业前台从业人员资格证考试答案解析
- 十二经络及腧穴课件
- 立式圆筒形储罐罐底真空试验记录
- 公司新员工入职登记表(模板)
评论
0/150
提交评论