




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
3.1 汇编语言程序设计 顺序结构程序简单程序结构 无分支、无循环、无转移程序。流程图的特点,表现为只有起始、终止框、 说明处理框,而无判断框。 例、用字节加法,对两个16位数做加法运算。这两个数从 地址0050H开绐连续存放。 程序清单如下: MOVAX,DATA MOV DS,AX MOVSI,0050H;被加数指针 MOVDI,0052H;加数指针 MOVBX,0054H;和的指针 MOVAL,SI ;取被加数低8位 ADDAL,DI ;低位相加 MOVAH,SI+1;取被加数高8位 ADCAH,DI+1;高位相加 MOVBX,AX;保存运算结果 INT 20H;结束 起 始 终 止 保存运算结果 AH=高8位相加 AH=被加数高8位 AL=低8位相加 AL=被加数低8位 SI=50H,DI=52H,BX=54H DS=3000H 数据段定义为 : DATA SEGMENT ORG 0050H DB 34H DB 12H DB 78H DB 56H DB 2 DUP(?) DATA ENDS 如数据段定义为: DATA SEGMENT ORG 0050H DW 1234H DW 5678H DW ? DATA ENDS 程序也可改为: MOVAX,DATA MOV DS,AX MOVSI,0050H;被加数指针 ;MOVDI,0052H;加数指针 MOVBX,0054H;和的指针 MOVAX,SI;取被加数低8位 ADDAX,DI;低位相加 MOVBX,AX;保存运算结果 INT 20H;结束 3.1 汇编语言程序设计 例、编写计算f=(V-(X*Y+Z-500)/X的程序。X、Y、Z、V均为有符号16 位二进制数。 DATASEGMENT X DW 0100H Y DW 01ABH Z DW -2100H V DW 6200H F DW ?, ? DATAENDS CODESEGMENT ASSUME CS:CODE, DS:DATA START:MOV AX,DATA MOVDS,AX MOVAX,X IMULY ;DX:AX=X*Y ADDAX,Z ADCDX,0 ;DX:AX=X*Y+Z SUBAX,500H SBBDX,0 ;DX:AX=( ) 此处注意进位和借位的处理方法。 MOV BX,AX MOV CX,DX ;保存中间结果 MOVAX,V CWD;DX:AX=V SUBAX,BX SBBDX,CX ;DX:AX=(V-( ) IDIVX MOVAH, 4CH INT21H CODEENDS END START MOVF,AX ;保存商 MOVF+2,DX ;保存余数 3.1 汇编语言程序设计 分支结构程序 分支程序是利用条件转移指令,使程序执行 到某一指令后,根据运算状态标志条件是否 满足,来改变程序执行的次序。分支程序的 结构如图所示。 条件 程序段1程序段2 YN Y= 1当X0 (-128x 127) 0当X=0 -1当X0 (-128x 127) 0当X=0 -1当X0 HLT EQUL: MOV YY,AL;X=0 HLT 3.1 汇编语言程序设计 分支结构程序 例2、 求AX和BX中两无符号数之差的绝对值,结果放在内存 200H单元中。 方法1 用比较指令完成 MOV AX,300H MOV BX,302H CMPAX,BX JAAA SUBBX,AX MOV 200H,BX INT20H AA: SUBAX,BX MOV 200H,AX INT20H 分析:AX和BX的数未知。两数相减求绝对值,应先解决哪一个值稍 大些,然后再用大数减小数的方法,才可求得绝对值。 3.1 汇编语言程序设计 分支结构程序 例2、求AX和BX中两无符号数之差的绝对值,结果放在内存 200H单元中。 方法2优化上面的程序 MOVAX,300H MOVBX,302H CMPAX,BX JAAA XCHG AX,BX AA:SUBAX,BX MOV200H,AX INT20H 方法3用新的算法完成 MOVAX,300H MOVBX,302 SUBAX,BX JAAA NEGAX AA:MOV200H,AX INT20H DEBUG 不同的算法程序的质量不相同,好的数学模型往往是最 好的算法 3.1 汇编语言程序设计 分支结构程序 例3、 利用跳转表实现多重分支。 跳转表:内存中连续存放一系列的跳转地址、跳转指令组成一分支表。 DATA SEGMENT BASE DW SBRO, SBR1, SBR2, SBR3 DW SBR4, SBR5, SBR6, SBR7 BN DB 3;工序 DATA ENDS 某工厂有8种产品的加工程序R0到R7分别存放在以SBR0,SBR1,SBR7 为首地址的内存区域中,这8个首地址的偏移量连续存放在以BASE为首地址的 跳转表内,如图所示。 表地址=表基地址+偏移量。 表基地址即为跳转表的首地址,偏移量即 对应的程序人口地址在表中的地址与表基 地址的距离。 SBR0低位 SBR0高位 SBR1低位 SBR1高位 SBR2低位 BASE+0 BASE+1 BASE+2 BASE+3 BASE+4 3.1 汇编语言程序设计 分支结构程序 MAIN PROC FAR BEGIN: PUSH DS MOV AX,0 PUSH AX MOV AX, DATA MOV DS, AX MOV AL, BN MOV AH,0 ADD AL, AL MOV BX, OFFSET BASE ADD BX, AX MOV AX, BX JMP AX NEXT:RET MAINENDP SBRO: JMPNEXT SBR7: JMPNEXT NEXT: COSEG ENDS END BEGIN COSEG SEGMENT ASSUME CS: COSEG, DS: DATA DATA SEGMENT BASE DW SBRO, SBR1, SBR2, SBR3 DW SBR4, SBR5, SBR6, SBR7 BN DB 3;工序 DATA ENDS SBR0低位 SBR0高位 SBR1低位 SBR1高位 SBR2低位 BASE+0 BASE+1 BASE+2 BASE+3 BASE+4
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 基于新型分析技术的彗星大气成分研究-洞察及研究
- 油墨厂辛苯存储规章
- 英国留学方案流程咨询
- 橡胶厂销售费用管理实施办法
- 国际情报员营销方案策划
- 跨界文献融合-洞察及研究
- 学生消防安全培训报到课件
- 学生步行安全培训记录课件
- 手入室自我防护课件
- 出差旅游证明书出国旅行许可(5篇)
- 辽宁省民间信仰管理办法
- 心力衰竭健康教育
- 财务信息化系统建设-洞察阐释
- 学堂在线 新闻摄影 期末考试答案
- 统编版语文五年级上册 第一单元核心素养展示
- 校本研修教学课件
- 物业客服部日常工作
- 一例外周静脉炎的护理个案讲课件
- 慢性便秘病人护理
- 商铺意向金协议书
- (高清版)DB13∕T 5817-2023 河流(湖泊)健康评价技术规范
评论
0/150
提交评论