微机原理实验指导书.doc_第1页
微机原理实验指导书.doc_第2页
微机原理实验指导书.doc_第3页
微机原理实验指导书.doc_第4页
微机原理实验指导书.doc_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

微机原理及应用实验指导书王建霞 主编河北科技大学信息科学与工程学院2005.3前 言本指导书结合教材微型计算机原理及应用的内容以及本、专科生实验大纲的要求编制。软件实验中给出了程序框图和主要程序清单。硬件实验中给出了硬件结构图及连线图。其中程序清单仅仅是为了学生编程序时作为参考用的,学生在做实验前,必须充分预习,自己编制程序,才能准予上机做实验。本指导书中除了大纲中规定必做的实验外,还给大家提供了一些有实用性的选做实验。以满足课外自由实验上机学生的要求。 本实验指导书内容较丰富、系统,除可以作为计算机专业大学本科实验指导书外,也可以作为非计算机专业的研究生学习微型计算机的实验指导书,也可作为各类型的微型计算机培训班的实验指导书。本实验指导书由王建霞、陈义峰老师编写,因水平有限,难免有不足之处,请老师同学多提宝贵意见。 编者于 2005.3 目 录实验一 Debug练习及汇编语言程序的建立和运行(4)实验二 两个多位十进制数加减运算编程(11)实验三 十进制数乘除运算编程(15)实验四 排序实验(22)实验一 Debug练习及汇编语言程序的建立和运行一、实验目的1、学习debug状态下,汇编语言程序的编程和运行方法2、掌握汇编语言程序的建立和运行3、掌握debug状态下调试和运行汇编语言程序的方法二、实验原理debug是调试汇编语言程序的工具,它不仅能跟踪程序的运行,还可显示修改内存与寄存器内容,以便在调试程序中检查程序,找错,改错;它还支持小汇编,直接对小段程序进行汇编;也可对盘进行读写操作。但debug不宜汇编较长的程序,不便于分块程序的设计,不能使用绝大多数ASM和MASM提供的伪指令。 debug命令以单个字母的命令符开头,然后是命令操作参数,操作参数与操作参数之间,用空格或逗号分开,操作参数与命令符之间用空格隔开,命令的结束符是回车键。命令及参数的输入可以是大小写的结合,CtrL +break键中止命令的执行。debug下所用的数均为十六进制数,且不必写H。三、预习要求1、用debug汇编语言程序建立过程和调试方法2、写出预习报告 debug的常用命令有: 1汇编命令A 格式:(1) A: (2) A: (3) A (4) A功能:键入该命令后显示段地址和位移并等待用户从键盘逐条键入汇编命令,逐条汇编成代码指令,直到显示下一地址时用户直接键入回车键返回到提示符“”。其中(1)用指定寄存器内容作段地址,(3)用CS内容作段地址,(4)用CS:0100作地址。以后其它命令中提及的各种“地址”形式,均为(1)、(2)、(3)中A后的地址形式。2反汇编命令U格式1:U 格式2:U 功能:将指定范围内的代码以汇编语句形式显示,同时显示地址及代码。注意,反汇编时一定确认指令的起始地址后再作,否则将得不到正确结果。地址及范围的缺省值是上次U指令后下一地址的值。这样可以连续反汇编。 3显示内存命令 格式:(1) D;以CS为段寄存器 (2) D (3) D;显示CS:0100起始的一片内容。功能:以两种形式显示指定内存范围内容。一种形式为十六进制内容,一种形式为相应字节的ASCII码字符,对不可见字符以“”代替。 4修改内存命令E 格式:(1) (2) E 功能:(1)将指定内容写入指定单元后显示下一地址,可连续键入修改内容,直到新地址出现后键入为止。 (2)将逐一写入由开始的一片单元。 5填充内存命令F格式:F 功能:将单元内容表中的值逐个填入指定范围,单元内容表中内容用完后重复使用。例如:F 12FF:0000 0100 A D 12FF:0000 0100 6显示并修改寄存器命令R格式1:R格式2:R 功能:格式1显示当前所有寄存器内容,状态标志及将要执行的下一指令的地址,代码及汇编语句格式。其中对状态标志FLAG以每位的形式显示。格式2显示指定寄存器内容。 例如:R IP 7单步执行并显示系统环境T 格式:T=功能:的缺省值是当前IP值,的缺省值是一条。执行由指定地址起始的指定的若干条指令。 例如:T;执行当前指令并显示状态 T10;从当前指令始执行10H条指令。 8连续执行命令 格式:(1)G= (2)G;从IP指向的地址开始执行程序到结束地址。 9退出debug命令Q Q (二)、启动操作系统 例如:利用串操作传送指令将0FFH送入附加段的0180H开始的128个字节存储单元中,编写一段程序。1进入DEBUG状态,用鼠标直接点击debug文件2用A命令编辑源程序一A :0100 MOV DI,0180 0103 MOV CX, 80 0106 MOV AL, FF 0108 REP STOSB 010A HLT 010B 3.用U命令反汇编以上源程序U CS:0100 :0100 BF8001 MOV DI,0180 :0103 B98000 MOV CX,0080 :0106 BOFF MOV AL,FF :0108 F3 REPE :0109 AA STOSB :010A F4 HLT4.若源程序有错可返回第2步用A命令进行修改,再进行第3步。若无错误,可运行程序。5.用R命令观察程序未执行前,程序中各有关寄存器内容,并填入括号内。一R AL=( ) DI=( ) CX=( ) DS=( ) CS=( ) IP=( )6.用D命令观察程序未执行前,存放结果的存储区的内容。D ES:0180 7.用T命令执行一条指令,观察DI寄存器内容的变化,并填入此值:T DI=( ) IP=( ) CS=( )8.用T命令一条条执行程序,并观察相应寄存器内容或存储单元内容,一直执行到最后一条指令为止。 9.用D命令观察最终结果D ES:0180 此时可观察到ES:0180ES:01FF单元中的内容已全部改为FF。10.用R命令改变IP值,使它返回到程序的第一条指令处。 R IP IP :0100 11.用R命令以观察IP值;已改为0100 R 12.用A命令对存储数据的缓冲区改变位置A 0100 :0100 MOV DI,0200 :0103 13.用D命令观察程序执行前,存储区的内容 D ES:0200 14.用G命令设置断点为HLT指令处 G 010A 15.再用D命令观察执行结果 D ES:0200 将会观察到ES:0200ES:027F的内容改变为FF。(三)、可执行文件的生成1、在桌面状态下,点击我的电脑,含有文件夹ASM的驱动器。 例如:进入全屏幕编辑状态,点击 EDIT CODE SEGMENT ASSUME CS:CODE,DS:CODESTART: MOV AX,CODE MOV DS,AXMOV DX,OFFSET AAMOV AH,09INT 21HMOV AH,4CHINT 21HAA DB HOW ARE YOU $CODE ENDS END START2汇编源程序用汇编程序对源程序进行汇编生成机器能够识别的机器语言,即生成了目标文件(*obj)。汇编的结果给出了程序的错误语句,可以根据错误提示修改源程序。其操作步骤如下:点击 MASM Microsoft(R) Macro Assembler Version 5.0 Copyright(c) Microsoft Corp 19811985,1987 ALL rights reservedSource filename .ASM test Object filename test.obj: Source Listing NUL.LST: Crossreference NUL.CRF:51736+405848 bytes Symbol Space free0 warning errors0 severe errors汇编的对象是用户编写的汇编语言源程序,它必须是以ASM为扩展名。汇编程序的输出文件有三个,第一个目标文件,它以OBJ为扩展名,产生OBJ文件是我们进行汇编操作的主要目的;第二个是列表文件,它以LST为扩展名,列表文件同时给出源程序和机器语言程序,从而可以使调试变得方便,列表文件是可有可无的,如不要,直接键入回车键即可,如需要,则打入文件名和回车;第三是交叉符号表,此表给出了用户定义的所有符号,对每个符号都列出了将其定义的所在行号和引用的符号,并在定义行号上加“#”号,同列表文件一样,交叉符号表为调试工作带来很大的方便。交叉符号表也是可有可无的,如不需要,那么在屏幕上出现提示信息NUL.CRF:时,打入回车即可。汇编过程结束时,会给出源程序中的警告性错误warning Errors和严重错误severe Errors,前者指一般性错误,后者指语法性错误,当存在这两类错误时,屏幕上除指出错误个数表外,还给出错误信息代号和错误所在的行号。如果汇编过程中有错误,则程序员应该重新用编辑命令进行修改,再进行汇编,最终直到汇编正确通过。要指出的是汇编过程只能指出源程序中的语法错误,并不能指出算法错误和其它错误。3用Link命令产生可执行文件(*.EXE文件)汇编过程根据源程序产生二进制的目标文件(OBJ文件),但OBJ文件用的是浮动地址,它不能直接上机执行。所以还必须使用链接程序(LINK)将OBJ文件转换成可执行的EXE文件。Link命令还可以将一个目标文件和其它多个模块(这些模块是由用户编写的,也可以是某个程序库中存在的)链接起来。具体操作如下:点击Link 此时屏幕上见到如下回答信息:IBM Personal computer LinkerVersion 2.00(C)copyright IBM Corpl981,1982,1983RUN FiletestEXE:List FileNUL.MAP:test Libraries.LiB:Waming:1 NO Stack segmentthere was 1 error detectedLink命令有一个输入文件,即OBJ文件,有时,用户程序用到库函数,此时,对于提示信息Libraries.LiB要输入库名。Link过程产生两个输出文件,一个是扩展名为EXE的执行文件,产生此文件是Link过程的主要目的,另一个是扩展名MAP的列表分配文件,有人也称它为映像文件,它给出每个段在内存中的分配情况MAP文件也是可有可无的。4程序执行点击 文件名 如果运行结果不正确可把exe文件装入debug进行调试,发现错误并改正。方法是点击 debug _N 文件名.exe _L _U四、实验设备硬件环境 IBM/PC及其兼容机软件环境 操作系统WINDOWS95以上版本调试程序 DEBUG.COM 编辑程序 EDIT.EXE汇编程序 MASM.EXE 连接程序 LINK.EXE五、实验内容(1)1.将数据段中0200字节存储单元中的二位BCD码转换为二个ASCII码送0201H 开始的二个字节单元中,编写一段程序。2.编写一段程序,在内存中自0200地址开始的连续七个单元中存入09的平方值。要求利用计算法查表求0210单元中指定数09中的任意一数的平方值,并将所求平方值存入0211单元中。实验内容(2)1.显示一个字符2.从键盘上读取一个字符并显示3.间隔0.5秒显示8个六、思考题 自编一个汇编语言程序并调试。七、实验报告的要求1、填写实验课程及实验名称2、画出流程图或方框图3、编写程序4、总结实验结果和体会实验二 两个多位十进制数加减运算编程一、实验目的学习数据传送和算术运算指令的用法。二、实验原理将两个多位十进制数相加。要求被加数均以ASCII码形式各自顺序存放在以DATAl和DATA2为首的5个内存单元中(低位在前),结果送回DATAl处。三、预习要求1、汇编语言程序建立过程和调试方法2、写出预习报告四、实验设备PC机一台五、实验内容及步骤显示被加数和加数被加数和加数以ASCII码表示的数字串形式转化为由十六进制表示的数字串形式计数值5CX清除最低位进位执行ADC带进位相加AAA调整结果送被加数区调整偏移量CX1=0?十六进制的结果转化为ASCII码表示的数字串结束显示结果1、参考程序框图2、参考程序清单CRLF MACRO ;建立宏指令CRLFMOV DL,0DHMOV AH,02HINT 21HMOV DL,0AHMOV AH,02HINT 21HENDMDATA SEGMENTDATA1 DB 33H,39H,31H,37H,34H ;第一个数据(作为被加数)DATA2 DB 36H,35H,30H,38H,32H ;第二个数据(作为加数)DATA ENDSSTACK SEGMENT ;堆栈段STA DB 20 DUP(?)TOP EQU LENGTH STA STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATASTART: MOV AX,DATAMOV DS,AXMOV AX,STACKMOV SS,AXMOV AX,TOPMOV SP,AXMOV SI,OFFSET DATA2MOV BX,05CALL DISPL ;显示被加数CRLFMOV SI,OFFSET DATAlMOV BX,05 ;显示加数CALL DISPLCRLFMOV DI,OFFSET DATA2CALL ADDA ;加法运算MOV SI,OFFSET DATAlMOV BX,05 ;显示结果CALL DISPLCRLFMOV AX,4C00HINT 21HDISPL PROC NEAR ;显示子功能DS1: MOV AH,02MOV DL,SI+BX1 ;显示字符串中一字符INT 21HDEC BX ;修改编移量JNZ DSlRETDISPL ENDPADDA PROC NEARMOV DX,SIMOV BP,DIMOV BX,05AD1: SUB BYTE PTRSI+BX-1,30HSUB BYTE PTRDI+BX-1,30HDEC BX ;将ASCII码表示的数字串转化 为十六进制的数字串JNZ ADlMOV SI,DXMOV DI,BPMOV CX,05 ;包括进位,共5位CLC AD2: MOV AL,SIMOV BL,DIADC AL,BL ;带进位相加AAA ;非组合BCD码的加法调整MOV SI,AL ;结果送被加数区INC SIINC DI ;指向下一位LOOP AD2 ;循环MOV SI,DXMOV DI,BPMOV BX,05AD3: ADD BYTE PTRSI+BX-1,30HADD BYTE PTRDI+BX-1,30HDEC BX ;十六进制的数字串转化为ASCII码表示的数字串JNZ AD3RET ADDA ENDP CODE ENDSEND START六、思考题 自编两个多位十进制数相减程序。七、实验报告的要求1、填写实验课程及实验名称2、画出流程图或方框图3、编写程序4、总结实验结果和体会 实验三 十进制数乘除运算编程(1)两个数相乘的实验一、实验目的掌握乘法指令和循环指令的用法二、实验原理实现十进制数的乘法。被乘数和乘数均以ASCII码形式存放在内存中,乘积在屏幕上显示出来。三、预习要求1、汇编语言程序建立过程和调试方法2、写出预习报告四、实验设备PC机一台五、实验内容及步骤1、程序框图乘数BLBL中数由ASCII码转化为十六进支数SI指向被乘数DI指向存储结果区域(预清0)取被乘数SI单元与BL相乘AAM调整结果DIDI+1指向下一单元本次计算的进位DICX-1=0?显示结果结束计数值5CX结果低位与前次计算的进位DI相加AAA调整2、程序清单DATA SEGMENTDATAl DB 32H,39H,30H,35H,34HDATA2 DB 33HRESULT DB 6 DUP(00H)DATA ENDSSTACK SEGMENTSTA DB 20 DUP(?)TOP EQU LENGTH STASTACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATASTART: MOV AX,DATAMOV DS,AXMOV AX,STACKMOV SS,AXMOV AX,TOPMOV SP,AXMOV SI,OFFSET DATA2 MOV BL,SI ;乘数2BL AND BL,00001111B ;屏蔽高4位,ASCII码转化为十六进制数MOV SI,OFFSET DATAl MOV DI,OFFSET RESULTMOV CX,05LOOPl: MOV AL,SIAND AL,00001111B ;取被乘数1,ASCII变十六进制数INC SI ;指向被乘数1的下一字符单元MUL BL ;相乘AAM ;AAM调整ADD AL,DI ;结果低位与前次计算的进位相加AAA ;AAA调整MOV DI,ALINC DI ;结果送存到下一单元MOV DI,AH LOOP LOOP1 ;计算机结果高位进位送存MOV CX,06 MOV SI,OFFSET RESULTDISPL: MOV AH,02MOV DL,SIADD DL,30H INT 21H DEC SILOOP DISPL ;显示结果MOV AX,4C00HINT 21H ;结束CODE ENDS END START六、思考题 自编两个多位十进制数相减程序。七、实验报告的要求1、填写实验课程及实验名称2、画出流程图或方框图3、编写程序4、总结实验结果和体会(2)BCD码相乘的程序一、实验目的掌握用组合的BCD码表示数据,并熟悉怎样实现组合BCD码乘法运算二、实验原理实现BCD码的乘法,要求被乘数和乘数以组合的BCD码形式存放,各占一个内存单元。乘积存放在另外两个内存单元中。由于没有组合的BCD码乘法指令,程序中采用将乘数1作为计数器,累加另一个乘数的方法得到计算结果。三、预习要求1、汇编语言程序建立过程和调试方法2、写出预习报告四、实验设备在PC机上建立、汇编、连接、调试和运行8088/8086汇编语言程序五、实验内容及步骤显示乘数1和乘数2乘数1计数器BL中部分积DX清0BL=0?乘数2与部分积低位相加DAA调整DAA调整结果DH计数器BL的值减1DAS调整,并将结果送BL进位位清0结果DL部分积高位进行进位位调整显示结果结束 1、程序框图2、程序清单DISPL MACROADD DL,30H MOV AH,02 INT 21HENDMCRLF MACROMOV DL,0DHMOV AH,02INT 21HMOV DL,0AHMOV AH,02INT 21HENDM DATA SEGMENT DATAl DB 01001000B ;48HDATA2 DB 01110101B ;75HRESULT DW ?DATA ENDS STACK SEGMENT STA DB 20 DUP(?)TOP EQU LENGTH STASTACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA START: MOV AX,DATAMOV DS,AXMOV AX,STACKMOV SS,AXMOV AX,TOPMOV SP,AXMOV DI,OFFSET RESULT ;指向结果存储区MOV SI,OFFSET DATAl ;指向乘数1MOV AH,SIMOV CL,04SHR AH,CL ;显示乘数1高位字节MOV DL,AH DISPL MOV AL,SI MOV BL,AL ;显示乘数1低位字节AND AL,00001111B MOV DL,AL DISPLCRLF ;回车换行MOV SI,OFFSET DATA2 ;指向乘数2MOV AH,SIMOV CL,04SHR AH,CL ;显示乘数2高位字节MOV DL,AHDISPLMOV AL,SIAND AL,00001111BMOV DL,AL ;显示乘数2低位字节DISPLCRLF ;回车换行XOR DX,DX ;DX(部分积)清0S1: CMP BL,0 JZ S2 ;乘数1的值已减为O否?CLCMOV AL,SIADC AL,DL ;乘数2加部分积低位DAA ;组合的BCD码调整MOV DL,AL ;结果送部分积高位MOV AL,00HADC AL,DH ;往部分高位送进位DAA ;组合BCD码调整MOV DH,AL ;结果送部分积高位MOV AL,BLDEC AL ;乘数1的值减1DAS ;组合BCD码减法调整MOV BL,AL ;结果送BLJMP S1S2: MOV RESULT,DX ;结果送存储器MOV SI,DXMOV CL,4SHR DH,CLMOV DL,DHDISPL MOV DX,SI ;显示结果高2位 AND DH,00001111BMOV DL,DHDISPLMOV DX,SIMOV CL,4SHR DL,CL DISPL MOV DX,SI ;显示结果低2位 AND DL,00001111B DISPL CRLF ;回车换行S3: MOV AX,4C00H INT 21H ;返回DOSCODE ENDSEND START六、思考题 自编两个多位十进制数相减程序。七、实验报告的要求1、填写实验课程及实验名称2、画出流程图或方框图,并编写程序3、总结实验结果和体会实验四排序实验一、实验目的掌握用汇编语言编写的程序的思路和方法。二、实验原理首地址为1000H开始存放50个数,要求设计程序将这些数由小到大排序,排序后的数,仍放在该区域中。三、预习要求(b)(a)入口段寄存器和堆栈初始化显示“请输入段址”调GETNUM,键入段址送ES调GETNUM,输入偏移量送SIDS也指向附加段从SI+BX单元取数送AL交换单元指针AH=BLCX入栈计算内循环次数送CX显示“请输入偏移量”外循环次数SORTNUM-1送CX偏移指针BX清0内循环控制变量DX初始化DX值加1比较AL与DX指示单元的值1、汇编语言程序建立过程和调试方法2、写出预习报告四、实验设备PC机一台、五、实验内容及步骤从首地址为1000H开始存放50个数,要求设计程序将这些数由小到大排序,排序后的数,仍放在该区域中。1、 程序框图N(b)(a)NAL较大?DX指示单元的值赋给AL,并修改指针AH偏移指针BX加1循环调DISPP,将排序后的数依次显示出来返回DOSCX出栈NCX减1为0?显示“SORT OK!”CX减1为0?交换SI+BX单元和AH指针指示的单元的值2、程序清单CRLF MACRO MOV AH,02H MOV DL,0DH INT 21H MOV AH,02H MOV DL,0AHINT 21HENDMDATA SEGMENTSORTNUM EQU 9MESSl DB INPUT SEGMENT VALUE:$MESS2 DB INPUT OFFSET VALUE:$MESS3 DB SORT OK! 0DH,0AH,$DRROR DB INPUT ERROR! ,0DH,0AH,$DATA ENDSSTACK SEGMENTSTA DW 32 DUP(?)TOP DW ?STACK ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACKSTART: MOV AX,DATAMOV DS,AXMOV ES,AXMOV SP,TOP ;初始化MOV AH,09H MOV DX,OFFSET MESSlINT 21H ;提示信息1CALL GETNUMMOV ES,DXCRLF ;键入段址送BSMOV AH,09HMOV DX,OFFSET MESS2INT 21H ;提示信息2CALL GETNUMMOV SI,DX ;键入偏称量送SIPUSH ES POP DS ;ESDS MOV CX,SORTNUM ;排序数的长度 DEC CX ;外循环次数 XOR BX,BX ;偏移指针清0: MOV AL,SI+BX ;取数 MOV AH,BL ;AH为交换单元指针 PUSH CX MOV CX,SORTNUM SUB CX,BX DEC CX ;计算内循环次数MOV DX,BX ;初始化内循环控制变量JJJ: INC DX ;内循环控制变量值增1PUSH BX ;入栈保存MO

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论