实验子程序全解.doc

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

汇编语言子程序—实验报告 实验题目:子程序 班 级: 姓 名: 学 号: 日 期: 实验题目 实验目的 1、掌握子程序的设计方法和调用方法; 2、 深刻认识堆栈在子程序设计中所起的作用; 3、 掌握子程序调试的技巧。 实验设备 1、硬件环境:华硕笔记本 2、软件环境:win10系统下的DOSBox 3、 编辑程序 EDIT 或其它编辑程序; Notepad++ 4、 汇编程序 MASM.EXE; 5、连接程序 LINK.EXE。 6、 调试程序 DEBUG.COM 实验内容和要求 实验内容: 内存中有一字型无符号数缓冲区 Data,长度为 20( 数据自己定义) 。 将 Data 缓冲区显示到屏幕上,分别用二进制和十进制。 实验要求: 1、 编写主程序将 Data 数据依次显示在屏幕上,在主程序中分别调用子程序 1、子 程序 2。 2、 编写子程序 1 将 Data 中所有字数据用二进制进行显示,参数用堆栈传递; 3、 编写子程序 2 将 Data 中所有字数据用十进制进行显示,参数用地址表传递; 4、 要求设计两个模块, 主程序在模块 1 中, 子程序 1-2 在模块 2 中; 实验步骤 1、调用某种编辑程序,在磁盘上建立扩展名为 ASM 的源程序 1 和 2(分别设计主 程序与子程序) ; 2、仔细检查源程序的语法和指令; 3、启动 DOS 操作系统 4、在 DOS 提示下,打入 MASM 调入宏汇编程序,分别对源程序 1-2( 对应 2 个模 块) 进行汇编。根据汇编提示结果,排除一切命令和语法错误,并相应生成 2 个 OBJ 文件。 5、在 DOS 提示符下,打入 LINK 调用连接程序, 对 OBJ 文件 1 和 2 进行连接, 产 生可执行的 EXE 文件。 6、执行 EXE 可执行文件,并查看结果。 7、使用 DEBUG 命令对 EXE 可执行文件进行调试,利用反汇编查看机器代码以及 单步执行,可排查程序逻辑错误。 实验结果分析 子程序 1-2 是否与主程序在同一代码段? 子程序 1-2 所在的段地址和偏移地址各是什么? 请列出 Data 存储区的 20 个字内容。 (附图) 答:不在同一模块,不在同一代码段。 子程序1的段地址和偏移地址为:段地址为077E,偏移地址为0000 子程序2的段地址和偏移地址为:段地址为077E,偏移地址为0041 Data存储区的 2内容36, 45, 66, 12, 78, 89, 42, 63, 47, 87, 99, 10, 34, 72, 34, 61, 14, 21, 73, 49 使用堆栈传递参数时,绘制堆栈最满时的存储内容以及 BP 和 SP 所指向的位置; 提供显示到屏幕上的结果,提供完整的原始汇编代码。 (附图) 源代码: ;4.asm public main extrn binary:far, decimal:far data segment x dw 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20 count dw 20 table dw 2 dup(?) data ends stack_seg segment dw 100 dup(?) tos label word stack_seg ends code1 segment main proc far assume cs:code1, ds:data, ss:stack_seg start: mov ax, data mov ds, ax mov ax, stack_seg mov ss, ax mov sp, offset tos mov ax, offset x push ax mov ax, offset count push ax call binary ;二进制输出 mov dl, 10 ;输出换行 mov ah, 2 int 21h mov bx, offset table mov ax, offset x mov [bx], ax mov ax, offset count mov [bx+2], ax ;十进制输出 call far ptr decimal mov ax, 4c00h int 21h main endp

文档评论(0)

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

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

1亿VIP精品文档

相关文档