版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
5.6汇编语言程序设计的基本方法通常,编制一个汇编语言源程序应按如下步骤进行:⑴明确任务,确定算法。⑵绘制流程图(包括确定内存单元和分配寄存器)。⑶根据流程图编写汇编语言程序。⑷上机调试程序。程序的基本结构有四种:顺序结构、分支结构、循环结构和子程序结构。8086汇编语言程序设计的基本方法全文共23页,当前为第1页。5.6.1顺序程序设计顺序结构也称线性结构,其特点是其中的语句或结构被连续执行。顺序程序是最简单的,也是最基本的一种程序结构。这种结构的程序从开始到结尾一直是顺序执行的,中途没有任何分支。从这种结构的流程图来看,除了有一个起始框,一个终止框外,就是若干执行框,没有判断框。指令指针IP值线形增加,IP=IP+1S1S2S3开始结束8086汇编语言程序设计的基本方法全文共23页,当前为第2页。[例1]求两个数的平均值。这两个数分别存放在X单元和Y单元中,而平均值放在Z单元中。源程序编制如下:DATASEGMENT X DB8CH Y DB64H;赋予初值
Z DB?;分配存储空间DATAENDSSTACK SEGMENT DW20HDUP(0);给堆栈段分配一个
TOP LABLEWORD;据区共32个字,每个STACK ENDS;字的内容均为08086汇编语言程序设计的基本方法全文共23页,当前为第3页。CODE SEGMENT MAIN PROCFAR;定义子程序名为MAIN,类型FAR ASSUMECS:CODE;把段寄存器和
ASSUMEDS:DATA;段名对应起来
ASSUMESS:STACK START: PUSHDS MOVAX,0 PUSHAX MOVAX,DATA;给数据段赋初值
MOVDS,AX MOVAX,STACK MOVSS,AX MOVSP,OFFSETTOP8086汇编语言程序设计的基本方法全文共23页,当前为第4页。
MOVAL,X ADDAL,Y;两数低字节相加结果送AL MOVAH,0 ADCAH,0;两数高字节带进位相加
SHRAX,1 MOVZ,AL RET MAIN ENDP CODE ENDS END START8086汇编语言程序设计的基本方法全文共23页,当前为第5页。例2编写程序,计算(W-(X*Y+Z-100))/W,其中W、X、Y、Z均为16位带符号数,计算结果的商存入AX,余数存入DX。例3把非压缩十进制数DAT1转换为压缩十进制数8086汇编语言程序设计的基本方法全文共23页,当前为第6页。例2编写程序,计算(W-(X*Y+Z-100))/W,其中W、X、Y、Z均为16位带符号数,计算结果的商存入AX,余数存入DX。DATASEGMENTWDW268XDW–73YDW48ZDW–85DATAENDSSTACKSEGMENTDW100DUP(?)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,4CHINT21HCODEENDSENDSTART8086汇编语言程序设计的基本方法全文共23页,当前为第7页。例3把非压缩十进制数DAT1转换为压缩十进制数。
·STACK64H·DATADAT1DW0908H;非压缩十进制数0908H·CODE BEGIN:MOVAX,@DATAMOVDS,AX MOVAX,DAT1;AX←0908HMOVCL,4;CL←4SALAH,CL;09字节左移4位,AH=90HROLAX,CL
;9008H字循环左移4位,AX=0089HROLAL,CL;89字节循环左移4位,AL=98HMOVBYTEPTRDAT1,AL
;DAT1←98H,压缩十进制数98HMOVAH,4CH;返回DOSINT21HENDBEGIN返回8086汇编语言程序设计的基本方法全文共23页,当前为第8页。5.6.2分支程序设计分支程序结构也称条件结构,通常是在两种或两个以上的不同的操作中选择其中的一个,如下图所示:分支是通过条件转移指令来实现的。分支结构有一个共同点:运行方向总是向前的。IP受标志位的影响而跳变,影响标志的指令CMP、TEST、JXX条件S1S2条件SS1S2Sn条件NNYY…8086汇编语言程序设计的基本方法全文共23页,当前为第9页。两路分支程序设计例4用比较指令和条件转移指令实现两路分支的程序段。
…MOVAX,M;假定M和N为有符号数
MOVBX,NCMPAX,BX
;比较M和N的大小,影响标志位,准备条件
JGNEXT
;M>N时转移,注意若M、N为无符号数时用JA指令
……;分支程序2JMPDONENEXT:……;分支程序1……DONE:RET8086汇编语言程序设计的基本方法全文共23页,当前为第10页。
[例5]现有一符号函数: 1当X>0时
Y=0当X=0时
-1当X<0时假定X为-25,且存放在VARX单元中,函数值Y存放在VARY单元,试编写程序根据X的值确定函数Y的值。 根据题意画出流程图如下:8086汇编语言程序设计的基本方法全文共23页,当前为第11页。实现符号函数程序的流程图开始AL←XAL≥0?Y←-1结束AL=0Y←1Y←0YYNN8086汇编语言程序设计的基本方法全文共23页,当前为第12页。编写程序如下:DSEG SEGMENT VARX DB-25 VARY DB?DSEG ENDSCSEG SEGMENT ASSUMECS:CSEG,DS:DSEG START: MOVAX,DSEG MOVDS,AX MOVAL,VARX CMPAL,0 JGE NEXT MOVAL,-1 JMPHALT 8086汇编语言程序设计的基本方法全文共23页,当前为第13页。 NEXT: JEHALT MOVAL,1 HALT: MOVVARY,ALMOVAH,4CH INT21HCODE ENDS ENDSTART8086汇编语言程序设计的基本方法全文共23页,当前为第14页。例6已知X是单字节带符号数,请设计计算下列表达式的程序。Y= X+20(X≥0)|X|(X<0)8086汇编语言程序设计的基本方法全文共23页,当前为第15页。例6已知X是单字节带符号数,请设计计算下列表达式的程序。Y= 程序如下:DATASEGMENTXDB?YDB?DATAENDSCODESEGMENT;代码段START:PROCFARASSUMECS:CODE,DS:DATAMOVAX,0
X+20(X≥0)|X|(X<0)MOVAX,DATA;初始化DSMOVDS,AXMOVAL,X;取数XCMPAL,0;准备条件
JNSPLUS;X≥0则转移
NEGAL;X<0则求补
JMPDONEPLUS:ADDAL,20;X≥0时,X+20DONE:MOVY,AL;计算结果送YRET;返回STARTENDPCODEENDSENDSTART;汇编结束8086汇编语言程序设计的基本方法全文共23页,当前为第16页。分支结构程序设计的关键在于准确地知道操作结果影响的标志位状态和正确地使用条件转移指令。根据对条件的判断而选择不同的处理方法是人的基本智能体现。[例]:设内存中有三个互不相等的无符号字数据,分别是放在ARG开始的字单元,编制程序将其中最大值存入MAX单元。分析:求三个无符号数中的最大值,只要把三个数据两两比较,用JA/JNB/JNA/JC等指令就可判断两数的大小,从而选出其中最大值。源程序如下:SSEGSEGMENTSTACKSTKDB20DUP(0)SSEGENDS8086汇编语言程序设计的基本方法全文共23页,当前为第17页。DSEGSEGMENTARGDW7138H,84A6H,29EHMAXDW?DESGENDSCSEGSEGMENTASSUMECS:CSEG,DS:DSEG,SS:SSEGFMAX:MOVAX,DSEGMOVDS,AXMOVSS,AXMOVSP,SIZESTKLEASI,ARGMOVAX,[SI]MOVBX,[SI+2]CMPAX,BX8086汇编语言程序设计的基本方法全文共23页,当前为第18页。JAEFMAX1MOVAX,BXFMAX1:CMPAX,[SI+4]JAEFMAX2MOVAX,[SI+4]FMAX2:MOVMAX,AXMOVAH,4CHINT21HCSEGENDSENDFMAX8086汇编语言程序设计的基本方法全文共23页,当前为第19页。循环结构程序设计循环体图2先判断后执行循环结构循环初始化NY循环控制部分循环初始化循环体N循环控制部分Y图1先执行后判断循环结构8086汇编语言程序设计的基本方法全文共23页,当前为第20页。循环程序一般由四个部分组成:(1)循环初值部分:这是为了保证循环程序能正常进行循环操作而必须做的准备工作。循环初值分两类:一类是循环工作部分的初值,别一类是控制循环结束条件的初值。(2)工作部分:即需要重复执行的程序段。这是循环的中心,称之为循环体。(3)修改部分:按一定规律修改操作数地址及控制变量,以便每次执行循环体时得到新的数据。(4)控制部分:用来保证循环程序按规定的次数或特写条件正常循环。8086汇编语言程序设计的基本方法全文共23页,当前为第21页。例题例7把从BUF单元开始的80个16位无符号数按从大到小的顺
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 厨房总监聘用合同范例
- 出售豪宅名单合同模板
- 房产买卖抵押合同模板
- 定制门窗合同范例写
- 多人投资入股合同范例
- 会计活动与合同模板
- 合同范例由构成
- 居民搬家维修合同范例
- 废钢筋收购合同范例
- 外包电气合同模板
- 藏族民间舞-热巴舞智慧树知到期末考试答案章节答案2024年西藏大学
- 华东师大版(2024年新教材)七年级上册数学第3章《图形的初步认识》综合素质评价试卷(含答案)
- 五年(2020-2024)高考语文真题分类汇编(全国)专题02 信息类文本阅读(非连续性)(教师卷)
- 雪梨产业规划专项研究报告
- 3.1DNA是主要的遗传物质课件20232024高一下学期生物人教版必修二
- 智能制造(智改数转)架构设计解决方案
- 教学病例讨论模板
- 林业工程竣工报告
- 从偏差行为到卓越一生3.0版
- 失血性休克患者的麻醉处理
- 2024网站渗透测试报告
评论
0/150
提交评论