




已阅读5页,还剩17页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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转换为压缩十进制数 金手指考试网元贝驾考网科目一科目四仿真考试题C1 Grammar 例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 4CHINT21HCODEENDSENDSTART 例3把非压缩十进制数DAT1转换为压缩十进制数 STACK64H DATADAT1DW0908H 非压缩十进制数0908H CODEBEGIN MOVAX DATAMOVDS AXMOVAX 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 返回 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 M N时转移 注意若M N为无符号数时用JA指令 分支程序2JMPDONENEXT 分支程序1 DONE RET 例5 现有一符号函数 1当X 0时Y 0当X 0时 1当X 0时假定X为 25 且存放在VARX单元中 函数值Y存放在VARY单元 试编写程序根据X的值确定函数Y的值 根据题意画出流程图如下 实现符号函数程序的流程图 开始 AL X AL 0 Y 1 结束 AL 0 Y 1 Y 0 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 X 0则转移NEGAL X 0则求补JMPDONEPLUS ADDAL 20 X 0时 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 SI MOVBX SI 2 CMPAX BX 循环结构程序设计 循环程序一般由四个部分组成 1 循环初值部分 这是为了保证循环程序能正常进行循环操作而必须做的准备工作 循环初值分两类 一类是循环工作部分的初值 别一类
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 6S推进第二阶段考核
- 临床血液、血管及心脏等血液循环系统要点
- 商品销售与退货协议
- 学习中的挫折与成长写人记事作文11篇
- 粮储企业储备粮油紧急调运方案
- 梦想起航的演讲演讲稿话题作文9篇
- 我最心爱的一本书写物作文(13篇)
- 幼师模拟试题及答案
- 林业资源经营管理和收益分配协议
- java逻辑性面试题及答案
- 说写做一致暨工艺纪律遵守课件
- 《国家电网公司电力安全工作规程(水电厂动力部分)》(一)
- 无菌技术操作规范护理课件
- 《产能分析报告》课件
- 预算绩效评价管理机构入围投标文件(技术标)
- 珊瑚化石科普知识讲座
- 中小学德育工作指南实施手册
- (新版)职业健康综合知识竞赛题库附答案
- 人教版九年级化学下册第九单元《溶液》复习说课稿
- (新湘科版)六年级下册科学知识点
- 短视频的拍摄与剪辑
评论
0/150
提交评论