




免费预览已结束,剩余2页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
微机原理与接口技术实验报告39032415 李柏 2011 2012 学年 第一学期 微机原理实验二 4 位 BCD 码相加 班级 392311 转系 学院 高等工程 姓名 李 柏 学号 3903 2415 微机原理与接口技术实验报告39032415 李柏 2011 年 12 月 4 日 微机原理与接口技术实验报告39032415 李柏 本人声明 我声明 本论文为本人独立完成的 在完成论文时所利用的一切资料均已在参考文献中列出 微机原理与接口技术实验报告39032415 李柏 1 实验目的 学习字符型数据与数值型数据的相互转换方法 了解 BCD 码输入及相加的方法 2 实验内容 在数据段中定义 3 个变量 x1 x2 x3 用于存储从键盘上输入的两个 BCD 码 要求低位数据占高位置存放 x3 存放这 两个 BCD 码的和 从键盘输入两个 4 位的 BCD 码 检查是否为数字键 非数字键不接收 将输入的 2 个 4 位字符型 数据转换为 4 位非压缩 BCD 码存于数据段的变量中 将 2 个 4 位非压缩 BCD 码相加 将结果利用 INT21H 的 2 号功 能显示在计算机屏幕上 3 实验原理图 略 4 程序流程图 数据段 数据段 X1X1 X2X2 X3X3 码段码段 TYPEINTYPEIN MAINMAIN 按位循环地输入 X1 并按位上屏显示 退出 开始 初始设定 指定段寄存器等等 按位循环地输入 X2 并按位上屏显示 上屏显示一个 号 上屏显示一个 号 按位循环地运算加和的低低 4 位位 存入 X3 相应位 置 利用 ADC 获取加和的最高位真实值 存入 EA X3 位置 将 X3 存储的加和结果上屏显示 微机原理与接口技术实验报告39032415 李柏 5 程序清单 DATASEGMENT 用 X1 与 X2 定义数据段存储输入的十进制数 用 X3 存储运算结果 X1DB4 DUP 0 X2DB 4 DUP 0 X3 DB 5 DUP 0 两个 4 位数相加可以生成 5 位数 因此定义 5 个字节 DATA ENDS STACKSEGMENT STACK 定义堆栈段 该定义也可不写 由系统自动分配空间 DW 100 DUP STACKENDS CODESEGMENT 码段定义 ASSUME CS CODE DS DATA SS STACK 段分配伪指令 TYPEINPROC 定义子程序 TYPEIN 处理每一个输入的字符 AGAIN MOV AH 8 使用 DOS 的 8 号功能 即 将键盘的输入存入 AL 且无回显 INT 21H CMP AL 30H 30H 即 0 将键盘输入与 0 和 9 比较 一旦不在此范围内则认定输入无效 JB AGAIN CMP AL 39H JA AGAIN PUSHAX 此处将输入值入栈保存 即保护现场 因为下文运用 2 号功能显示时中断指令 INT 21H 会破坏 AL 寄存器 MOV DL AL MOVAH 2 INT 21H 执行 2 号指令 将 DL 中存储的 AL 显示 POP AX 恢复现场 RET TYPEIN 过程的返回指令 TYPEINENDP 结束子程序 TYPEIN 的书写 MAIN PROC FAR 远调用 PUSH DS 以下三句为结尾返回 DOS 做准备 MOV AX 0 PUSH AX MOV AX DATA MOV DS AX 以下两句将指针对准数据段内的 X1 处 MOV SI OFFSET X1 MOV CX 4 设置了 4 次循环 为了在存储器的变量 X1 内存放被加数 NEXT1 CALLTYPEIN 调用子程序 TYPEIN ANDAL 0FH 将 AL 高 4 位清零 因为输入的数字仅仅占用 AL 低 4 位就足够用 清零则是为了防止高 4 位对存储结果的干 扰 MOV SI AL 将 AL 存入 SI 指向的位置 而 SI 在最初指向 X1 的 EA INCSI 指针加 1 因为 PTR BYTE LOOPNEXT1 循环执行 4 次 将被加数存入 X1 变量内 但是注意先输入的是十进制的高位 所以高位在低地址 MOVDL 上屏显示一个 号 MOVAH 2 INT21H MOVSI OFFSET X2 以下部分完全同理 输入加数 依然占用 4 字节 存入 X2 变量内 MOVCX 4 微机原理与接口技术实验报告39032415 李柏 NEXT2 CALLTYPEIN ANDAL 0FH MOV SI AL INCSI LOOPNEXT2 至此将加数存入了 X2 之中 以下进行加法运算 MOVSI OFFSET X2 1 以下三句将 SI DI BX 分别对准了被加数 加数以及结果被加数 加数以及结果的最高位 MOVDI OFFSET X3 1 MOVBX OFFSET X3 4 MOVCX 4 对 CX 赋值往往暗示将有 4 次循环 ORCX CX 清空 FR 标志位 只是为将 CF 置零 ADD1 MOVAL SI 把被加数最高位送进 AL ADCAL DI 被加数与加数的最高为相加 并加上 CF 运算前那个状态的值 AAA 由于 SI 与 DI 存储的数位都代表非压缩的一个十进制数字 即各自的高 4 位一律 0 且结果在 AL 内 满足 AAA 指令的条件 MOV BX AL 将 AAA 处理后的 AL 送入 X3 变量的相应位置保存起来 DEC SI 以下三个指针自动减 1 分别对齐下一位 DEC DI DEC BX LOOP ADD1 执行循环 将加数与被加数的 4 个数位的加和 也就是结果的低 4 位正确地存入 X3 相应位置之 中 但是暂且未顾及最高位是否进位得 1 MOV AL 0 以下两句旨在获取次高位运算后产生的那个 CF 值 将这个标志位存入 AL ADC AL 0 MOV BX AL 将其注入 X3 中充当加和结果的最高位 恰好存放在 OFFSET X3 代表的低地址之中 MOV DL 显示一个 号 MOV AH 2 INT 21H MOV BX OFFSET X3 MOV CX 5 此处 5 次循环是为了分别存入 DL 将最终加和结果按各数位依次地上屏显示 NEXT3 MOV DL BX ADD DL 30H 此处将 0 9 二进制数码转换成对应的 ASCII 码 只有加了这句才能正确显示各位数字 MOV AH 2 INT 21H INC BX 使用递增是因为这样正好符合十进制数高位在左先显示的客观事实 LOOP NEXT3 RET 在 MAIN 过程中的退出 MAIN ENDP 结束 MAIN 过程 CODE ENDS 码段编写完毕 END 全文结束标记 6 收获与心得 在代码编写中 收获较大 自认为需要格外注意以下几点 1 在保护现场的动作中 对某寄存器压栈保护时 必须谨记堆栈是对字操作 千万不能犯 PUSH AL 之类的低级错误 2 相应的过程
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- JJF 2248-2025液体容积式流量计型式评价大纲
- 防洪设施监测与检测技术考核试卷
- 呼吸衰竭患者的抢救配合
- 校园心肺复苏急救方法
- 安全教育饮食卫生
- 外科血气分析临床案例解析
- 婴儿窒息复苏急救方法
- 教师优则校优
- RMC-4998-formic-生命科学试剂-MCE
- “特朗普经济学”系列之十六:限制对华投资美国有哪些手段
- 宠物清洁卫生用品猫砂
- 大模型备案-落实算法安全主体责任基本情况-XX集团有限公司
- 【低空遥感】拓恒技术有限公司 -提供从无人机到场景应用垂直产业价值链的整体解决方案项目商业计划书
- 2025-2030中国蔬菜温室大棚市场消费趋势分析与经营管理风险报告
- 学校外来人员登记制度
- 店铺装修工程施工方案(3篇)
- 应急物资中转站项目可行性研究报告(模板范文)
- 腰椎间盘突出症中医护理查房
- 薄壁空心墩施工方案
- 多重耐药菌医院感染预防与控制技术指南(试行)
- 地面注浆施工方案
评论
0/150
提交评论