收藏 分享(赏)

微机原理及应用实验一、二(通信、网络).doc

上传人:jinchen 文档编号:5260003 上传时间:2019-02-15 格式:DOC 页数:13 大小:72.50KB
下载 相关 举报
微机原理及应用实验一、二(通信、网络).doc_第1页
第1页 / 共13页
微机原理及应用实验一、二(通信、网络).doc_第2页
第2页 / 共13页
微机原理及应用实验一、二(通信、网络).doc_第3页
第3页 / 共13页
微机原理及应用实验一、二(通信、网络).doc_第4页
第4页 / 共13页
微机原理及应用实验一、二(通信、网络).doc_第5页
第5页 / 共13页
点击查看更多>>
资源描述

1、微机原理及应用实 验 指 导 书河北科技大学信息科学与工程学院2目 录实验一 汇编语言程序的建立、调试和运行(3)实验二 两个多位十进制数加减运算编程(10)实验三 8255 并行接口应用(14)实验四 8251 串行接口应用(18)实验五 8253 定时/计数器应用 (23)3实验一 汇编语言程序的建立、调试和运行一、实验目的1、学习 debug 状态下,汇编语言程序的编程和运行方法2、掌握汇编语言程序的建立和运行3、掌握 debug 状态下调试和运行汇编语言程序的方法二、实验原理debug 是调试汇编语言程序的工具,它不仅能跟踪程序的运行,还可显示修改内存与寄存器内容,以便在调试程序中检查

2、程序,找错,改错;它还支持小汇编,直接对小段程序进行汇编;也可对盘进行读写操作。但 debug 不宜汇编较长的程序,不便于分块程序的设计,不能使用绝大多数ASM 和 MASM 提供的伪指令。 debug 命令以单个字母的命令符开头,然后是命令操作参数,操作参数与操作参数之间,用空格或逗号分开,操作参数与命令符之间用空格隔开,命令的结束符是回车键。命令及参数的输入可以是大小写的结合,CtrL +break 键中止命令的执行。debug 下所用的数均为十六进制数,且不必写 H。三、预习要求1、用 debug 汇编语言程序建立过程和调试方法2、写出预习报告(一) 、debug 的常用命令有:1汇编命

3、令 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 4功能:将指定范围内的代码以汇编语句形式显示,同时显示地址及代码。注意,反汇编时一定确认指令的起始地址后再作,否则将得不到正确结果。地址及范围的缺省值是上次 U 指令后下

4、一地址的值。这样可以连续反汇编。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 AD 12FF

5、:0000 0100 6显示并修改寄存器命令 R格式 1:R格式 2:R功能:格式 1 显示当前所有寄存器内容,状态标志及将要执行的下一指令的地址,代码及汇编语句格式。其中对状态标志 FLAG 以每位的形式显示。格式 2 显示指定寄存器内容。例如:R IP 7单步执行并显示系统环境 T格式:T=功能:的缺省值是当前 IP 值,的缺省值是一条。执行由指定地址起始的指定的若干条指令。 5例如:T;执行当前指令并显示状态T10;从当前指令始执行 10H 条指令。 8连续执行命令格式:(1)G= (2)G;从 IP 指向的地址开始执行程序到结束地址。9退出 debug 命令 QQ (二) 、启动操作系

6、统 例如:利用串操作传送指令将 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 ST

7、OSB:010A F4 HLT4.若源程序有错可返回第 2 步用 A 命令进行修改,再进行第 3 步。若无错误,可运行程序。5.用 R 命令观察程序未执行前,程序中各有关寄存器内容,并填入括号内。6一 R AL=( ) DI=( ) CX=( ) DS=( ) CS=( ) IP=( )6.用 D 命令观察程序未执行前,存放结果的存储区的内容。D ES:0180 7.用 T 命令执行一条指令,观察 DI 寄存器内容的变化,并填入此值:T DI=( ) IP=( ) CS=( )8.用 T 命令一条条执行程序,并观察相应寄存器内容或存储单元内容,一直执行到最后一条指令为止。 9.用 D 命令观察

8、最终结果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。7

9、(三) 、可执行文件的生成1、在桌面状态下,点击我的电脑,含有文件夹 ASM 的驱动器。例如:进入全屏幕编辑状态,点击 EDIT CODE SEGMENTASSUME CS:CODE,DS:CODESTART: MOV AX,CODEMOV DS,AXMOV DX,OFFSET AAMOV AH,09INT 21HMOV AH,4CHINT 21HAA DB HOW ARE YOU $CODE ENDS END START2汇编源程序用汇编程序对源程序进行汇编生成机器能够识别的机器语言,即生成了目标文件(*obj)。汇编的结果给出了程序的错误语句,可以根据错误提示修改源程序。其操作步骤如下:点

