1、 微机原理实践课程设计报告微机原理实践课程设计报告 题目:题目: 汇编语言课程设计汇编语言课程设计 专业:专业: 网络工程网络工程 班级:班级: 班班 学号:学号: 姓名:姓名: 指导教师:指导教师: 完成日期:完成日期:2012013 3 年年 1 1 月月 6 日日 一、课程设计目的一、课程设计目的 1、加深对汇编语言理论和基本知识的理解, 掌握 DOS 和 BIOS 系统功能调用, 掌握运用汇编语言设计具有 一定功能的软件的基本方法. 2、通过编写一定规模和难度的程序,进行一次较全面的汇编编程训练,提高分析问题和解决问题的能力 3、提高调试程序的能力 二、课程设计内容二、课程设计内容 1
2、、从键盘输入一组十进制数,排序后在屏幕上显示 要求:从键盘输入一组十进制数(每个数不超过 3 个字符) ,它们之间以逗号“, ”分开,以回车键为 该数组数据结束,将该数组升序排序后,结果在屏幕上显示。 *Display Program* please input 10 decimal number,sorted then output: 如果输入的不是数,提示出错,显示:input error! 三、课程设计过程三、课程设计过程 1、算法设计(画出算法流程图)、算法设计(画出算法流程图) 开始 输入十进制数 是否输入 数字 结束 回车? 是否输入, 数据存储 显示input error! 将该
3、数组升序排序 显示排序结果 Y N Y N Y N 2、程序代码清单、程序代码清单 程序代码如下:程序代码如下: DSEG SEGMENT ;数据段 number dw 80 dup (?) count dw ? BUFF DB please input decimal number:$ 提示输入数组 STR1 DB input error!,0AH,0DH,$ DSEG ENDS CSEG SEGMENT assume CS:CSEG , DS:DSEG main procfar ;入口 mov ax, dseg mov ds, ax 添加主程序代码: xor ax,ax mov dx,of
4、fset BUFF mov ah,9 int 21h call input;从键盘输入一组十进制数(每个数不超过 3 个字符),存于数组 number 中 call sort ;将该组数按升序排序 call disp ;将结果送显示器显示 ;按任意键退出 mov ah,1 int 21h ;程序结束,返回到操作系统系统 mov ax, 4ch int 21h MAIN ENDP input proc lea si,number next: mov bx, 0 mov cx,4 newchar: mov ah, 1;键盘输入,每个数据以,结束 int 21h cmp al,0dh ;全部数据以回
5、车结束 jz he cmp al, 2ch ;存储数据 jz he sub al, 30h jl exit ; 0 退出 cmp al, 9h jg exit ; cbw xchg ax, bx mov dx, 10 mul dx xchg ax, bx add bx, ax loop newchar he: inc count mov si,bx add si,2 cmp al,0dh jz tj jmp next tj: ret input endp exit: mov ax, 4c00h int 21h sort proc ;冒泡排序,为数组排序 mov cx,count dec cx
6、loop1: mov di,cx mov bx,0 loop2: mov ax,numberbx cmp ax,numberbx+2 jle continue xchg ax,numberbx+2 mov numberbx,ax continue: add bx,2 loop loop2 mov cx,di loop loop1 ret sort endp disp proc ;输出排列后的数据 call crlf mov cx,count lea si,number repeat1: mov bx,si mov di,100d call dec_div mov di,10d call dec_div mov dx,bx add dl,30h mov ah,2