已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
汇编与接口技术实验指导书 汇编语言部分 1 实验室要求实验室要求 实验设备安全至关重要 特别是以下几点 1 严格遵守实验室规章制度 2 注意人身安全和实验设备的安全 3 没有编写源代码 原则上不能参加试验 4 插接或拔掉实验连接线时 必须要关闭实验设备的电源 5 在加电后 严禁用手触摸芯片管脚或连线的金属部分 6 严禁私自挪动实验设备 7 严禁在实验室吃食物 喝饮料 保持实验室的清洁卫生 8 离开实验室前 要收拾好实验平台 并按要求放在指定的 位置 实验时间地点安排实验时间地点安排 周次星期日期时间段实验地点 第 03 周星期 2 2013 9 17 08 00 09 50北 402 外 第 06 周星期 4 2013 10 10 10 10 12 00北 402 里 第 08 周星期 2 2013 10 22 08 00 09 50北 402 里 第 09 周星期 4 2013 10 31 10 10 12 00北 402 里 第 11 周星期 2 2013 11 12 08 00 09 50北 402 里 第 12 周星期 4 2013 11 21 10 10 12 00北 402 里 第 14 周星期 2 2013 12 3 08 00 09 50北 402 里 第 15 周星期 4 2013 12 12 10 10 12 00北 402 里 汇编与接口技术实验指导书 汇编语言部分 2 实验工具 实验工具 Debug 调试实验指导书调试实验指导书 一 编辑 连接一 编辑 连接 1 利用写字板等编辑软件编辑一个求三个数最大值的源程序 MAX ASM 2 利用 MASM 进行编译 并成功 查看 MAX LST 文件 与 MAX ASM 进行对比 3 利用 LINK 进行连接 生成执行文件 MAX EXE 参考源程序 MAX ASM DATA SEGMENT X DB 115 Y DB 23 Z DB 20 MAX DB DATA ENDS 数据定义 CODE SEGMENT ASSUME DS DATA CS CODE START MOV AX DATA MOV DS AX 数据段初始化 MOV AL X X 取到 AL 中 CMP AL Y X 和 Y 比较 JG NEXT X Y 转 NEXT MOV AL Y 否则 Y 取到 AL 中 CMP AL Z Y 和 Z 比较 JG EXIT Y Z 转 EXIT MOV AL Z 否则 Z 取到 AL 中 JMP EXIT 转 EXIT NEXT CMP AL Z X 和 Z 比较 JG EXIT X Z 转 EXIT MOV AL Z 否则 Z 取到 AL 中 EXIT MOV MAX AL AL 中内容送 MAX 单元 MOV AH 4CH INT 21H 返回 DOS CODE ENDS END START 汇编与接口技术实验指导书 汇编语言部分 3 二 调试二 调试 1 调入 c masm debug max exe r AX 0000 BX 0000 CX 003D DX 0000 SP 0000 BP 0000 SI 0000 DI 0000 DS 1458 ES 1458 SS 1468 CS 1469 IP 0000 NV UP EI PL NZ NA PO NC 1469 0000 B86814 MOV AX 1468 u 1469 0 1469 0000 B86814 MOV AX 1468 1469 0003 8ED8 MOV DS AX 1469 0005 A00000 MOV AL 0000 1469 0008 3A060100 CMP AL 0001 1469 000C 7F0F JG 001D 1469 000E A00100 MOV AL 0001 1469 0011 3A060200 CMP AL 0002 1469 0015 7F0F JG 0026 1469 0017 A00200 MOV AL 0002 1469 001A EB0A JMP 0026 1469 001C 90 NOP 1469 001D 3A060200 CMP AL 0002 1469 0021 7F03 JG 0026 1469 0023 A00200 MOV AL 0002 1469 0026 A20300 MOV 0003 AL 1469 0029 B44C MOV AH 4C 1469 002B CD21 INT 21 2 必须执行才能调试 必须执行才能调试 g 0 2b r AX 4C73 BX 0000 CX 003D DX 0000 SP 0000 BP 0000 SI 0000 DI 0000 DS 1468 ES 1458 SS 1468 CS 1469 IP 002B OV UP EI NG NZ AC PE CY 1469 002B CD21 INT 21 d 1468 0 1468 0000 73 17 EC 73 00 00 00 00 00 00 00 00 00 00 00 00 s s 1468 0010 B8 68 14 8E D8 A0 00 00 3A 06 01 00 7F 0F A0 01 h 1468 0020 00 3A 06 02 00 7F 0F A0 02 00 EB 0A 90 3A 06 02 1468 0030 00 7F 03 A0 02 00 A2 03 00 B4 4C CD 21 53 6D 83 L Sm 1468 0040 C4 06 FF 76 06 FF 76 04 8D 86 74 FF 50 E8 5A FD v v t P Z 1468 0050 8B E5 5D C3 55 8B EC 83 EC 08 56 A1 58 27 39 46 U V X 9F 1468 0060 06 77 03 E9 8A 00 A1 36 22 2B 06 58 27 89 46 FE w 6 X F 1468 0070 2B C0 89 46 F8 89 46 FA 89 46 FC EB 22 90 8A 46 F F F F 汇编与接口技术实验指导书 汇编语言部分 4 三 问题三 问题 有一个程序的数据区内容如下 部分内容 1463 0000 73 17 EC 00 00 00 00 00 00 00 00 00 00 00 00 00 该程序的 DEBUG 反汇编代码如下 1464 0000B86314MOVAX 1463 1464 00038ED8MOVDS AX 1464 0005A00000MOVAL 0000 1464 00083A060100CMPAL 0001 1464 000C7F0FJG001D 1464 000EA00100MOVAL 0001 1464 00113A060200CMPAL 0002 1464 00157F0FJG26 1464 0017A00200MOVAL 0002 1464 001AEB0AJMP26 1464 001C90NOP 1464 001D3A060200CMPAL 0002 1464 00217F03JG26 1464 0023A00200MOVAL 0002 1464 0026A20300MOV 0003 AL 1464 0029B44CMOVAH 4C 1464 002BCD21INT21 1464 002D 请回答以下问题 填空 每空 2 分 小计 14 分 1 该程序的数据段的段地址是 1463 H 代码段的段地址是 1464 H 代码 段长度是 002dH H 2 如果当前状态为 AX 1473 BX 0000 CX 003D DX 0000 SP 0000 BP 0000 SI 0000 DI 0000 DS 1463 ES 1453 SS 1463 CS 1464 IP 000C NV UP EI PL NZ AC PE NC 1464 000C 7F0F JG 001D 那么 当前将执行的指令 CS IP 1464 000C H 该指令的机器指令代码是 7F0F H 该指令执行后如转移条件为真值时其下一条将执行的指令物理地址是 1464 001D H 否则下一条将执行的指令物理地址是 1464 000E H 汇编与接口技术实验指导书 汇编语言部分 5 实验 作业一 寻找最大和最小数实验实验 作业一 寻找最大和最小数实验 一 实验目的 1 学习循环程序结构 掌握编写循环处理程序的方法和技巧 2 通过循环结构程序熟悉汇编语言程序设计的主要方法 3 了解和掌握程序设计过程中算法的选择 4 掌握汇编语言调试方法 二 实验内容 以 buff 开始的内存单元中有 10 个有符号数 字节型 DB 37 28 115 2 98 100 93 120 56 99 请编写程序 找出最大的数并存入 MAX 单元中 同时也找出最小的数并存入 MIN 单元 中 在 Debug 下运行程序 查看数据区 MAX 和 MIN 的内容检验运行结果 三 编程提示 1 在数据段设置 buff 区 DB 存放 10 个被测试的数 再分别设置字节数据 MAX MIN 例如 buff db 37 28 115 2 98 100 93 120 56 99 MAX db MIN db 2 通过一个循环程序完成比较 先用第一个数与第二个 把较小的数放在 AL 中 较 大的数放在 AH 中 3 以后每次都用 AL 与后面的数比较 把小的总放在 AL 中 然后再用 AH 与后面的数 比较 把大的放在 AH 中 比较结束后 AL 和 AH 分别放最小和最大数 四 实验步骤 1 在 EDIT 或其它编辑方式下输入源程序 并以 XXX ASM 名保存 2 用 MASM 文件汇编源程序 C MASM XXX 如有错误 回到第一步 如没错误 到第 三步 3 用 LINK 连接程序 C LINK XXX 形成 XXX EXE 文件 4 在 DEBUG 调试环境下调试并运行 XXX EXE 程序 C DEBUG XXX EXE 回车 首先用 R 指令 然后使用 U 指令查看自己所编写的程序 确定断点后 使用 G 命 令执行程序到断点 查看结果 程序运行结束后 用 D DS 0 检查数据区 MAX 及 MIN 内容 检查结果是否正确 五 思考 1 查看 DOS 操作系统把可执行程序装载到的内存的首地址及结束地址 2 查看 MAX 和 MIN 的段地址及偏移地址 3 分别计算数据段和代码段占用的地址空间大小 汇编与接口技术实验指导书 汇编语言部分 6 实验 作业二 统计学生成绩实验 作业二 统计学生成绩 一 实验目的 1 熟悉汇编语言各种跳转指令的功能和用法 2 学会用程序流程图来分析和设计分支程序 3 通过顺序和分支结构来熟悉汇编语言程序设计的主要方法 4 了解和掌握程序设计过程中算法的选择 二 实验内容 设有 20 个学生成绩分别 56 78 67 40 87 99 63 51 74 100 90 80 68 88 55 66 84 96 45 73 分 编写程序实现统计低于 60 分 60 69 分 70 79 分 80 89 分 90 99 分及 100 分的人 数 并分别存放在 s5 s6 s7 s8 s9 s10 单元中 三 实验编程提示 1 设计实现算法 并画出程序流程图 2 定义一数据段 首先定义一变量组存储学生的分数 再定义 6 个字节变量 s5 s6 s7 s8 s9 s10 用于统计各分数段的人数 3 在代码段中实现程序功能 程序开始应实现初始化存储变量及程序循环次数 并 通过比较指令实现判断分支 四 实验步骤 1 在 EDIT 或其它编辑方式下输入源程序 并以 XXX ASM 名保存 2 用 MASM 文件汇编源程序 C MASM XXX 如有错误 回到第一步 如没错误 到 第三步 3 用 LINK 连接程序 C LINK XXX 形成 XXX EXE 文件 4 在 DEBUG 环境下运行调试程序 C DEBUG XXX EXE 回车 使用 U 命令反汇编自己 编写的程序 查找到断点地址 用 G 命令使程序执行到完成初始化的功能 此时使用 D 命令查看数据段的内容 是否有学生的分数并查看 s5 s6 s7 s8 s9 s10 字节 变量的地址及内容 然后查找程序功能结束的命令对应的断点地址 用 G 命令使程序 运行到断点 此时再使用 D 命令查看存储各分数段的学生人数是否正确 如正确 调 试结束 否则 从新单步调试查找错误 再从第一步修改源程序开始 五 思考 1 请问存放学生分数的变量物理地址是什么 2 请问各分数段的变量地址是多少 3 如果想在屏幕上显示结果将怎样编写下面的程序 实验 作业三 统计键盘输入字符 数字个数实验 作业三 统计键盘输入字符 数字个数 一 实验目的 1 学习循环程序结构 掌握编写循环处理程序的方法和技巧 2 通过循环结构程序熟悉汇编语言程序设计的主要方法 3 了解和掌握程序设计过程中算法的选择 汇编与接口技术实验指导书 汇编语言部分 7 4 掌握汇编语言的调试方法 二 实验内容 从键盘输入一系列字符 每种字符不超过 9 并以回车符结束 请统计出字母 数字 及其它字符的个数 最后在屏幕上显示计数结果 三 实验编程提示 1 在数据段中定义三个字节变量分别存放数字 字符 及其它字符的个数 2 在代码段中设计一循环程序接收键盘输入的字符 并在循环程序中判断输入字符 的 类型 根据结果计数变量值 循环程序以回车符退出 3 提示 MOV AH 1 INT 21H 等待键盘输入 输入字符的 ASCII 码放在 AL 寄存器中 提示 MOV AH 2 INT 21H 在屏幕上显示单个字符 被显示字符的 ASCII 码放在 DL 寄存器中 四 实验步骤 1 在 EDIT 或其它编辑方式下输入源程序 并以 XXX ASM 名保存 2 用 MASM 文件汇编源程序 C MASM XXX 如有错误 回到第一步 如没错误 到第 三步 3 用 LINK 连接程序 C LINK XXX 形成 XXX EXE 文件 4 运行程序 C XXX 回车 屏幕光标应停在一行的起始位置 并等待键盘输入字符 如输入若干字母和数字字符后 输入回车字符 屏幕上应显示出所统计的字母 数字及其它字符的个数 说明程序运行正确 否则进入调试程序步骤 调试程序 C DEBUG XXX EXE 回车 首先用 R 指令 然后使用 U 指令查看自己所编写的程序 确定断点后 使用 G 命令执行程序到断点 查看结果是否正确 不断扩大运行程序的范围直到找到 问题 五 思考 1 回车字符的 ASCII 码是什么 2 统计出的数值如何在屏幕上显示出来 如果统计个数超过 9 时 又将如何处理 怎样判断输入的是字母 数字及其它字符 实验 作业四 建立学生名次表实验 作业四 建立学生名次表 一 实验目的 1 学习循环程序结构 掌握编写循环处理程序的方法和技巧 2 通过循环结构程序熟悉汇编语言程序设计的主要方法 3 了解和掌握程序设计过程中算法的选择 4 掌握汇编语言的调试方法 二 实验内容 以 grade 为首地址的 10 个字的数组中保存了学生的成绩 要求建立 10 个字的 rank 数组 并根据 grade 中的学生成绩将学生名次填入 rank 数组中 汇编与接口技术实验指导书 汇编语言部分 8 三 实验编程提示 1 在数据段中 先定义一个字数组变量 grade 并存入 10 个学生的分数 然后在定 义一个字数组变量 rank dw dup 用于存放学生的名次 2 一个学生的名次等于成绩高于该学生的人数加 1 3 可以采用两重循环结构来实现 4 内层对应于每个学生的名次计算 在进入内循环之前使用指令 mov ax grade bx 先把此学生的分数放在 ax 寄存器中 grade 的首地址放在 si 当前被测学生的相对地 址指针放在 bx 进入循环后可用指令 cmp ax si 计算此学生的名次 并把名次存入 dx 中 内循环结束后用 mov rank bx dx 指令把该学生名次存入 5 外循环解决所以学生的名次计算 在退出内循环 并返回外循环之前要 add bx 2 使之指向下一个被测学生 注意在外循环重新初始化所需寄存器 四 实验步骤 1 在 EDIT 或其它编辑方式下输入源程序 并以 XXX ASM 名保存 2 用 MASM 文件汇编源程序 C MASM XXX 如有错误 回到第一步 如没错误 到 第三步 3 用 LINK 连接程序 C LINK XXX 形成 XXX EXE 文件 4 C debugC debug xxx exexxx exe 回车 用 r 命令找到第一条指令 再用 u 命令找到程序结束的 断点 再用 G 命令执行到断点 此时用 D 命令查看数据段的内容 前 10 个数据是学生 分数 后面就应是所对应名次 如果正确 调试结束 否则分块执行查找错误 直到 正确 五 思考 1 内循环和外循环分别用什么指令实现 请问存放分数 名次的起始地址分别是多少 实验 作业五 显示实验 作业五 显示 ASCII 码码 一 实验目的 1 了解汇编语言子程序的概念 2 掌握汇编语言子程序的定义 调用和返回 3 掌握设计汇编语言子程序及过程的基本方法 4 清楚调用指令 CALL 及返回指令 RET 执行时堆栈内容及指针的变化 5 掌握子程序和主程序间的参数传递方法 地址表传递参数 二 实验内容 试编写一个有主程序和子程序结构的程序模块 将两个 8 位和 16 位二进制数分别转换为相应二进制数的 ascii 码 三 实验编程提示 1 主程序提供转换数据的地址 转换后存放 ASCII 码的首地址共 2 个参量的地址 首先在数据段中定义两个变量分别存放 8 位和 16 位的数据 再定义一个空变量区 用于存放二进制相应的 ASCII 码 还要定义一个地址表用于存上述地址 例如 zhu8 db 35h 也可通过键盘输入 Zhu16 dw 0ab39h 也可通过键盘输入 汇编与接口技术实验指导书 汇编语言部分 9 Ascbuf db 32 dup 0 Adr tab dw 3 dup 0 2 主程序再将这两个地址组成一个地址表 并将地址表的首地址为入口参数传递给 子程序 Mov adr tab offset zhu8 Mov adr tab 2 offset zhu16 Mov bx offset adr tab 3 子程序的任务是实现二进制数的 ASCII 码转换 4 子程序可设置两个入口地址 一个为 BIN8 转换 8 位二进制 一个为 BIN16 转 换 16 位二进制 BIN8 MOV DI BX MOV DH DI DH 取得待转换 8 位二进制数 而 BIN16 MOV DI BX 2 MOV DX DI DX 取得待转换 16 位二进制数 四 实验步骤 1 根据上述算法先画出程序框图 2 在 EDIT 或其它编辑方式下输入源程序 并以 XXX ASM 名保存 3 用 MASM 文件汇编源程序 C MASM XXX 如有错误 回到第一步 如没错误 到 第三步 4 用 LINK 连接程序 C LINK XXX 形成 XXX EXE 文件 5 运行程序 C DEBUG XXX EXE 回车 首先使用 R 命令 再通过 U 命令查看反汇编程序找到调用子程序前的断点 G 命 令执行到断点 D 命令看数据段的内容是否正确 执行 CALL BIN8 后 查看数据段相应地址是否有 8 位二进制的 ASCII 存入 执行 CALL BIN16 后 查看数据段相应地址是否有 16 位二进制的 ASCII 存入 如果程序有问题 则在 debug 环境下查找错误后 回到第一步 如果想再 C 下执行程序 可加入 DOS 调用显示 看屏幕显示 6 显示信息可使用 DOS 调用 MOV AH 9 INT 21H DX 存显示信息的偏移地址 五 思考 1 子程序和主程序之间的参数传递是通过什么方式实现的 2 在 DEBUG 环境下观察执行 CALL 指令时 CS IP 寄存器是否变化 3 在 DEBUG 环境下观察执行 CALL RET 时堆栈
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 社区邻里守望工作制度
- 电动车导购员工作制度
- 农业扶贫工作制度
- 照护师工作制度及流程
- 社区心理服务工作制度
- 河南环保督察工作制度
- 民营企业线上工作制度
- 精神心理咨询工作制度
- 环卫宣教室工作制度
- 全科诊疗工作制度
- 黑龙江哈尔滨德强学校2025-2026学年度六年级(五四制)下学期阶段学情调研语文试题(含答案)
- 2026年温州市瓯海区专职社区工作者公开招聘6人笔试参考试题及答案解析
- 医养结合模式下的老年护理策略
- 2026年社会工作者初级真题及答案
- 酒店建设工作方案
- 08D800-7 民用建筑电气设计与施工-室外布线
- 车辆技术档案范本(一车一档)
- 0电连接安装施工作业指导书
- FZ/T 73072-2022矿工袜
- GB/T 15242.1-1994液压缸活塞和活塞杆动密封装置用同轴密封件尺寸系列和公差
- 友谊是什么(中文)
评论
0/150
提交评论