好文档 - 专业文书写作范文服务资料分享网站

微机原理-实验一-汇编语言-冒泡排序

天下 分享 时间: 加入收藏 我要投稿 点赞

微机原理实验报告

班级:XXXXX 姓名:XXXX 学号:20XXXX

XXXXX大学 信息科学与技术学院 信息工程系

实验一汇编语言程序设计-(具体题目)

一、实验目的(根据实际情况修改):

1、熟悉MASM编译环境,了解程序的汇编方法; 2、熟悉常用汇编指令,学习汇编程序设计方法;

3、学习汇编语言的调试过程,通过调试过程认识CPU执行程序的方式; 4、了解冒泡法原理,学习多重循环的编程方法。

二、实验内容:

编写程序,用冒泡法实现将数据段内9,8,7,6,5,4,3,2,1按照由小到大的顺序重新排列。

三、程序流程图和程序代码

1、流程图

2、代码与注释(代码不能和指导书完全一样,写出注释,写出寄存器尤其是DS的值)

data segment

buf1 db 8,7,6,5,4,3,2,1 data ends code segment

assume cs:code,ds:data

start: mov ax,data //传送数据段data mov ds,ax

mov dx,7 //dx放外循环7次 L3: mov cx,dx //cx放内循环7次

lea si,buf1 //将db里的数据传送到si L2: mov al,[si]

cmp al,[si+1] //比较[si]与[si+1] jb L1 //[si]<[si+1],跳转到L1 xchg al,[si+1] //[si]>[si+1],两两交换 mov [si],al

L1: inc si //si减1 loop L2 //循环L2

dec dx //外循环减1,没减到0则跳转到L3 jnz L3 //入内循环,计数初值 mov ah,4ch int 21h code ends end start

四、调试过程及遇到的问题 1、程序执行截图

2、调试用到的命令 -U命令:查看数据段地址;

-d命令:查看运行前后存储器内容; -g命令:运行程序;

-t命令:查看运行前后寄存器和存储器内容。 3、遇到的问题及解决办法

问题:运行程序后,数据1在存储器地址末尾没变。 解决方法:暂未解决! 五、思考题

1、n个数冒泡法排序共需要多少次循环?

答:n(n-1)/2次。

2、循环嵌套时总循环次数和内外循环次数是哪种数学关系?编写内外循环嵌套的双重循环程序,实现100次内循环,300次外循环。

答:总循环次数=内循环次数*外循环次数;

六、心得体会

通过实际模拟操作,加深了对CPU的理解,更好的理解编程语言,本次实验较为简单,我独立按时完成。在试验的编程过程中,弄清了DOSBox的使用方法,以及冒泡法排序的计算。实验过程遇到了程序调试和代码不熟的问题,在同学帮助下,弄懂了每行代码的作用,经调试,发现挺简单的。因此,我了解了在程序执行过程中,DS寄存器的值是根据实际数据段的地址分配的,并且不能和代码段重复。

0gdxi0sszo7b3ef97wu606i7k4fff900zgd
领取福利

微信扫码领取福利

微信扫码分享