汇编语言程序设计上机实验报告 一、实验题目、内容及要求: 题目:键盘与显示程序设计 内容:编写子程序嵌套结构程序,要求从键盘输入0~ffffh的十六进制的无符号数,转换为十进制数在屏幕上显示出来。 要求:实验前要作好充分准备,包括程序清单、调试步骤、调试方法,对程序结果的分析等。本实验要求在EDIT下编写完整的汇编语言程;并生成执行文件,运行程序。 编程提示:该程序应由五个程序模块组成,模块层次如图所示。 二、实验时间及地点 日期: 2011/12/5 节次: 7、8 地点: 三、实验目的 通过本实验进一步掌握DOS系统功能调用的方法,掌握循环程序设计的方法;熟练设计循环结构程序。 简述在实验过程中遇到的问题和解决的方法: 遇到的问题:主程序和子程序的格式,使用,连接不会写。 解决办法:开始着笔时只会写数字的比较和转化过程。后来通过看书回忆上课所讲的内容和老师演示,明白了主程序和子程序的格式和连接。知道了要有这程序来总的实现操作数的操作与子程序的调用和子程序来实现各个小功能。本实验中有接受程序(recieve)、显示(disp)、回车换行(enter)、显示一位十进制数(disp_onebit)四个子程序。 遇到的问题:调试中出现乱码问题。 解决办法:通过调试后发现是因为没有定义数据段和没有给数据段赋值。 赋值方式: dat segment input db'Please input your hexadecimal numbers(0-ffff):$' show db'After conversion to decimal number is:$' dat ends cod segment assume ds:dat,cs:cod start:mov bx,dat mov ds,bx 运行结果:(要求用“抓图软件”抓程序的运行结果) 结果分析及实验体会: 结果分析:本实验的要求是将输入的十六进制的数转换为十进制数。本实验在实验三的数制转换基础上加上子程序和主程序将程序完整的。结果是将十六进制的数按ASCII码转化而得的。 体会和总结: 1、了解了主程序与子程序的应用和循环程序的使用方法和格式。 2、主程序和子程序的两种格式: 格式1: dat segment main proc far Call disp1 Call disp2 Call disp3 …… ret main endp disp1 proc near …… ret disp1 endp disp2 proc near …… ret disp2 endp disp3 proc near …… ret disp3 endp …… dat ends 格式2: dat segment main proc far Call disp1 Call disp2 Call disp3 …… ret disp1 proc near …… ret disp1 endp disp2 proc near …… ret disp2 endp disp3 proc near ……