您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 微机原理与汇编语言实验指导书
1实验一显示程序[实验目的]1.掌握汇编语言程序上机的实验过程2.掌握显示程序的基本设计方法。[实验原理]汇编语言上机过程1、建立汇编源程序(建立文件名.asm)(1)通过MD-DOS自带的EDIT.EXE文本编辑器进行输入和其它的文本编辑器进行录入、编辑,如可用c语言和pascal语言的文本编辑器来编辑,最后将文件存为filename.asm的形式即可。2、编译目标文件(即:编译为.obj.lst.crf文件)将正确的源代码编译为机器语言、程序清单及交叉引用表的目标文件。如果此时程序有语句错误,系统将报错,并指出在第几行,什么类型的错误,可根据提示去逐一修改。3、连接为可执行文件(即:连接为.exe或.com文件)在DOS提示符下:LINKfilename回车4、运行编译好的可执行文件当4通过后,会产生一个可执行文件,这时只需运行这个程序,看它是否按你所想象那样得出结果。在试运行期间,要尽量试一些临界状态,看程序是否运行稳定、结果是否正确,进行5。5、用调试工具调试,重新修改(逻辑错误)用DOS中自带的调试程序DEBUG.EXE来进行程序调试、检查错误。6.有关显示DOS基本命令1)单个字符显示命令将要显示的字符的ASCII码送给DL寄存器中断功能号2送AH寄存器,中断类型21H.如显示“3”MOVDL,33H或MOVDL,‘3’如显示‘A’MOVAH,‘A’MOVAH,2MOVAH,2MOVAH,2INT21HINT21HINT21H2)字符串显示命令将要显示的字符串所在存储区的首地址送给DX寄存器中断功能号9送AH寄存器,中断类型21H.如显示字符串“HELLO”存储区定义为TDB“HELLO”,10,13,24HLEADX,TMOVAH,9[实验方法及步骤]INT21H1、编写实验程序。2、编译。3、运行(单步,跟踪),检查结果。4、关主机。[实验题目]编写一个汇编语言程序,要求对键盘输入的一个小写字母用大写字母显示出来。CODESEGMENTASSUMECS:CODEMAINPROCFARSTART:PUSHDSMOVAX,0PUSHAXCON:MOVAH,12INT21HCMPAL,0DHJZEND0SUBAL,20HMOVDL,ALMOVAH,2INT21HJMPCONEND0:RETMAINENDPCODEENDSENDSTART[预习内容]1、熟悉汇编语言编辑、编译环境,熟悉DEBUG调试命令(见讲义附录)2、熟悉有关显示DOS基本命令[思考与练习]1、显示一个字符串“ABC123”。2、编一显示“HOWAREYOU!”的程序。【实验报告内容】1、实验目的、仪器、原理和内容2、要求写出算法和算法流程图。3、程序必须在微机上编辑和汇编。4、调试程序并进行分析并给出实验结果。实验二数据排序[实验目的]1.掌握循环、分支程序的设计方法。2.了解数据排序的简单算法。[实验原理]“冒泡排序”算法是从第一个数开始依次将相邻的两个数比较,如果前面的数比后面的数大,则交换,如此将所有的数比较一遍后,最大的数就会在数列的最后面。再进行下一轮比较,找出第二大数据,直到全部数据有序。[实验方法及步骤]1、编写实验程序。2、编译。3、运行(单步,跟踪),检查结果。4、关主机。[实验题目]把从MEM单元开始的10个16位有符号数按从大到小的顺序排列。DATASEGMENTMEMDW-1,0,24,-32,100,345,-39,1000,2345,-18DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA3MAINPROCFARSTART:MOVAX,DATAMOVDS,AXLEADI,MEMMOVBL,9NEXT1:MOVSI,DIMOVCL,BLNEXT2:MOVAX,[SI]ADDSI,2CMPAX,[SI]JGNEXT3MOVDX,[SI]MOV[SI-2],DXMOV[SI],AXNEXT3:DECCLJNZNEXT2DECBLJNZNEXT1MOVAH,4CHINT21HMAINENDPCODEENDSENDSTART[预习内容]1、熟悉冒泡排序原理。2、熟悉程序结构(循环和分支)及程序设计方法[思考与练习]1、比较BX,CX,DX中带符号数的大小,将最大的数放在DX中。2、两个字符串比较,若相同,把0存入RESULT单元,若不同,把-1存入RESULT单元。3、从FIRST开始的10个单元中存放着一个字符串,结束符为‘$’。编写一个程序,统计该字符串中字母‘a’的个数。【实验报告内容】1、实验目的、仪器、原理和内容2、要求写出算法和算法流程图。3、程序必须在微机上编辑和汇编。4、调试程序并进行分析并给出实验结果。实验三码制转换[实验目的]1掌握简单的数值转换算法及数值的各种表达方法。2掌握码制转换的基本方法。[实验原理]1.BCD码的基本表示方法压缩的BCD码和非压缩的BCD码两种格式。压缩的BCD码用4位二进制数表示一个十进制数位,如9502d表示为:1001010100000010,非压缩的BCD码以8位为一组表示一个十进制数位,8为中4的低4位表示8421的BCD码,而高4位没有意义,如9502d则表示为:uuuu1001uuuu0101uuuu0000uuuu00102.二进制到BCD码转换的基本方法其中,用到除法指令DIVOPD;AL=AX÷OPD(字节)的商,AH=余数。DIVOPD;AL=DXAX÷OPD(字)的商,AH=余数。3.BCD码转换到二进制的基本方法,是前者的逆变换。用到乘法指令:MULOPD;AX=AL×OPD(字节)MULOPD;DXAX=AX×OPD(字)4、ASCII码的基本表示方法用7位二进制编码来表示128个字符和符号,本实验所用到的ASCII码表如下:字符012345678ASCII码30H31H32H33H34H35H36H37H38H字符9ABCDEFASCII码39H41H42H43H44H45H46H5、二进制到ASCII码转换的基本方法查表法,比较法。6、ASCII码到二进制转换的基本方法≤9“与”0FH9减7后,“与”0FH[实验方法及步骤]1、编写实验程序。2、编译。3、运行(单步,跟踪),检查结果。4、关主机。[实验题目]编写程序将AL和BL中的非压缩BCD码合并成一个压缩的BCD码,存在AL中。CODESEGMENTASSUMECS:CODEMAINPROCFARMOVAL,04HMOVBL,05HMOVCL,4SHLAL,CLORAL,BLMOVAH,4CHINT21HMAINENDPCODEENDSENDMAIN[预习内容]熟悉微机原理中第一章有关数制及相互转换的基础知识[思考与练习]51、编写一个程序,将变量ABC中的16位无符号数,用除十取余的方法转换成十进制数,要求结果用压缩BCD码保存在RESULT单元中。2、若在内存的输入缓冲区ASCBUF中,已有若干个用ASCII码表示的十进制数码.要求把它们转换为相应的BCD码,且把两个相邻存储单元的十进制数码的BCD码合并在一个存储单元中,且地址高的放在前四位,存放在BCDBUF区域.。3、将AX拆为二个ASCII码,并存入Result开始的二个单元。【实验报告内容】1、实验目的、仪器、原理和内容2、要求写出算法和算法流程图。3、程序必须在微机上编辑和汇编。4、调试程序并进行分析并给出实验结果。实验四实时显示日期和时间(综合)一、实验目的1、掌握子程序设计基本方法,包括子程序定义、调用、返回、参数传递。2、学习如何进行数据转换和DOS功能调用(系统时间提取、预置等)3、学习和掌握如何通过查表法提取所需数据。二、实验环境1、硬件:微机2、软件:EDIT、MASM和LINK三、实验原理系统功能调用是DOS为系统程序员及用户提供的一组常用子程序。DOS规定用中断指令INT21H进入各功能调用子程序的总入口,再为每个功能调用规定一个功能号以便进入相应各个子程序的入口。子程序的入口参数及出口参数在每个功能调用的说明中可以查到。DOS系统功能调用的使用方法如下:(1)在AH寄存器中存入所要调用功能的功能号;(2)根据所调用功能的规定设置入口参数;(3)用INT21H指令转入子程序入口;(4)相应的子程序运行完后,可以按规定取得出口参数。DOS共提供了80个功能调用。大致分为设备管理、文件管理和目录管理等几类。在DOS功能中,通过对中断INT21H功能号(2AH-2DH)调用可实现系统时间提取、预置,在屏幕上实时显示日期和时间。功能号2AH:取日期返回参数DH:DL=月:日(二进制)功能号2BH:设置日期调用参数CX:DH:DL=年:月:日返回参数AL=0成功否则失败功能号2CH:取时间返回参数CH:CL=时:分DH:DL=秒:1/100秒功能号2DH:设置时间调用参数CH:CL=时:分返回参数AL=0成功否则失败DH:DL=秒:1/100秒四、实验题目利用DOS功能,实现系统时间提取、预置,要求在屏幕上实时显示日期和时间,按任意键停止。五、思考题1、编写16进制转换成10进制的程序。2、编写10进制转换成16进制的程序。6六、预习要求1、熟悉和掌握实验目的。2、复习相关知识,初步完成实验内容的源程序和操作步骤。七、实验报告要求1、要求写出算法和算法流程图。2、记录实验中的源程序。3、记录实验中的执行结果。4、对照预习时的源程序是否与实验记录相同,分析原因。7附录1DEBUG主要命令DEBUG是为汇编语言设计的一种高级工具,它通过单步、设置断点等方式为汇编语言程序员提供非常有效的调试手段。DEBUG程序的调用在DOS的提示符下,键入命令:c:\debug[d:][path][filename[.ext][parm1][parm2]其中,文件名是被调试文件的名字。如用户键入文件,则DEBUG将指定的文件装入存储器中,用户便可对其进行调试。如果未键入文件名,则用户可用当前存储器的内容工作,或者用DEBUG命令N和L把需要的文件装入存储器后再进行调试。命令中的D指定驱动器PATH为路径,PARM1和PARM2则为运行被调试文件时所需要的命令参数。注意:文件的扩展名不能省略。在DEBUG程序调入后,将出现提示符,此时就可用DEBUG命令来调试程序。1.显示存储单元的命令D显示存储单元的命令的格式为:-D[address]或_D[rang]例如,按指定范围显示存储单元内容的方法为:-d10012018E4:0100c70604023801c706-06020002c7060802G…8.G…..G…18E4:01100202bb0402e80200-CD20505156578B37..;..h..MPQVW.718E4:0120bB其中,0100至0120是DEBUG显示的单元内容,左边用十六进制表示每个字节,右边的ASCII字符表示每个字节,·表示不可显示的字符。这里没有指定段地址,D命令自动显示DS段的内容。如果只指定首地址,则显示从首地址开始的80个字节的内容。如果完全没有指定地址,则显示上一个D命令显示的最后一个单元后的内容。2.修改存储单元内容的命令E修改存储单元内容的命令有2种。第一种格式可用给定的内容替代指定范围的存储单元内容。命令格式为:-Eaddress[list]例如,-EDS:100F3’XYZ’8D。其中F3,’X’,’Y’,’Z’和8D各占一个字节。该命令可用这5个字节来替代存储单元DS:0100到0104的原先的内容。第二种格式采用逐个单元相继修改的方法。命令格式为:-Eaddress例如,-EDS:100。则可能显示为:18E4:010089.-如果需要把该单元的内容修改为78,则用户可以直接键入78,再按“空格”键,完成修改,并显示下一个单元的内容:18E4:010089.781B.-这样,用户可以不断修改相继单元的内容,直到用ENTER键结束该命令为止。3.填写命令F(FILL)其格式为:-Frangelist例如:-F4BA:01005F3
本文标题:微机原理与汇编语言实验指导书
链接地址:https://www.777doc.com/doc-2469870 .html