15年嘉定微机实验指导书DOC.docx
《15年嘉定微机实验指导书DOC.docx》由会员分享,可在线阅读,更多相关《15年嘉定微机实验指导书DOC.docx(24页珍藏版)》请在冰豆网上搜索。
15年嘉定微机实验指导书DOC
微机原理实验指导书
同济大学电子与信息工程学院
2015年5月
实验一显示程序实验
1.实验目的
(1)掌握在PC机上以十六进制形式显示数据的方法。
(2)掌握部分DOS功能调用使用方法。
(3)熟悉Tddebug调试环境和TurboDebugger的使用。
2.实验设备
PC微机一台。
3.实验内容及说明
一般来说,有很多程序需要显示输出提示运行的状况和结果,有的还需要将数据区中的内容显示在屏幕上。
本实验要求将指定数据区的数据以十六进制数形式显示在屏幕上,并通过DOS功能调用完成一些提示信息的显示。
实验中使用DOS功能调用INT21H。
(1)显示单个字符输出:
入口:
AH=02H,调用参数:
DL=输出字符
(2)显示字符串:
入口:
AH=09H,调用参数:
DS:
DX=串地址,‘$’为结束字符
(3)返回DOS系统:
入口:
AH=4CH,调用参数:
AL=返回码
4.实验步骤
(1)运行Tddebug软件,选择Edit菜单,根据实验内容的描述编写实验程序,本实验显示部分参考实验流程如图1所示。
(2)使用Compile菜单中的Compile和Link对实验程序进行汇编、连接。
(3)使用Rmrun菜单中的Run,运行程序,观察运行结果。
(4)使用Rmrun菜单中的Debug,调试程序,观察调试过程中,数据传输指令执行后,各寄存器及数据区的内容。
(5)更改数据区中的数据,考察程序的正确性。
图1显示程序实验流程图
5.参考程序清单
;显示程序实验
STACK1SEGMENTSTACK
DW256DUP(?
)
STACK1ENDS
DATASEGMENT
MESDB'Pressanykeytoexit!
',0AH,0DH,0AH,0DH,'$';0AH为换行、0DH为回车。
MES1DB'Showaashex:
',0AH,0DH,'$'
SDDB'a'
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVDX,OFFSETMES;显示退出提示
MOVAH,09H
INT21H
MOVDX,OFFSETMES1;showmessage
MOVAH,09H
INT21H
MOVSI,OFFSETSD
MOVAL,[SI]
ANDAL,0F0H;取高4位,并显示。
SHRAL,4
CMPAL,0AH;是否是A以上的数
JBC2
ADDAL,07H
C2:
ADDAL,30H
MOVDL,AL;showcharacter
MOVAH,02H
INT21H
MOVAL,[SI]
ANDAL,0FH;取低4位,并显示。
CMPAL,0AH
JBC3
ADDAL,07H
C3:
ADDAL,30H
MOVDL,AL
MOVAH,02H
INT21H
KEY:
MOVAH,1;判断是否有按键按下?
INT16H;BIOS调用,读键盘缓冲区字符
JZKEY;ZF=1缓冲区空,无键盘输入
MOVAX,4C00H;gobacktodos
INT21H
CODEENDS
ENDSTART
实验二数码转换程序实验
1.实验目的
掌握不同进制数及编码相互转换的程序设计方法。
2.实验设备
PC微机一台。
3.实验内容及说明
计算机输入设备输入的信息一般是由ASCII码或BCD码表示的数据或字符,CPU一般均用二进制数进行计算,处理结果的输出又必须依照外设的要求变为ASCII码、BCD码或七段显示码等。
因此,在应用软件中,各类数制的转换和代码的转换是必不可少的。
计算机与外设间的数码转换关系如图2所示。
要求编写显示子程序。
图2计算机与外设间的数码转换关系
(1)将ASCII码表示的十进制数转换为二进制数
十进制数可以表示为:
其中Di代表十进制数1、2、3…9、0。
上式可转换为:
由上式可归纳十进制数转换为二进制的方法:
从十进制数的最高位Dn开始作乘10加次位的操作,依次迭代类推,则可求出二进制数结果。
本实验要求将缓冲区中的一个五位十进制数00012的ASCII码转换成二进制数,并将转换结果按位显示在屏幕上。
转换过程的参考流程如图3所示。
图3十进制ASCII转换为二进制数参考流程
;将ASCII码十进制数转换为二进制数
STACK1SEGMENTSTACK
DW256DUP(?
)
STACK1ENDS
DDATASEGMENT
MES1DB'Theasciicodeofdecimalcodeare:
$'
BUFDB30H,30H,30H,31H,32H
DB10HDUP(0)
DDATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DDATA
START:
MOVAX,DDATA
MOVDS,AX
MOVSI,OFFSETBUF
MOVBX,000AH
MOVCX,0004H
MOVAH,00H
MOVAL,[SI]
SUBAL,30H
A1:
MULBX
ADDAL,[SI+01]
SUBAL,30H
INCSI
LOOPA1
MOV[SI],AX
MOVDX,OFFSETMES1
MOVAH,09H
INT21H
INCSI;显示高字节
CALLSHOW
DECSI;显示低字节
CALLSHOW
MOVAX,4C00H
INT21H
SHOWPROCNEAR;编写显示子程序
….
SHOWENDP
CODEENDS
ENDSTART
(2)将十进制数的ASCII码转换为BCD码
本实验要求将键盘输入的一个五位十进制数54321的ASCⅡ码存放在数据区中,转换为BCD码后,并将转换结果按位分别显示于屏幕上。
若输入的不是十进制数的ASCⅡ码,则输出“FF”。
提示:
一字节ASCⅡ码取其低四位即变为BCD码。
转换部分的实验流程参见图4。
图4十进制ASCII转换为BCD码数参考流程
;将十进制数的ASCII码转换为BCD码
STACK1SEGMENTSTACK
DW256DUP(?
)
STACK1ENDS
DDATASEGMENT
MES1DB'TheBCDcodeofdecimalare:
$'
BUFDB31H,32H,33H,34H,35H
DB10HDUP(0)
DDATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DDATA
START:
MOVAX,DDATA
MOVDS,AX
MOVCX,0005H
MOVDI,OFFSETBUF
A1:
MOVBL,0FFH
MOVAL,[DI]
CMPAL,3AH;比较AL中的数是否是0~9的ASCII码
JNBA2
SUBAL,30H
JBA2
MOVBL,AL
A2:
MOVAL,BL
MOV[DI+05H],AL
INCDI
LOOPA1
MOVSI,DI
MOVCX,05H
MOVDX,OFFSETMES1
MOVAH,09H
INT21H
A3:
CALLSHOW
MOVDL,20H
MOVAH,02H
INT21H
INCSI
LOOPA3
MOVAX,4C00H
INT21H
SHOWPROCNEAR;编写显示子程序
….
SHOWENDP
CODEENDS
ENDSTART
4.实验步骤
(1)运行Tddebug软件,选择Edit菜单,根据实验内容描述的数码转换内容分别编写实验程序。
(2)利用Compile菜单中的Compile和Link对实验程序进行汇编、连接。
(3)利用Rmrun菜单中的Run,运行程序,观察运行结果。
(4)使用Rmrun菜单中的Debug,调试程序,观察调试过程中,数据传输指令执行后,各寄存器及数据区的内容。
(5)编写显示子程序,并更改数据区中的数据,考察程序的正确性。
实验三循环程序设计实验
1.实验目的
掌握循环程序的设计方法。
2.实验设备
PC微机一台。
3.实验内容及说明
一个循环程序通常由以下几个部分组成:
1)循环初始化部分:
用于对相关内存单元及寄存器设置初始值,
如设置地址指针、循环次数、某些标志位等。
只有正确地进行了初始化设置,循环程序才能正确运行并及时停止。
2)循环体:
对要求重复执行的程序段部分,对应于要求重复执行的操作。
3)循环控制部分:
为下一轮处理修正地址指针及循环次数等,并判断循环结束的条件是否满足,若满足则退出循环。
4)循环结束部分:
用于保存循环运行的结果等。
5)编写显示子程序,并更改数据区中的数据,考察程序的正确性。
4.编写程序完成对10个数的求和并显示(P101)
分析:
需分配空间保存和数(SUM),在循环体中进行求和操作。
参考程序清单:
DATASEGMENT
BUFFERDW1,2,3,4,5,6,7,8,9,10;原始10个数据
SUMDW?
;存放和数
DATAENDS
STACSEGMENTSTACK'STACK'
DB100DUP(?
)
STACENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVAX,0;AX中为和数,初始为0
MOVDI,OFFSETSUM;存放结果地址送DI
MOVBX,OFFSETBUFFER;数据缓冲区首地址,送BX
MOVCX,10;循环次数送CX
LOOP1:
ADDAX,[BX];累加
INCBX;修改数据缓冲区地址
INCBX
DECCX;次数减1
JNZLOOP1;到10次了吗?
不到,;转LOOP1
MOV[DI],AX;到10次,存放结果
;填写调用指令
MOVAX,4C00H;返回DOS
INT21H
SHOW…….;编写显示子程序
CODEENDS
ENDSTART
实验四子程序设计实验
1.实验目的
(1)掌握子程序的定义调用方法。
(2)掌握系统功能调用程序的使用和编写方法。
2.实验设备
PC微机一台。
3.实验内容及说明
将内存中的一串1位十六进制数转换为其对应的ASCII码并显示(P105)。
例如:
十六进制2所对应的ASCII码为32H,而十六进制数C所对应ASCII码为‘C’(即43H)。
分析:
将一个十六进制数转化为其对应的ASCII码的功能设计为子程序。
主程序分若干次调用该子程序,但每次调用的参数为不同的待转换的十六进制数。
4.程序清单如下:
DATASEGMENT
HEXBUFDB02H,08H,0AH,09H,0FH;待转换的一串1位十六进制数
COUNTEQU$-HEXBUF;COUNT的值为这一串十六进制数的个数
DATAENDS
STACSEGMENTSTACK'STACK'
DB100DUP(?
)
STACENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STAC
;子程序HEXD:
将1位十六进制数转换为其对应的ASCII码
;入口参数:
AL含待转换的1位十六进制数
;出口参数:
AL含转换完的结果(ASCII码)
HEXDPROCNEAR
CMPAL,0AH
JLADDZ
ADDAL,7H;‘A’-‘0’-0AH
ADDZ:
ADDAL,30H
;填写指令
;填写指令
;填写指令
RET
HEXDENDP
;以下为主程序
BEGIN:
MOVAX,DATA
MOVDS,AX
MOVBX,OFFSETHEXBUF
MOVCX,COUNT
REPEAT0:
MOVAL,[BX]
CALLHEXD
MOV[BX],AL
INCBX
LOOPREPEAT0
MOVAX,4C00H
INT21H
CODEENDS
ENDBEGIN
实验五8259中断控制器应用实验
1.实验目的
(1)学习中断控制器8259的工作原理。
(2)掌握可编程控制器8259的应用编程方法。
2.实验设备
PC微机一台、TD-PIT+实验系统一套。
3.实验内容
(1)利用PC机给实验系统分配的中断线,设计一个单中断应用。
使用单次脉冲模拟中断产生。
编写中断处理程序,在显示器屏幕上显示一个字符。
(2)利用实验平台上8259控制器对扩展系统总线上的中断线INTR进行扩展。
编写程序对8259控制器的IR0和IR1中断请求进行处理。
4.实验原理
(1)8259控制器的介绍
中断控制器8259A是Intel公司专为控制优先级中断而设计开发的芯片。
它将中断源优先级排队及提供中断矢量的电路集于一片中,因此无需附加任何电路,只需对8259A进行编程,就可以管理8级中断,中断结构可以由用户编程来设定。
同时,在不需增加其他电路的情况下,通过多片8259A的级连,能构成多达64级的矢量中断系统。
它的管理功能包括:
a)记录各级中断源请求;
b)判别优先级,确定是否响应和响应哪一级中断;
c)响应中断时,向CPU传送中断类型号。
8259A的命令共有7个,一类是初始化命令字,另一类是操作命令。
8259A的编程就是根据应用需要将初始化命令字ICW1-ICW4和操作命令字OCW1-OCW3分别写入初始化命令寄存器组和操作命令寄存器组。
(2)8259寄存器及命令的控制访问
在硬件系统中,8259仅占用两个外设接口地址,在片选有效的情况下,利用A0来寻址不同的寄存器和命令字。
对寄存器和命令的访问控制如表1所示。
表18259寄存器及命令的控制访问
(3)PC微机系统中的8259
在80x86系列PC微机系统中,系统中包含了两片8259A中断控制器,经级连可以管理15级硬件中断,但其中部分中断号已经被系统硬件占用,具体使用情况如表2示。
两片8259A的端口地址为:
主片8259使用020H和021H两个端口;从片使用0A0H和0A1H两个端口。
系统初始化两片8259的中断请求信号均采用上升沿触发,采用全嵌套方式,优先级的排列次序为0级最高,依次为1级、8级~15级,然后是3级~7级。
在扩展系统总线上的INTR对应的中断线就是PC机保留中断其中的一个。
对INTR中断的初始化PC机已经完成,在使用时主要是将其中断屏蔽打开,修改中断向量。
表2PC微机系统中的硬件中断
5.实验说明及步骤
(1)中断查询方式应用实验
8259支持查询方式检测中断请求,具体过程为:
设置8259OCW3中的P位为1即可执行查询命令,8259将下一个I/O读命令视作一次中断响应。
如果有中断请求,则置ISR中的相应位并读优先级。
从OCW3写操作到I/O读操作期间禁止中断,读出字节的最高位为1表示有中断,最低3位(D0-D2)为最高优先级中断请求源的编码。
查询字格式如图5所示。
图58259OCW3查询字格式
本实验要求使用这种方法编写程序处理实验单元8259IR0和IR1请求的中断,IR0请求在屏幕上显示字符“0”,IR0请求则在屏幕上显示字符“1”以示中断到来。
IR0和IR1分别用一个单次脉冲的上升沿模拟中断产生。
参考流程如图6所示,参考实验接线图如图7所示。
图6实验参考流程图
注意:
P=1的OCW3可作为向8259A发出的查询命令,表明用查询方式决定中断优先级的次序。
具体步骤:
①向8259A发P=1的OCW3命令(A0=0);
②同一地址(A0=0)读指令(查询字格式,图5),将起中断识别作用。
图7参考实验接线图
实验步骤如下:
a)确认从PC机引出的两根扁平电缆已经连接在实验平台上。
b)运行Tdpit集成操作软件,查看系统资源分配情况,记录与所用片选信号对应的I/O端口始地址。
c)参考实验流程图编写程序,注意使用正确的端口地址,然后编译链接。
d)参考实验接线图连接实验线路。
e)运行程序,按动KK1+、KK1+按键,观察中断响应是否正常。
8259中断查询方式应用实验代码
;***********根据查看端口资源修改下列符号值*******************
IOY0EQU9C00H;片选IOY0对应的端口始地址
;************************************************************
MY8259_ICW1EQUIOY0+00H;实验系统中8259的ICW1端口地址
MY8259_ICW2EQUIOY0+04H;实验系统中8259的ICW2端口地址
MY8259_ICW3EQUIOY0+04H;实验系统中8259的ICW3端口地址
MY8259_ICW4EQUIOY0+04H;实验系统中8259的ICW4端口地址
MY8259_OCW1EQUIOY0+04H;实验系统中8259的OCW1端口地址
MY8259_OCW2EQUIOY0+00H;实验系统中8259的OCW2端口地址
MY8259_OCW3EQUIOY0+00H;实验系统中8259的OCW3端口地址
STACK1SEGMENTSTACK
DW256DUP(?
)
STACK1ENDS
CODESEGMENT
ASSUMECS:
CODE
START:
MOVDX,MY8259_ICW1;;初始化实验系统中8259的ICW1
MOVAL,13H;边沿触发、单片8259、需要ICW4
OUTDX,AL
MOVDX,MY8259_ICW2;初始化实验系统中8259的ICW2
MOVAL,08H
OUTDX,AL
MOVDX,MY8259_ICW4;初始化实验系统中8259的ICW4
MOVAL,01H;非自动结束EOI
OUTDX,AL
MOVDX,MY8259_OCW1;初始化实验系统中8259的OCW1
MOVAL,0FCH;打开IR0和IR1的屏蔽位
OUTDX,AL
QUERY:
MOVAH,1;判断是否有按键按下
INT16H;BIOS调用
JNZQUIT;ZF=0,有按键则退出
MOVDX,MY8259_OCW3;向8259的OCW3发送查询命令,P=1
MOVAL,0CH
OUTDX,AL
INAL,DX;读出查询字(查询字格式,图5)
TESTAL,80H;判断中断是否已响应
JZQUERY;没有响应则继续查询
ANDAL,03H;中断源请求编码,
CMPAL,00H
JEIR0ISR;若为IR0请求,跳到IR0处理程序
JNEIR1ISR;若为IR1请求,跳到IR1处理程序
JMPQUERY
IR0ISR:
MOVAL,30H;IR0处理,显示字符0
MOVAH,0EH
INT10H
MOVAL,20H
INT10H
JMPEOI
IR1ISR:
MOVAL,31H;IR1处理,显示字符1
MOVAH,0EH
INT10H;BIOS调用,显示字符(功能号AH=0EH)
MOVAL,20H
INT10H
EOI:
MOVDX,MY8259_OCW2;向实验系统中8259发送中断结束命令
MOVAL,20H
OUTDX,AL
JMPQUERY
QUIT:
MOVAX,4C00H;结束程序退出
INT21H
CODEENDS
ENDSTART
实验六8255并行控制器应用实验1
1.实验目的
(1)掌握8255的工作方式及应用编程。
(2)掌握8255的典型应用电路接法。
2.实验设备
PC微机一台、TD-PIT+实验系统一套。
3.实验内容
(1)基本输入输出实验。
编写程序,使8255的A口为输出,B口为输入,完成拨动开关到数据灯的数据传输。
要求只要开关拨动,数据灯的显示就改变。
(2)流水灯显示实验。
编写程序,使8255的A口和B口均为输出,实现16位数据灯的相对循环显示。
(2)实验原理
并行接口是以数据的字节为单位与I/O设备或被控制对象之间传递信息。
CPU和接口之间的数据传送总是并行的,即可以同时传递8位、16位、32位等。
8255可编程外围接口芯片具有A、B、C三个并行接口,能在以下三种方式下工作:
方式0--基本输入/出方式、方式1--选通输入/出方式、方式2--双向选通工作方式。
8255工作方式控制字和C口按位置位/复位控制字格式如图8所示。
图88255控制字格式
5.实验说明及步骤
本实验使8255端口A工作在方式0并作为输出口,端口B工作在方式0并作为输入口。
用一组开关信号接入端口B,端口A输出线接至一组数据灯上,然后通过对8255芯片编程来实现输入输出功能。
参考程序流程如图9所示。
图98255参考程序流程图
图108255参考接线图
实验步骤:
a)确认从PC机引出的两根扁平电缆已经连接在实验平台上。
b)参考图10所示连接实验线路。
c)首先运行CHECK程序,查看I/O空间始地址。
d)利用查出的地址编写程序,然后编译链接。
e)运行程序,拨动开关,看数据灯显示是否正确。
;8255基本输入输出实验代码
;***********根据查看端口资源修改下列符号值****************
IOY0EQU9C00H;片选IOY0对应的端口始地址
;*********************************************************
MY8255_AEQUIOY0+0