收藏 分销(赏)

哈工程-微机原理实验-实验二.doc

上传人:仙人****88 文档编号:12072926 上传时间:2025-09-06 格式:DOC 页数:10 大小:282.50KB 下载积分:10 金币
下载 相关 举报
哈工程-微机原理实验-实验二.doc_第1页
第1页 / 共10页
哈工程-微机原理实验-实验二.doc_第2页
第2页 / 共10页


点击查看更多>>
资源描述
哈尔滨工程大学 实 验 报 告 实 验 名 称: 实验二 分支循环程序设计及实现 实验室名称: 水声电子信息实验室 哈尔滨工程大学实验室与资产管理处 制 1.实验名称 分支循环程序设计及实现 2.实验目的 1.学习分支程序、循环结构程序的设计和调试方法; 2.掌握分支、循环等程序的基本结构。 3.通过循环指令、条件转移指令等完成较复杂程序的设计。 3.实验内容与实验步骤 3.1实验一 数据串搬家程序:BUF1开始的16个以字为单位的数据搬移到BUF2。 编程流程图: 图1 实验1的编程框图 程序源代码 DATA SEGMENT BUF1 DW 1111H,2222H,3333H,4444H,5555H,6666H,7777H,8888H,8888H,7777H,6666H,5555H,4444H,3333H,2222H,1111H ;定义数组 BUF2 DW 16 DUP(?) ;定义目标数组 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX, DATA MOV DS, AX MOV CX, 16 ;利用CX确定循环次数 MOV SI, OFFSET BUF1 ;将BUF1的偏移地址赋给SI MOV DI, OFFSET BUF2 ;将BUF2的偏移地址赋给DI KEEPUP: MOV BX, [SI] ;将BUF1中的数取出,赋给BX MOV [DI], BX ;将BUF1中的数赋给BUF2 INC SI ;SI指向下一个数的地址 INC SI ;DI指向下一个数的地址 INC DI INC DI LOOP KEEPUP MOV AH, 4CH INT 21H CODE ENDS END START 上机运行这段程序,可以得到如下结果。 图2 实验1的编程结果 可以看出,内存中的BUF2位置已经被复制了BUF1的数据,证明程序运行正常,符合要求。 3.2实验二 将BUF1开始的16个以字为单位的数据中的正数搬移到BUF2。 编程流程图: 图3 实验2的编程框图 程序源代码: DATA SEGMENT BUF1 DW 1111H,2222H,3333H,4444H,8888H,9999H,0AAAAH,0BBBBH, 0123H,0234H,0345H,4567H,89ABH,8123H,8124H,8943H BUF2 DW 16 DUP(?) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX, DATA MOV DS, AX MOV CX, 16 MOV DI, OFFSET BUF1 MOV BX, OFFSET BUF2 KEEPUP: MOV AX, [DI] TEST AX, 8000H JZ POSITIVE JMP GOON POSITIVE: MOV [BX], AX INC BX INC BX GOON: INC DI INC DI LOOP KEEPUP MOV AH, 4CH INT 21H CODE ENDS END START 运行程序,我得到了如下结果。 图4 结果取出正数 正数结果已经取出。 3.3实验三 已知数据区STRINGA开始的存储单元中,存有用大写字母表示的自己姓名的全拼,将其转换成小写字母后,存放到STRINGB开始的存储单元中。 编程流程图: 图5 实验3的编程框图 程序源代码: DATA SEGMENT STRINGA DB 'ZHANG MENG LONG','$' STRINGB DB 15 DUP(?) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX, DATA MOV DS, AX MOV CX,15 MOV SI,OFFSET STRINGA MOV DI,OFFSET STRINGB KEEPUP: MOV BX,[SI] ADD BX,20H MOV [DI],BX INC SI INC DI LOOP KEEPUP MOV AH,4CH INT 21H CODE ENDS END START 运行程序,我得到了如下结果。 图6 姓名大写拼音转为了小写拼音 3.4实验四 在题2的基础上继续编程,实现当从键盘输入’A’时,在屏幕上显示大写的名字,当输入’B’时,在屏幕上显示小写的名字。 编程流程图: 图7 实验4的编程框图 程序源代码: DATA SEGMENT STRINGA DB 'ZHANG MENG LONG','$' STRINGB DB 15 DUP(?),'$' DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX, DATA MOV DS, AX MOV CX,15 MOV SI,OFFSET STRINGA MOV DI,OFFSET STRINGB KEEPUP: MOV BX,[SI] ADD BX,20H MOV [DI],BX INC SI INC DI LOOP KEEPUP MOV AH, 01H ;等待输入 INT 21H TEST AL,01H ;利用输入最后一位测试 JZ NAM ;输入B,不为0继续 NUM: MOV DX,OFFSET STRINGA MOV AH,9 ;输出大写 INT 21H JMP OVER NAM: MOV DX,OFFSET STRINGB ;输入A为0输出小写 MOV AH,9 INT 21H OVER: MOV AH,4CH INT 21H CODE ENDS END START 运行程序,我得到了如下结果。 图8 当输入A时为大写,输入B时为小写 4.实验结果总结 通过实验,我对汇编语言的基本编程方法有了进一步理解。同时,我对汇编语言之中的分支循环程序基本编程思路更加熟悉。我也对基本DEBUG命令更加熟练了。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服