汇编实验:子程序设计与16进制数排序

需积分: 15 5 下载量 111 浏览量 更新于2024-09-11 1 收藏 97KB DOC 举报
"汇编语言程序设计实验报告,实验三关注子程序结构和设计,旨在深化对顺序、分支、循环结构的理解,以及掌握子程序、键盘输入和屏幕输出的中断调用。实验要求使用具备命令提示符的Windows系统,安装汇编语言编程环境,预先编写源程序,并通过IDE进行调试。实验内容包括从键盘接收20个16进制无符号数,进行输入显示及排序后再显示。" 实验中的主要知识点包括: 1. 汇编语言基础:汇编语言是一种低级编程语言,与机器代码直接对应,用于编写计算机程序。在这个实验中,学生们需要理解和使用汇编指令来实现数据的读取、存储、处理和显示。 2. 子程序设计:子程序是程序设计中的一个关键概念,它是一段可重复使用的代码块,可以被主程序多次调用。实验中,`getarray`、`output`和`sort`就是这样的子程序,分别负责获取输入数组、显示数组和排序数组。 3. 数据段(Datasegment):在汇编语言中,数据段用于定义和存储程序中的常量、变量等数据。在示例中,`arraydb20dup(?)`定义了一个20个字节的数组,用于存储输入的16进制数。 4. 字符串常量:`mess1` 和 `mess2` 是两个字符串常量,分别用于显示提示信息,`db` 用于定义字节数据,`$` 表示当前地址。 5. 代码段(Codesegment):代码段包含了程序执行的指令。`Assume cs:code, ds:data` 指定了代码段和数据段的段寄存器。 6. 中断调用:`int 21h` 是DOS中断,用于进行I/O操作,如屏幕输出和键盘输入。在这里,`int 21h` 被用来显示提示信息和接收键盘输入。 7. 键盘输入:实验中,`getarray`子程序可能使用了键盘中断来接收用户输入的16进制数。通常,这涉及到读取键盘缓冲区,解析输入并将其转换为16进制数。 8. 屏幕输出:使用`int 21h` 的9号功能调用来显示字符串,如`mov ah, 9` 和 `int 21h` 结合`dx` 寄存器中存储的字符串地址。 9. 数组处理:在`sort`子程序中,需要实现排序算法,如冒泡排序或快速排序,将输入的16进制数由大到小排列。 10. 循环与条件分支:在处理输入和排序过程中,循环结构(如`for`或`while`)和条件分支(如`if...else`)是必不可少的,用于重复执行特定操作和根据条件改变程序流程。 11. 程序结束:最后,使用`mov ax, 4c00h` 和 `int 21h` 结束程序执行,这是DOS的退出程序中断。 这个实验涵盖了汇编语言的基础知识,同时也强调了程序设计中的模块化思想,通过子程序的编写和调用来实现功能,有助于提升学生的程序设计能力。