计算机学院微机接口实验报告
专业:计算机科学与技术
班级:
姓名:
学号:
熟悉汇编语言程序设计及TD-PITE80X86实验环境的使用。
PC机一台,TD-PITE实验装置或TD-PITC实验装置一套。
在数据段定义10个无符号数据,求出其中的最大和最小值,并显示。
(1)完成汇编程序格式,编写实验程序。
(2)编译、链接无误后装入系统。
(3)先运行程序,待程序运行停止。
(4)通过键入D命令查看程序运行的结果。
(5)可以反复测试几组数据,观察结果,验证程序的正确性。
五、汇编程序:
DATA SEGMENT
ARRY1 DB 24H,0F7H,82H,01H,0BAH,42H,98H,0BFH,78H,92H
MAX DB ?
MIN DB ?
DATA ENDS
SSTACK SEGMENT STACK
DB 256 DUP(?)
SSTACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:SSTACK
START:
MOV AX,DATA
MOV DS,AX
MOV CX,10
MOV AL,ARRY1
MOV BL,ARRY1
XOR SI,SI
INC SI
DEC CX
LOOPS:
MOV DL,[ARRY1+SI]
CMP AL,DL
JB LARG
CMP BL,DL
JA SMA
JMP NEXT
LARG:
MOV AL,DL
JMP NEXT
SMA:
MOV BL,DL
JMP NEXT
NEXT:
INC SI
LOOP LOOPS
MOV MAX,AL
MOV MIN,BL
MOV AX,4C00H
INT 21H
CODE ENDS
END START
1. 掌握8259中断控制器的工作原理。
2. 学习8259的应用编程方法。
3. 掌握8259级联方式的使用方法。
PC机一台,TD-PITE实验装置或TD-PITC实验装置一套。
单次脉冲和主片IR6、IR7相连,实现按动KK1+屏幕显示字符串,按动KK2+屏幕显示字符。
四、实验步骤
(1)连接实验线路。
(2)编写实验程序,经编译、链接无误后装入系统。
(3)运行程序,重复按单次脉冲开关KK1+与KK2+,显示屏会显示相应字符或字符串,说明响应了中断。
五、汇编程序:
SSTACK SEGMENT STACK
DW 32 DUP(?)
SSTACK ENDS
DATA SEGMENT
BUF DB 'THIS IS MIR7 $'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE
START: PUSH DS
XOR AX,AX
MOV DS,AX
MOV DX,OFFSET MIR7
MOV AX,SEG MIR7
MOV DS:38H,DL
MOV DS:39H,DH
MOV DS:3AH,AL
MOV DS:3BH,AH
MOV DX,OFFSET MIR6
MOV AX,SEG MIR6
MOV DS:3CH,DL
MOV DS:3DH,DH
MOV DS:3EH,AL
MOV DS:3FH,AH
CLI
POP DS
MOV AL,11H
OUT 20H,AL
NOP
MOV AL,08H
OUT 21H,AL
NOP
MOV AL,04H
OUT 21H,AL
NOP
MOV AL,01H
OUT 21H,AL
NOP
MOV AL,3FH
OUT 21H,AL
NOP
STI
AA1: NOP
JMP AA1
MIR6:
STI
PUSH AX
PUSH DX
MOV DL,36H
MOV AH,02H
INT 21H
MOV AL,20H
OUT 20H,AL
NOP
POP AX
POP DX
IRET
MIR7: STI
;CALL DELAY
PUSH AX
PUSH DX
MOV AX,SEG DATA
MOV DS,AX
MOV DX,OFFSET BUF
MOV AH,09H
INT 21H
MOV AL,20H
OUT 20H,AL
NOP
POP AX
POP BX
IRET
CODE ENDS
END START
六、实验遇到问题及解决:
1、未遇到使实验失败型错误。但有小的有疑问处。在给中断矢量赋值时未用在地址处用格式“段偏移:【地址】”,而是用“段偏移:地址”,猜测是因为有了段偏移前缀,所以默认为后面十六进制数作为地址解析,而不是数据。
2、根据程序标号所示应该是IR6触发的中断显示字符,IR7显示字符串,但是由于前面中断矢量赋值反了,所以显示方式正好反过来了。
1. 学习并掌握8255的工作方式及其应用。
2. 掌握8255典型应用电路的接法。
PC机一台,TD-PITE实验装置或TD-PITC实验装置一套。
流水灯显示实验。编写程序,使8255的A口和B口均为输出,数据灯D7~D0由左向右,每次仅亮一个灯,循环显示,D15~D8与D7~D0正相反,由右向左,每次仅点亮一个灯,循环显示。
图4.1 8255内部结构及外部引脚图
并行接口是以数据的字节为单位与I/O设备或被控制对象之间传递信息。CPU和接口之间的数据传送总是并行的,即可以同时传递8位、16位或32位等。8255可编程外围接口芯片是Intel公司生产的通用并行I/O接口芯片,它具有A、B、C三个并行接口,用+5V单电源供电,能在以下三种方式下工作:方式0--基本输入/输出方式、方式1--选通输入/输出方式、方式2--双向选通工作方式。8255的内部结构及引脚如图4. 1所示,8255工作方式控制字和C口按位置位/复位控制字格式如图4. 2所示。
图4. 2 8255控制字格式
8255实验单元电路图如图4. 3所示:
图4. 3 8255实验单元电路图
流水灯显示实验
使8255的A口和B口均为输出,数据灯D7~D0由左向右,每次仅亮一个灯,循环显示,D15~D8与D7~D0正相反,由右向左,每次仅点亮一个灯,循环显示。实验接线图如图4. 5所示。实验步骤如下所述:
(1)按图4. 5连接实验线路图。
(2)编写实验程序,经编译、链接无误后装入系统。
(3)运行程序,观察LED灯的显示,验证程序功能。
(4)自己改变流水灯的方式,编写程序。
图4. 5 8255流水灯实验接线图
六、汇编程序:
SSTACK SEGMENT STACK
DW 32 DUP(?)
SSTACK ENDS
CODE SEGMENT
ASSUME CS:CODE
DELAY PROC
PUSH BX
PUSH CX
MOV BX,01H
DELAY1:
XOR CX,CX
DELAY2:
LOOP DELAY2
DEC BX
JNZ DELAY1
POP CX
POP BX
RET
DELAY ENDP
START:
MOV AL,80H
MOV DX,0606H
OUT DX,AL
AGAIN:
MOV AH,01H
MOV AL,80H
MOV CX,08H
LOOP1:
MOV DX,0600H
OUT DX,AL
CALL DELAY
MOV DX,0602H
XCHG AH,AL
OUT DX,AL
CALL DELAY
XCHG AH,AL
ROR AL,01H
ROL AH,01H
LOOP LOOP1
JMP AGAIN
CODE ENDS
END START
七、实验遇到问题及解决:
1、由于8255上的CS引脚接到了系统总线的IOY1引脚,所以导致寻址错误,灯不亮,将IOY0引脚接到8255的CS引脚上,问题解决。
2、DELAY子程序编译错误,开始时DELAY子程序放在了程序段的最后,后来改在主程序之前,问题解决。另外,将DELAY子程序的循环次数减少,使延迟时间缩短。
1. 掌握8254的工作方式及应用编程。
2. 掌握8254典型应用电路的接法。
PC机一台,TD-PITE实验装置或TD-PITC实验装置一套,示波器一台。
计数应用实验。编写程序,应用8254的计数功能,将系统的1MHz时钟分频为1Hz,并接到LED灯上,使其亮0.5秒,灭0.5秒,并在每次灯亮时屏幕上显示一个字符。
8254是Intel公司生产的可编程间隔定时器。是8253的改进型,比8253具有更优良的性能。8254具有以下基本功能:
(1)有3个独立的16位计数器。
(2)每个计数器可按二进制或十进制(BCD)计数。
(3)每个计数器可编程工作于6种不同工作方式。
(4)8254每个计数器允许的最高计数频率为10MHz(8253为2MHz)。
(5)8254有读回命令(8253没有),除了可以读出当前计数单元的内容外,还可以读出状态寄存器的内容。
(6)计数脉冲可以是有规律的时钟信号,也可以是随机信号。计数初值公式为:
n=fCLKi÷fOUTi、其中fCLKi是输入时钟脉冲的频率,fOUTi是输出波形的频率。
图3.1是8254的内部结构框图和引脚图,它是由与CPU的接口、内部控制电路和三个计数器组成。8254的工作方式如下述:
(1)方式0:计数到0结束输出正跃变信号方式。
(2)方式1:硬件可重触发单稳方式。
(3)方式2:频率发生器方式。
(4)方式3:方波发生器。
(5)方式4:软件触发选通方式。
(6)方式5:硬件触发选通方式。
图3.1 8254的内部接口和引脚
8254的控制字有两个:一个用来设置计数器的工作方式,称为方式控制字;另一个用来设置读回命令,称为读回控制字。这两个控制字共用一个地址,由标识位来区分。控制字格式如表3.1—3.3所示。
表3.1 8254的方式控制字格式
表3.2 8254读出控制字格式
表3.3 8254状态字格式
8254实验单元电路图如下图所示:
图3.2 8254实验电路原理图
图3.3 8254计数应用实验接线图
定时应用实验:
利用8254的2个计数器T0、T1,将系统主时钟1MHZ分频成1HZ(可用LED灯观察)。
实验步骤:
1.参考图3.3,自行修改实验电路。
2.编写实验程序,经编译、链接无误后装入系统。
3.运行程序,观察实验现象。
4.改变计数值,验证8254的定时功能。
六、汇编程序:
SSTACK SEGMENT STACK
DW 32 DUP(?)
SSTACK ENDS
CODE SEGMENT
ASSUME CS:CODE, SS:SSTACK
START:
MOV DX,06C6H
MOV AL,01110111B
OUT DX,AL
MOV DX,06C2H
MOV AX,1000H
OUT DX,AL
MOV AL,AH
OUT DX,AL
MOV DX,06C6H
MOV AL,00110111B
OUT DX,AL
MOV DX,06C0H
MOV AX,1000H
OUT DX,AL
MOV AL,AH
OUT DX,AL
AGAIN:
MOV DX,06C0H
CHECK:
IN AL,DX
JNZ CHECK
MOV DL,'T'
MOV AH,02H
INT 21H
JMP AGAIN
CODE ENDS
END START
七、实验遇到问题及解决:
1、实验箱串口通讯不通,换实验箱。
2、检查到汇编程序循环方式不对,应该不停地循环检测计数器0值是否为0,即使检测到一次,执行完后续屏幕打印字符的命令后也要继续循环,因此修正汇编程序。
3、LED灯持续亮,没有亮暗变换过程。最开始设置的计数器工作方式为2,但是方式2工作时,只有最后一千分之一秒时间输出为低电平,眼睛分辨不清。因此,至少要让其中连接LED灯的那个计数器的工作方式设置为方式3(或者两个都设置),是输出为方波。问题解决。
微型计算机原理与接口技术
实验报告
一、 实验内容
实验4 循环结构、子程序结构的设计
实验题目 编程实现对1~50 累加求和;编写统计X 数据(AL)中的“1”
的个数子程序,并编写主程序调用;编程实现代码转换程序,实现十进制到
十六进制的转换,并显示输出。
内容提要 掌握循环程序的设计,观察循环计数器的变化;掌握子程序的设
计,观察IP、SP 的变化。
二、 实验的源代码(.asm文件内容)
第一部分:编程实现对1~50 累加求和 程序如下:
DATAS SEGMENT
SUM DW ?
DATAS ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATAS
START:MOV AX,DATAS
MOV DS,AX
MOV AX,0
MOV CX,50
AGAIN:ADD AX,CX
DEC CX
JNZ AGAIN
MOV SUM,AX
MOV AH,4CH
INT 21H
CODE ENDS
END START
第二部分:编写统计X 数据(AL)中的“1”的个数子程序,并编写主程序调用程序如下:
DATAS SEGMENT
X DB 31H
RESULT DW ?
DATAS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS
MAIN PROC FAR
START:PUSH DS
MOV AX,0
PUSH AX
MOV AX,DATAS
MOV DS,AX
CALL FAR PTR COUNT
RET
MAIN ENDP
COUNT PROC FAR
MOV CX,0
MOV AL,X
AGAIN:AND AL,AL
JZ EXIT
SHL AL,1
JNC NEXT
INC CX
NEXT:JMP AGAIN
EXIT:MOV RESULT,CX
RET
COUNT ENDP
CODES ENDS
END START
第三部分:编程实现代码转换程序,实现十进制到十六进制的转换,并显示输出 程序如下:
DECTOHEX SEGMENT
ASSUME CS:DECTOHEX
MAIN PROC FAR
REPEAT1: CALL KEYDTOB
CALL CRLF
CALL BTOHSCR
CALL CRLF
JMP REPEAT1
MAIN ENDP
KEYDTOB PROC NEAR
MOV BX,0
KEYIN:MOV AH,1
INT 21H
SUB AL,30H
JL EXIT
CMP AL,9
JG EXIT
CBW
XCHG AX,BX
MOV CX,10
MUL CX
XCHG AX,BX
ADD BX,AX
JMP KEYIN
EXIT: RET
KEYDTOB ENDP
BTOHSCR PROC NEAR
MOV CH,4
ROTATE: MOV CL,4
ROL BX,CL
MOV AL,BL
AND AL,0FH
ADD AL,30H
CMP AL,3AH
JL PRINT
ADD AL,07H
PRINT:MOV DL,AL
MOV AH,2
INT 21H
DEC CH
JNZ ROTATE
RET
BTOHSCR ENDP
CRLF PROC NEAR
MOV DL,0DH
MOV AH,2
INT 21H
MOV DL,0AH
MOV AH,2
INT 21H
RET
CRLF ENDP
DECTOHEX ENDS
END MAIN
三、 实验的(显示)结果
第一部分和第二部分显示均为:Press any key to continue
第三部分可以从键盘输入一个数字,以非数字键结束即可,屏幕上就会以十六进制显示出来,可以重复输入,重复显示,每个数据占一行。
第一部分CV调试结果如下:
第二部分CV调试结果如下:
第三部分CV调试结果如下:
四、 实验(调试)心得
第一部分:编程实现对1~50 累加求和
这个一个典型的循环程序,循环体AGAIN包含循环处理和循环控制部分,完成累加计数,计满50,结束存和,循环结束。
第二部分:编写统计X 数据(AL)中的“1”的个数子程序,并编写主程序调用
本实验是进行子程序的设计与调用。子程序用过程来描述,用过程定义伪指令PROC/ENDP进行定义,需用时,用调用指令CALL调用,子程序执行完毕,应该返回到调用指令的下一条指令继续执行。子程序COUNT和调用程序MAIN在同一模块中,故子程序可直接访问模块的数据区。在子程序内部,应将用到的寄存器数据用入栈指令PUSH亚如堆栈保护,待子程序返回调用程序之前应将保护起来的寄存器数据用弹出指令POP按后进先出的原则弹回原来寄存器中。
第三部分:编程实现代码转换程序,实现十进制到十六进制的转换,并显示输出
本程序使用了子程序结构,整个程序包括一个主程序和三个子程序KEYDTOB、 CRLF、BTOHSCR。程序开始运行后,调用KEYDTOB从键盘区的十进制数存入BX中,再调用CRLF显示回车和换行,保证一个数据占一行,然后调用BTOHSCR,,以十六进制数显示BX中的数据,最后再调用一次CRLF显示回车和换行,一个数据的输入输出显示就完成了。在子程序中还使用了循环语句,使一个数据的输入输出结束之后可以进行下一个数据,是该程序可以重复输入和输出。
微机原理与接口技术实验指导书班级学号099074姓名安徽工业大学计算机学院实验一存贮器读写实验一实验内容对指定地址区间的RAM40…
实验题目8253定时计数器实验一实验目的与要求1学会8253芯片和微机接口原理和方法2掌握8253定时器计数器的工作方式和编程原理…
微机原理实验报告实验一两个多位十进制数相加的实验一实验目的学习数据传送和算术运算指令的用法熟悉在PC机上建立汇编链接调试和运行汇编…
微机原理及接口技术实验报告20xx20xx学年第一学期班级姓名学号指导教师实验一Emu8086软件的使用一实验目的1熟悉汇编语言开…
大连理工大学本科实验报告课程名称计算机原理课程设计学院系电气工程学院专业电气工程及其自动化班级学号学生姓名20xx年12月30日大…
不知不觉,微机原理与接口技术实验课程已经结束了。回想起来受益匪浅,主要是加深了对计算机的一些硬件情况和运行原理的理解和汇编语言的编…
微机原理与接口技术及其课程设计心得体会本学期的微机原理和接口技术及其课程设计都已经结束。在这个过程中,我们有所付出,也有所回报,让…
微机原理与接口技术实验总结11107108徐寒黎一、实验内容以及设计思路1、①试编写一程序,比较两个字符串STRING1、STRI…
微机原理学习心得本学期微机原理课程即将结束,关于微机课程的心得体会甚多:初学《微机原理》时,感觉摸不着头绪。面对着众多的术语、概念…
中国民航大学微机原理实验报告姓名王鹏飞学号111142222指导教师谈娴茹实验一Debug命令及汇编指令和寻址的应用一实验目的1掌…
微机原理与应用课程实验报告实验分工报告人同组人实验时间20xx1210课程设计一题目要求1在数据段首址为0100H开始的内存区1按…