10、击 MASM Microsoft(R) Macro Assembler Version 5.0Copyright(c) Microsoft Corp 19811985,1987ALL 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 errors8汇编的对象是用户编写的汇编语言源程序,它必须是以 A

11、SM 为扩展名。汇编程序的输出文件有三个,第一个目标文件,它以 OBJ 为扩展名,产生 OBJ 文件是我们进行汇编操作的主要目的;第二个是列表文件,它以 LST 为扩展名,列表文件同时给出源程序和机器语言程序,从而可以使调试变得方便,列表文件是可有可无的,如不要,直接键入回车键即可,如需要,则打入文件名和回车;第三是交叉符号表,此表给出了用户定义的所有符号,对每个符号都列出了将其定义的所在行号和引用的符号,并在定义行号上加“#”号,同列表文件一样,交叉符号表为调试工作带来很大的方便。交叉符号表也是可有可无的,如不需要,那么在屏幕上出现提示信息NUL.CRF:时,打入回车即可。汇编过程结束时,会

12、给出源程序中的警告性错误warning Errors和严重错误severe Errors,前者指一般性错误,后者指语法性错误,当存在这两类错误时,屏幕上除指出错误个数表外,还给出错误信息代号和错误所在的行号。如果汇编过程中有错误,则程序员应该重新用编辑命令进行修改,再进行汇编,最终直到汇编正确通过。要指出的是汇编过程只能指出源程序中的语法错误,并不能指出算法错误和其它错误。3用 Link 命令产生可执行文件(*.EXE 文件)汇编过程根据源程序产生二进制的目标文件(OBJ 文件),但 OBJ 文件用的是浮动地址,它不能直接上机执行。所以还必须使用链接程序(LINK)将 OBJ 文件转换成可执行

13、的 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 文件,有时,用

14、户程序用到库函数,此时,对于提示信息Libraries.LiB要输入库名。Link 过程产生两个输出文件,一个是扩展名为 EXE 的执行文件,产生9此文件是 Link 过程的主要目的,另一个是扩展名 MAP 的列表分配文件,有人也称它为映像文件,它给出每个段在内存中的分配情况 MAP 文件也是可有可无的。4程序执行点击 文件名 如果运行结果不正确可把 exe 文件装入 debug 进行调试,发现错误并改正。方法是点击 debug _N 文件名.exe_L_U四、实验设备硬件环境 IBM/PC 及其兼容机软件环境 操作系统 WINDOWS95 以上版本调试程序 DEBUG.COM 编辑程序 ED

15、IT.EXE汇编程序 MASM.EXE 连接程序 LINK.EXE五、实验内容调试上面给出的例子程序,并查看运行结果。可自行测试的程序(供选择参考)1.显示一个字符2.从键盘上读取一个字符并显示3.间隔 0.5 秒显示 8 个六、思考题1.将数据段中 0200字节存储单元中的二位 BCD 码转换为二个 ASCII 码送 0201H 开始的二个字节单元中,编写一段程序。2.编写一段程序,在内存中自 0200地址开始的连续七个单元中存入 09 的平方值。要求利用计算法查表求 0210单元中指定数 09 中的任意一数的平方值,并将所求平方值存入 0211单元中。七、实验报告的要求10实验二 两个多位

16、十进制数加减运算编程一、实验目的1掌握汇编语言程序的基本结构;2熟练掌握编写汇编语言程序的基本方法;二、实验原理使用汇编语言编写程序,实现将两个多位十进制数相加。要求被加数均以 ASCII 码形式各自顺序存放在以 DATAl 和 DATA2 为首的 5 个内存单元中( 低位在前) ,结果送回 DATAl 处。三、预习要求1、汇编语言程序建立过程和调试方法2、写出预习报告四、实验设备PC 机一台五、实验内容及步骤1、参考程序框图显示被加数和加数被加数和加数以 ASCII 码表示的数字串形式转化为由十六进制表示的数字串形式计数值 5CX清除最低位进位执行 ADC 带进位相加AAA 调整结果送被加数

17、区调整偏移量CX1=0?十六进制的结果转化为 ASCII码表示的数字串结束显示结果112、参考程序清单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 ENDS

18、CODE 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 DATAl12MOV BX,05 ;显示加数CALL DISPLCRLFMOV DI,OFFSET DATA2CALL ADDA ;加法运算MOV SI,OFFSET DATAlMOV BX,05 ;显示结果CALL DISPLCRLF

19、MOV 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,BP13MOV 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六、思考题自编两个多位十进制数相减程序。七、实验报告的要求

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 中等教育 > 中学实验

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报