




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025届河北省永年县一中高一物理第二学期期末监测模拟试题含解析
- 教育技术应用与文化传承的关系研究
- 教育技术中的专利申请与风险规避
- 2025届江西省丰城二中高二物理第二学期期末预测试题含解析
- 2025届广东省广州市番禺区禺山高级中学物理高一下期末调研模拟试题含解析
- 探索教育游戏化如何影响孩子的情绪认知能力
- 教育技术项目的投资规划与风险控制
- 福建省师范大学附中2025年高一物理第二学期期末考试试题含解析
- 医疗培训中融入教育心理学的效果评估
- 技术如何塑造现代办公模式
- 《中国特色社会主义理论体系的形成和发展》(课件)
- 职业技术学院婴幼儿托育服务与管理专业人才培养方案
- 2025台州市椒江区辅警考试试卷真题
- 中学生零食消费情况调查与分析
- 国开本科《管理英语4》机考总题库及答案
- 软装行业竞品分析报告
- 公司收购公司协议书
- 基于移动端的互联网金融服务创新研究
- T∕CACM 024-2017 中医临床实践指南 穴位埋线减肥
- GB 45189-2025氰化物安全生产管理规范
- 新科粤版九年级上册初中化学全册课前预习单
评论
0/150
提交评论