汇编实验七子程序设计.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
汇编实验七子程序设计

PAGE 1 PAGE 1 实 验 报 告 ── 学年 第 学期 实 验 课 程 汇编语言 学 生 姓 名 123 实 验 项 目 子程序设计 学 院 计算机科学技术 实 验 性 质 专业选修课 班 级 学 号 实 验 地 点 同 组 人 数 1 第 组 实 验 日 期 第 周 星期 第 节 成 绩 4 环 境 参 数 Dosbox-0.74 Masm 5.0 实验目的及要求 实验原理、实验内容 实验仪器设备及材料 操作方法与实验步骤 实验数据记录及处理 实验结果分析及讨论 一、实验目的: 1.掌握子程序设计方法。 2.掌握调用程序与子程序间参数传递的几种方法。 二、实验任务 1.编制一个子程序把一个十六位二进制数用十六进制形式在屏幕上显示出来,采用堆栈方法传递这个二进制数,并用一个主程序验证它。 源代码: DATA SEGMENT DATA ENDS STACK SEGMENT STACK DB 256 DUP(?) STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX, DATA MOV DS, AX MOV AX, STACK MOV SS, AX MOV DX,0001001000110100B ;对应十六进制为:1234H PUSH DX ;入栈 CALL DISP ;调用子程序 ADD SP,2 ;平衡堆栈 MOV AX,4C00H INT 21H DISP PROC PUSH BP MOV BP,SP ;用bp指示数据地址 PUSHF PUSH AX PUSH BX PUSH CX PUSH DX ;以上保护现场 MOV BL,2 ;字节控制 循环两次 MOV CL,4 ;移动4位 LOP: MOV DL,SS:[BP+5] SHR DL,CL CMP DL,0AH JC J1 ADD DL,7H J1: ADD DL,30H MOV AH,2 INT 21H MOV DL,SS:[BP+5] AND DL CMP DL,0AH JC J2 ADD DL,7H J2: ADD DL,30H MOV AH,2 INT 21H DEC BP DEC BL JNZ LOP POP DX POP CX POP BX POP AX POPF POP BP ;恢复现场 RET DISP ENDP CODE ENDS END START 流程图: 编译连接 MS-DOS下运行: 本实验是如何利用DEBUG进行调试的: 用debug命令打开.exe程序,使用t命令执行,主要检查地址是否取对,尤其再用堆栈传递参数时,取参数时的偏移地址增量。 说明用堆栈传送参数的过程及其具体方法: 1、将数据存入dx中,在调用子程序前压入栈顶。 PUSH DX 2、调用子程序,先将bp压入栈顶,再将sp值赋给bp。PUSH BP MOV BP,SP 3、计算参数的偏移地址,取出数据并存入dl中。 MOV DL,SS:[BP+5] 2.设有一个数组存放学生的成绩(0~100),编制一个子程序统计0~59分,60~69分, 70~79分, 80~89分,90~100分的人数,并分别存放到scoreE, scoreD, scoreC, scoreB, scoreA单元中,编写一~个主程序与之配合使用。 源代码: DATA SEGMENT score db 70,86,99,45,60,98,99,99,99,99,99,99,99,99,99,99,99,99,99;全班成绩数组 count dw 19;总人数 gradeN db 0,0,0,0,0; 对应成绩等级为A B C D E DATA ENDS STACK SEGMENT STACK db 256 dup(?) STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START: mov ax,DATA mov ds,ax mov ax,STACK mov ss,ax mov bx,offset score mov cx,count again: ;调用子程序grade统计各个等级的人数 mov al,[bx]

文档评论(0)

baoyue + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档