首页 王建霞——微机原理实验指导书[1]

王建霞——微机原理实验指导书[1]

举报
开通vip

王建霞——微机原理实验指导书[1]《微机原理及应用》 实验指导书 王建霞 主编 河北科技大学 信息科学与工程学院 2005.3 前 言 本指导书结合教材《微型计算机原理及应用》的内容以及本、专科生实验大纲的要求编制。软件实验中给出了程序框图和主要程序清单。硬件实验中给出了硬件结构图及连线图。其中程序清单仅仅是为了学生编程序时作为参考用的,学生在做实验前,必须充分预习,自己编制程序,才能准予上机做实验。本指导书中除了大纲中规定必做的实验外,还给大家提供了一些有实用性的选做实验。以满足课外自由实验上机学生的要求。 本实验指导书内...

王建霞——微机原理实验指导书[1]
《微机原理及应用》 实验指导书 王建霞 主编 河北科技大学 信息科学与 工程 路基工程安全技术交底工程项目施工成本控制工程量增项单年度零星工程技术标正投影法基本原理 学院 2005.3 前 言 本指导书结合教材《微型计算机原理及应用》的 内容 财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容 以及本、专科生实验大纲的要求编制。软件实验中给出了程序框图和主要程序清单。硬件实验中给出了硬件结构图及连线图。其中程序清单仅仅是为了学生编程序时作为参考用的,学生在做实验前,必须充分预习,自己编制程序,才能准予上机做实验。本指导书中除了大纲中规定必做的实验外,还给大家提供了一些有实用性的选做实验。以满足课外自由实验上机学生的要求。 本实验指导书内容较丰富、系统,除可以作为计算机专业大学本科实验指导书外,也可以作为非计算机专业的研究生学习微型计算机的实验指导书,也可作为各类型的微型计算机培训班的实验指导书。 本实验指导书由王建霞、、陈义峰老师编写,因水平有限,难免有不足之处,请老师同学多提宝贵意见。 编者于 2005.3 目 录 实验一 Debug练习及汇编语言程序的建立和运行……………………(4) 实验二 两个多位十进制数加减运算编程………………………………(11) 实验三 十进制数乘除运算编程…………………………………………(15) 实验四  排序实验…………………………………………………………(22) 实验五 存储器扩展实验…………………………………………………(34) 实验一 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) E<地址><单元内容> (2) E<地址><单元内容 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf > 功能:(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.连续执行命令G 格式:(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 HLT 4.若源程序有错可返回第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:0180~ES: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:0200~ES:027F的内容改变为FF。 (三)、可执行文件的生成 1、在桌面状态下,点击我的电脑,含有文件夹ASM的驱动器。 例如:进入全屏幕编辑状态,点击 EDIT ↙ CODE SEGMENT ASSUME CS:CODE,DS:CODE START: MOV AX,CODE MOV DS,AX MOV DX,OFFSET AA MOV AH,09 INT 21H MOV AH,4CH INT 21H AA DB ′HOW ARE YOU $′ CODE ENDS END START 2.汇编源程序 用汇编程序对源程序进行汇编生成机器能够识别的机器语言,即生成了目标文件(*.obj)。汇编的结果给出了程序的错误语句,可以根据错误提示修改源程序。 其操作步骤如下: 点击 MASM ↙ Microsoft(R) Macro Assembler Version 5.0 Copyright(c) Microsoft Corp 1981—1985,1987 ALL rights reserved Source filename [.ASM] test ↙ Object filename [test.obj]: ↙ Source Listing [NUL.LST]: ↙ Cross—reference [NUL.CRF]:↙ 51736+405848 bytes Symbol Space free 0 warning errors 0 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 Linker Version 2.00(C)copyright IBM Corpl981,1982,1983 RUN File[test.EXE]:↙ List File[NUL.MAP]:test ↙ Libraries[.LiB]:↙ Waming:1 NO Stack segment there was 1 error detected Link命令有一个输入文件,即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.将数据段中0200H字节存储单元中的二位BCD码转换为二个ASCII码送0201H 开始的二个字节单元中,编写一段程序。 2.编写一段程序,在内存中自0200H地址开始的连续七个单元中存入0~9的平方值。要求利用计算法查表求0210H单元中指定数0~9中的任意一数的平方值,并将所求平方值存入0211H单元中。 实验内容(2) 1.显示一个字符‘A’ 2.从键盘上读取一个字符并显示 3.间隔0.5秒显示8个A 六、思考 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 自编一个汇编语言程序并调试。 七、实验报告的要求 1、填写实验课程及实验名称 2、画出 流程 快递问题件怎么处理流程河南自建厂房流程下载关于规范招聘需求审批流程制作流程表下载邮件下载流程设计 图或方框图 3、编写程序 4、总结实验结果和体会 实验二 两个多位十进制数加减运算编程 一、实验目的 学习数据传送和算术运算指令的用法。 二、实验原理 将两个多位十进制数相加。要求被加数均以ASCII码形式各自顺序存放在以DATAl和DATA2为首的5个内存单元中(低位在前),结果送回DATAl处。 三、预习要求 1、汇编语言程序建立过程和调试方法 2、写出预习报告 四、实验设备 PC机一台 五、实验内容及步骤 1、参考程序框图 2、参考程序清单  CRLF MACRO ;建立宏指令CRLF MOV DL,0DH MOV AH,02H INT 21H MOV DL,0AH MOV AH,02H INT 21H ENDM DATA SEGMENT DATA1 DB 33H,39H,31H,37H,34H ;第一个数据(作为被加数) DATA2 DB 36H,35H,30H,38H,32H ;第二个数据(作为加数) DATA ENDS STACK SEGMENT ;堆栈段 STA DB 20 DUP(?) TOP EQU LENGTH STA STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA START: MOV AX,DATA MOV DS,AX MOV AX,STACK MOV SS,AX MOV AX,TOP MOV SP,AX MOV SI,OFFSET DATA2 MOV BX,05 CALL DISPL ;显示被加数 CRLF MOV SI,OFFSET DATAl MOV BX,05 ;显示加数 CALL DISPL CRLF MOV DI,OFFSET DATA2 CALL ADDA ;加法运算 MOV SI,OFFSET DATAl MOV BX,05 ;显示结果 CALL DISPL CRLF MOV   AX,4C00H INT 21H DISPL PROC NEAR ;显示子功能 DS1: MOV AH,02 MOV DL,[SI+BX-1] ;显示字符串中一字符 INT 21H DEC BX ;修改编移量 JNZ DSl RET DISPL ENDP ADDA PROC NEAR MOV DX,SI MOV BP,DI MOV BX,05 AD1: SUB BYTE PTR[SI+BX-1],30H SUB BYTE PTR[DI+BX-1],30H DEC BX ;将ASCII码表示的数字串转化 为十六进制的数字串 JNZ ADl MOV SI,DX MOV DI,BP MOV CX,05 ;包括进位,共5位 CLC AD2: MOV AL,[SI] MOV BL,[DI] ADC AL,BL ;带进位相加 AAA ;非组合BCD码的加法调整 MOV [SI],AL ;结果送被加数区 INC SI INC DI ;指向下一位 LOOP AD2 ;循环 MOV SI,DX MOV DI,BP MOV BX,05 AD3: ADD BYTE PTR[SI+BX-1],30H ADD BYTE PTR[DI+BX-1],30H DEC BX ;十六进制的数字串转化为ASCII码表示的数字串 JNZ AD3 RET ADDA ENDP CODE ENDS END START 六、思考题 自编两个多位十进制数相减程序。 七、实验报告的要求 1、填写实验课程及实验名称 2、画出流程图或方框图 3、编写程序 4、总结实验结果和体会 实验三 十进制数乘除运算编程 (1) 两个数相乘的实验 一、实验目的 掌握乘法指令和循环指令的用法 二、实验原理 实现十进制数的乘法。被乘数和乘数均以ASCII码形式存放在内存中,乘积在屏幕上显示出来。 三、预习要求 1、汇编语言程序建立过程和调试方法 2、写出预习报告 四、实验设备 PC机一台 五、实验内容及步骤 1、程序框图 2、程序清单 DATA SEGMENT DATAl DB 32H,39H,30H,35H,34H DATA2 DB 33H RESULT DB 6 DUP(00H) DATA ENDS STACK SEGMENT STA DB 20 DUP(?) TOP EQU LENGTH STA STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA START: MOV AX,DATA MOV DS,AX MOV AX,STACK MOV SS,AX MOV AX,TOP MOV SP,AX MOV SI,OFFSET DATA2 MOV BL,[SI] ;乘数2(BL AND BL,00001111B ;屏蔽高4位,ASCII码转化为十六进制数 MOV SI,OFFSET DATAl MOV DI,OFFSET RESULT MOV CX,05 LOOPl: MOV AL,[SI] AND AL,00001111B ;取被乘数1,ASCII变十六进制数 INC SI ;指向被乘数1的下一字符单元 MUL BL ;相乘 AAM ;AAM调整 ADD AL,[DI] ;结果低位与前次计算的进位相加 AAA ;AAA调整 MOV [DI],AL INC DI ;结果送存到下一单元 MOV [DI],AH LOOP LOOP1 ;计算机结果高位进位送存 MOV CX,06 MOV SI,OFFSET RESULT DISPL: MOV AH,02 MOV DL,[SI] ADD DL,30H INT 21H DEC SI LOOP DISPL ;显示结果 MOV AX,4C00H INT 21H ;结束 CODE ENDS END START 六、思考题 自编两个多位十进制数相减程序。 七、实验报告的要求 1、填写实验课程及实验名称 2、画出流程图或方框图 3、编写程序 4、总结实验结果和体会 (2) BCD码相乘的程序 一、实验目的 掌握用组合的BCD码表示数据,并熟悉怎样实现组合BCD码乘法运算 二、实验原理 实现BCD码的乘法,要求被乘数和乘数以组合的BCD码形式存放,各占一个内存单元。乘积存放在另外两个内存单元中。 由于没有组合的BCD码乘法指令,程序中采用将乘数1作为计数器,累加另一个乘数的方法得到计算结果。 三、预习要求 1、汇编语言程序建立过程和调试方法 2、写出预习报告 四、实验设备 在PC机上建立、汇编、连接、调试和运行8088/8086汇编语言程序 五、实验内容及步骤 1、程序框图 2、程序清单 DISPL MACRO ADD DL,30H      MOV AH,02      INT 21H ENDM CRLF MACRO MOV DL,0DH MOV AH,02 INT 21H MOV DL,0AH MOV AH,02 INT 21H ENDM    DATA SEGMENT DATAl DB 01001000B ;48H DATA2 DB 01110101B ;75H RESULT DW ? DATA ENDS STACK SEGMENT STA DB 20 DUP(?) TOP EQU LENGTH STA STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA START: MOV AX,DATA MOV DS,AX MOV AX,STACK MOV SS,AX MOV AX,TOP MOV SP,AX MOV DI,OFFSET RESULT ;指向结果存储区 MOV SI,OFFSET DATAl ;指向乘数1 MOV AH,[SI] MOV CL,04 SHR AH,CL ;显示乘数1高位字节 MOV DL,AH DISPL MOV AL,[SI] MOV BL,AL ;显示乘数1低位字节 AND AL,00001111B MOV DL,AL DISPL CRLF ;回车换行 MOV SI,OFFSET DATA2 ;指向乘数2 MOV AH,[SI] MOV CL,04 SHR AH,CL ;显示乘数2高位字节 MOV DL,AH DISPL MOV AL,[SI] AND AL,00001111B MOV DL,AL ;显示乘数2低位字节 DISPL CRLF ;回车换行 XOR DX,DX ;DX(部分积)清0 S1: CMP BL,0 JZ S2 ;乘数1的值已减为O否? CLC MOV AL,[SI] ADC AL,DL ;乘数2加部分积低位 DAA ;组合的BCD码调整 MOV DL,AL ;结果送部分积高位 MOV AL,00H ADC AL,DH ;往部分高位送进位 DAA ;组合BCD码调整 MOV DH,AL ;结果送部分积高位 MOV AL,BL DEC AL ;乘数1的值减1 DAS ;组合BCD码减法调整 MOV BL,AL ;结果送BL JMP S1 S2: MOV [RESULT],DX ;结果送存储器 MOV SI,DX MOV CL,4 SHR DH,CL MOV DL,DH DISPL MOV DX,SI ;显示结果高2位 AND DH,00001111B MOV DL,DH DISPL MOV DX,SI MOV CL,4 SHR DL,CL DISPL MOV DX,SI ;显示结果低2位 AND DL,00001111B DISPL CRLF ;回车换行 S3: MOV AX,4C00H INT 21H ;返回DOS CODE ENDS END START 六、思考题 自编两个多位十进制数相减程序。 七、实验报告的要求 1、填写实验课程及实验名称 2、画出流程图或方框图,并编写程序 3、总结实验结果和体会 实验四 排序实验 一、实验目的 掌握用汇编语言编写的程序的思路和方法。 二、实验原理 首地址为1000H开始存放50个数,要求设计程序将这些数由小到大排序,排序后的数,仍放在该区域中。 三、预习要求 1、汇编语言程序建立过程和调试方法 2、写出预习报告 四、实验设备 PC机一台、 五、实验内容及步骤 从首地址为1000H开始存放50个数, 要求设计程序将这些数由小到大排序, 排序后的数,仍放在该区域中。 1、 程序框图 2、程序清单 CRLF MACRO MOV AH,02H MOV DL,0DH INT 21H MOV AH,02H MOV DL,0AH INT 21H ENDM DATA SEGMENT SORTNUM EQU 9 MESSl DB ′INPUT SEGMENT VALUE:$′ MESS2 DB ′INPUT OFFSET VALUE:$′ MESS3 DB ′SORT OK! ′0DH,0AH′,$′ DRROR DB ′INPUT ERROR! ′,0DH,0AH′,$′ DATA ENDS STACK SEGMENT STA DW 32 DUP(?) TOP DW ? STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX MOV ES,AX MOV SP,TOP ;初始化 MOV AH,09H MOV DX,OFFSET MESSl INT 21H ;提示信息1 CALL GETNUM MOV ES,DX CRLF ;键入段址送BS MOV AH,09H MOV DX,OFFSET MESS2 INT 21H ;提示信息2 CALL GETNUM MOV SI,DX ;键入偏称量送SI PUSH ES POP DS ;ES→DS 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 ;内循环控制变量值增1 PUSH BX ;入栈保存 MOV BX,DX CMP AL,[SI+BX] JBE UUU ;若AL较小,则不必交换,转UUU MOV AL,[SI+BX] MOV AH,DL ;置AL为新的最小值并修改AH指针 UUU: POP BX LOOP JJJ ;内循环 MOV CL,[SI+BX] MOV [SI+BX],AL MOV DL,AH PUSH BX MOV BX,DX MOV [SI+BX],CL POP BX ;交换 INC BX ;偏移量加1 POP CX LOOP III ;外循环 PUSH DS MOV AX,DATA MOV DS,AX ;重置DS使其指向DATA段 MOV AH,09H MOV DX,OFFSET MESS3 INT 21H ;显示‘SORT OK:’ POP DS MOV CX,SORTNUM VVV: MOV AL,[SI] CALL DISPl CRLF INC SI LOOP VVV ;将排序后的数显示出来 MOV AX,4C00H INT 21H ;返回DOS DISPl PROC NEAR ;显示子程序,显示AL寄存器的内容 PUSH CX MOV BL,AL MOV DL,BL MOV CL,04 ROL DL,CL AND DL,0FH CALL DISPL MOV DL,BL AND DL,0FH CALL DISPL POP CX RET DISPl ENDP DISPL PROC NEAR ADD DL,30H CMP DL,3AH JB DDD ADD DL,27H DDD: MOV AH,02H INT 21H RET DISPL ENDP ;参见数值显示实验程序清单 GETNUM PROC NEAR ;子程序,将键入字符转化成 十六进制数送DX PUSH CX XOR DX,DX GGG: MOV AH,01H INT 21H CMP AL,0DH JZ PPP CMP AL,20H JZ PPP SUB AL,30H JB KKK CMP AL,0AH JB GETS CMP AL,11H JB KKK SUB AL,07H CMP AL,0FH JBE GETS CMP AL,2AH JB KKK CMP AL,2FH JA KKK SUB AL,20H GETS: MOV CL,04 SHL DX,CL XOR AH,AH ADD DX,AX JMP GGG KKK: MOV AH,09H MOV DX,OFFSET DRROR INT 21H PPP: PUSH DX CRLF POP DX POP CX RET GETNUM ENDP ;参见字符匹配实验程序清单 CODE ENDS END START 六、思考题 自编一个十个数的排序程序。 七、实验报告的要求 1、填写实验课程及实验名称 2、画出流程图或方框图 3、编写程序 4、总结实验结果和体会 实验五 系统认识实验 一、实验目的 掌握TDN86/5l或TDN86/88教学系统的基本操作。 二、实验原理 TDN86/88教学系统熟练过程 三、预习要求 1、TDN86/88教学系统说明书 2、写出预习报告 四、实验设备 PC机、TDN86/88教学实验系统一台 五、实验内容及步骤 1、系统认识实验(1) (1)程序的输入与修改 从3500H内存单元开始建立0—15共16个数据。 2、实验步骤 a.使用串行通讯电缆将实验系统与PC微机相连。 b.将位于线路板右下角的系统状态选择开关拨至86档(此操作仅针对86/51系统),开启实验系统。 c.在系统软件所在目录下键入MD86 ↙ ,选择对应串口号,进入集成操作软件环境,出现系统提示符“>”。按下F1功能键,进入全屏幕编辑界面。按ALT+F建立新文件(NEW),即可开始输入源程序。实验程序及流程如下: STACK SEGMENT STACK ;8088宏汇编程序 DW 64 DUP (?) :定义堆栈段 STACK ENDS CODE SEGMENT ;定义代码段 ASSUME CS:CODE START:MOV DI,3500H ;程序开始设数据区首址 MOV CX,0010H ;字节数送入CX中 MOV AX,0000H SAHF Al: MOV [DI], AL ;写入一字节 , INC DI ;修改地址指针 INC AX ;修改数据 DAA ;十进制调整 LOOP Al ;未填完转移 A2: JMP A2 CODE ENDS ;代码段结束 END START ;程序结束 d.输入程序后,按F2保存程序(规定扩展名为*.ASM),使用ALT+X返回集成软件环境。 e.按F2↙,输入源程序名 (省略扩展名,系统默认为.ASM),对源程序进行汇编,生成目标文件(*. obj)及错误信息文件(*.M)。若给出LST文件名则生成相应*.LST文件。 f.汇编无误后,按F3↙输入文件名 对汇编生成的*.obj文件进行连接,连接信息显示于屏幕上,生成相应*.EXE文件,即可执行文件。 g.按F5↙,输入*.EXE可执行文件名 ,填入程序段地址CS:0000↙及偏移量地址IP:2000↙,PC开始将程序从磁盘装入到教学系统内存,提示装载完毕后使用U0000:2000↙ 命令进行反汇编,检查程序是否正确装入。 显示信息 键入信息 > U2000↙ 2000 BF0035 MOV DI, 3500 U↙ 2003 B91000 MOV CX, 0010 U↙ … … h.当发现源程序输入错误或需调整时,在调试界面下可用A命令来修改,如修改2000句为MOV DI,3500的操作如下: 显示信息 键入信息 > A2000↙ 0000: 2000 MOV DI, 3500↙ 0000: 2003 ↙ … … (2)运行程序 系统提供了单步运行、设断点运行、连续运行等方式,具体操作如下: a.单步运行:其操作如下表,每运行一条指令后会显示下一条待执行指令并以蓝底白字显示变化寄存器的内容,重复T ↙ (或按F4键)就可一步一步地运行,直至程序结束。 b.连续运行:在“>”提示符下键入G=0000:2000↙ (在系统默认段址CS=0000情况下也可直接键入G=2000 ↙ )可连续运行程序,在运行过程中,可通过CTRL+C终止程序运行,返回监控状态:也可通过CTRL+S暂停程序运行,按任意键继续。 c.断点运行:在程序中可用B命令定义断点,系统规定至多定义10个断点,例如; 显示信息 键入信息 > B↙ [0: ] 2009↙ [1: ] ↙ > ↙ 上例中定义了2009地址为断点,每次键入GB=0000:2000 程序连续运行至断点时,程序中断并显示当前各寄存器内容。GB是G命令的扩充,表示含断点连续运行程序,断点仅当系统复位时清除。 (3)内存单元内容的显示: 使用D 0000:3500 ↙ 可 查看3500H-350FH单元中的内容是否为0-15共16个数。 (4)内存单元内容的修改: 要若修改某一单元内容,可进行如下操作,其中,“空格”键用于向待编辑单元的高地址方向移动地址,而“-”键则向反方向移动地址:用 ↙ 来响应,就退出E命令。 显示信息 键入信息 > E3500↙ 0000:3500 00_ 01 [space] 0000:3501 01_ [space] 0000:3502 02_ [-] 0000:3501 01_ ↙ > 2.系统操作练习(2) 将内存3500H单元开始的0-15共16个数传递到3600H单元开始的数据区中。实验程序及流程如下: STACK SEGMENT STACK DW 64 DUP (?) STACK ENDS CODE SEGMENT ASSUME CS:CODE START:MOV SI, 3500H ;建立源地址指针 MOV DI, 3600H ;建立目标地址指针 MOV CX, 0008H ;字数送入CX寄存器中 A1: MOV AX, [SI] ;取源数据一字送入AX中 MOV [DI], AX ;将源数据送入目标地址单元中 INC SI ;修正指针 INC SI INC DI INC DI DEC CX ;判断是否传送完毕 JNZ A1 A2: JMP A2 CODE ENDS END START 实验步骤: (1)输入程序并检查无误,经汇编、连接后装入系统。 (2)E 3500 ↙ ,在3500-3510单元中分别送入00、0l、02…。 (3)G=0000:2000 ↙ ,运行以上程序,CTRL+C中断,返回监控。 (4)D 3600 ↙ ,显示结果:3600 00 0l 02 …。 六、思考题 自编两个小程序并调试运行。 七、实验报告的要求 1、填写实验课程及实验名称 2、画出流程图或方框图 3、编写程序 4、总结实验结果和体会 实验六 存储器扩展实验 一、实验目的 l.学习掌握存储器扩展方法和存储器读/写。 2.了解6264RAM特性。 二、实验设备  TDN86/51或TDN86/88教学实验系统一台 三、实验预习要求 系统中的存储器扩展单元 1. 6264RAM介绍 静态RAM是由MOS管组成的触发器电路,每个触发器可以存放1位信息。只要不掉电,所储存的信息就不会丢失。因此,静态RAM工作稳定,不要外加刷新电路,使用方便。但一般SRAM的每一个触发器是由6个晶体管组成,SRAM芯片的集成度不会太高,目前较常用的有6116(2K×8位),6264(8K×8位)和62256(32K×8位)。 6264RAM有8192个存储单元,每个单元为8位字长。6264的引脚如图5-1所示,WE、OE、CE1、CE2的共同作用决定了芯片的运行方式,如表5-1所示。 A0~A12 地址线 I/O0~I/O7 双向数据线 片选线1 CE2 片选线2 写允许线 读允许线 图5-1 6264引脚 表5-1 6264运行方式 CE2 方式 I/O0~I/O7 × H × × 未选中(掉电) 高阻 × × L × 未选中(掉电) 高阻 H L H H 输出禁止 高阻 H L H L 读 OUT L L H H 写 IN L L H L 写 IN 2.系统实验单元中的6264线路 图5-2 实验单元中的6264 存储器扩展实验(1) 按图5-3所示实验线路编写程序,通过8255产生适当的时序对6264RAM进行读/写。 图5-3 实验(1)线路 实验程序如下: STACK SEGMENT STACK DW 64 DUP (?) STACK ENDS CODE SEGMENT ASSUME CS: CODE START: MOV BX, 3000H MOV DX, 0E010H MOV CX, 0010H MOV AL, 80H OUT 63H,AL A1: MOV AL, DH OUT 62H, AL MOV AL, DL OUT 61H, AL MOV AL, [BX]
本文档为【王建霞——微机原理实验指导书[1]】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_860574
暂无简介~
格式:doc
大小:474KB
软件:Word
页数:41
分类:互联网
上传时间:2011-12-29
浏览量:20