西安交大汇编实验报告1.docx

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
西安交大汇编实验报告1

汇编语言专题实验报告 计算机41 2140505021 杨祚儒 80X86汇编语言程序设计课内实验报告 班级计算机41实验时间2016年4月4日姓名杨祚儒学号2140505021 实验内容概述实验一: 熟悉汇编语言实验环境: 在书上的例题或者习题所给的程序范例中任选 2~3 道,练习编译调试,包括: masm, link, debug 的过程; 实验二: 循环程序设计及分支程序设计 循环程序设计 完成练习中 5.15 题。 数据段中已定义了一个有 n 个字数据的数组 M,试编写一程序求出 M 中绝对值最大的数,把它放在数据段的 M+2n 单元中,并将该数的偏移地址存放在M+2(n+1)单元中。 在开始的时候我们可以先定义两个变量DATA和ADDR用来记录最大数的值和地址,然后我们可以在程序的开始就指定几个数让程序进行比较,在我的程序中我选择了1,2,3自然需要比较的数的数量就是3,这个3是我们在程序开始时要赋给一个变量n的,在后面要赋给AX来让CPU知道循环的次数。 要进行绝对值大小的比较,就存在将负数化为正数的过程,需要将这个数和0进行比较,如果大于0就是它,小于0的话就要取相反数。 还有就是有一个挑选最大值的过程,从第一个数开始我们需要找出一个数将他存入AX中,然后不断地取下一个数和她进行比较,如果下一个数比他大的话就将下一个数的值赋给她,如果小于就继续循环。 实验步骤实验一: 源代码: DSEG SEGMENT n EQU 3H //假设n=3H M DW 1,2,3 //对三个变量进行初始化 DATA DW ? //DATA为需要找到的最大值,因为不知道所以定义为? //且在第M+2n单元 ADDR DW ? //ADDR是需要找的最大值的偏移地址,且在第M+2(n+1) DSEG ENDS CSEG SEGMENT MAIN PROC FAR //系统把主程序当作DOS调用的一个子程序 //DOS内核与主程序不是在同一个段地址内 ASSUME CS: CSEG, DS: DSEG START: PUSH DS //设置返回DOS SUB AX, AX PUSH AX MOV AX, DSEG //把数据段存储地址DSEG传给DSMOV DS BEGIN: MOV CX, n //循环计数器,将开始时设置的n值给CX LEA DI, M //装载有效地址,也是第一个数的地址 MOV AX, [DI] //取第一个数 MOV ADDR, DI //记下第一个数绝对值最大的数的地址 CMP AX, 0 //此数是正数吗? JNS ZHEN //是正数,即为绝对值,转去判断下一个数 NEG AX //不是正数,取负,即变为其绝对值 ZHEN: MOV BX, [DI] CMP BX, 0 JNS COMP NEG BX //不是正数,变为其绝对值 COMP: CMP AX, BX //判断绝对值大小 JAE ADDRESS MOV AX, BX //若(AX)(BX),使(AX)中为绝对值最大的数 MOV ADDR, DI //记下绝对值最大的数的地址 ADDRESS: ADD DI, 2 //DI作为地址加二来比较下一个数 LOOP ZHEN MOV DATA, AX //已经得到最大数,记下此数,放到DATA中 INT 3 RET MAIN ENDP CSEG ENDS END START 利用MASM5进行编译,成功生成相应的OBJ文件,没有报错(如图一所示) 图一

文档评论(0)

yan698698 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档