微机原理与接口技术实验报告三

上传人:第*** 文档编号:38908902 上传时间:2018-05-09 格式:DOC 页数:4 大小:137KB
返回 下载 相关 举报
微机原理与接口技术实验报告三_第1页
第1页 / 共4页
微机原理与接口技术实验报告三_第2页
第2页 / 共4页
微机原理与接口技术实验报告三_第3页
第3页 / 共4页
微机原理与接口技术实验报告三_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《微机原理与接口技术实验报告三》由会员分享,可在线阅读,更多相关《微机原理与接口技术实验报告三(4页珍藏版)》请在金锄头文库上搜索。

1、微机原理与接口技术实验报告(三)微机原理与接口技术实验报告(三)1、实验目的:实验目的: 1)学习程序中有限的寄存器的使用。 2)学习使用冒泡法排序 3)学习程序流程控制:条件跳转指令 ja jb call 指令,观察程序执行时堆栈的变化(学 会用 debug g 命令设置断点) 4)学习利用编译错误信息进行程序修改,通过运行寻找并改正逻辑错误。 5)灵活运用各种 dos 功能调用实现显示功能 6)学习将数字用转换成相应的 ascii 码并显示 2、实验内容:、实验内容: 多重循环程序设计:多重循环程序设计: 多重循环中,循环中包含另一个循环,每一循环都有各自的循环计数器和终点判断。应注 意:

2、各重循环初始条件的控制;内循环可以嵌套在外循环中,也可以几个内循环并列在外 循环中,但各层循环之间不能交叉,内循环可以跳到外循环中,不可以从外循环直接跳进 内层循环; 应用:冒泡排序法 以 Buffer 为首地址保存一组(假设 10 个)无序的有符号数,编写排序程序使数由小到大重 新排列。程序框图如下: 举例:(值 1 2 3 4,数值越大气泡越大) 原顺序: 第一次交换 第一次内循环结束(外循环 1) 第二次内循环结束(外循环 2)3、试验结果、试验结果 程序编写如下: dispmsg macro messge mov ah,9lea dx,messgeint 21hendm.model s

3、mall .data Bufferdb 10,-30,52,2,42 db 92,32,-36,31,63 Nequ $-buffer jieshu db $ newlines db 0dh,0ah jieguo db the result is:,0dh,0ah jguo db 30 dup(?,?),$ .stack 100 .code mov ax,data mov ds,ax mov ax,stack mov ss,ax mov bx,offset buffer mov cx,N-1 lop1:mov dx,cx lop2:mov al,bx cmp al,bx+1 jle bijia

4、oxiayige xchg al,bx+1 mov bx,al jixu:inc bx bijiaoxiayige:inc bx loop lop2 mov cx,dx mov bx,offset buffer loop lop1xianshi:mov si,offset buffer mov di,offset jguoxiayige: mov al,si cmp al,$ jz wanbi mov ch,al mov cl,4 shr al,cl call disp mov al,ch and al,0fh call disp inc si jmp xiayigewanbi: dispms

5、g jieguo Mov ax,4c00H Int 21Hdisp proc cmp al,0ah js done add al,7 done:add al,30h mov di,al inc di retdisp endpEnd end start该程序中,首先定义一个宏 dispmsg,然后定义各段。在数据段中先对 buffer 中数字进行 冒泡法排序,将结果保存至原数据段 buffer,然后从头依次对各个数字进行 ascii 码转换。 分别用 si 和 di 指向 buffer 和 jguo 的段首,buffer 中每转化一位,赋值给 jguo,然后 di 增 一。这样,buffer 中

6、每一字节中数字的高低两位将对应 jguo 中的两个字节。最后显示 jguo即可 运行结果如下:下面通过设置断点查看排序前后存放排序字符串的内存空间的内容 1、点击调试,通过 U 语句进行反汇编2、使用 G 语句,运行至 0b98:0005可知 ds 值为 0b98 3、通过 d 语句查看相应内存内容4、同理,通过反汇编找到排序结束后的指令位置,选择 0b98:002c,运行 g 语句5、通过 d 语句查看排序后的内存内容实验中遇到的问题及解决方法:实验中遇到的问题及解决方法:1、汇编语言中寄存器有限,在使用时注意是否保存寄存器中原有的值,防止在使用寄存器 时将原值改变。在使用宏或调用函数前,可现将寄存器入栈,在调用完毕后弹出,从而恢 复原值。 2、求字符串长度时可用“长度 equ $-字符串名”这种简便方法,但使用时需注意$表示当 前地址。尤其要注意的是,当排序时,一定要准确确定排序次数防止排多或漏排。 3、Int21号中断的9号程序调用,显示到“$”结束 4、调用函数不要漏掉 ret,否则可能运行时结果框一闪就消失。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号