2.1显示程序实验
1.实验目的
(1)掌握在PC机上以十六进制形式显示数据的方法。
(2)掌握部分DOS功能调用使用方法。
(3)熟悉Windows集成操作软件Tdpit的操作环境和操作方法
2.实验设备
PC微机一台、TD-PITD实验系统一套。
3.实验步骤和结果
(1)编辑源代码
STACK1 SEGMENT STACK
DW 256 DUP(?)
STACK1 ENDS
DATA SEGMENT
MES DB 'Press any key to exit!',0AH,0DH,0AH,0DH,'$'
MES1 DB 'Show 34H as hex:',0AH,0DH,'$'
SD DB 15H
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
MOV DX,OFFSET MES
MOV AH,09H
INT 21H
MOV DX,OFFSET MES1
MOV AH,09H
INT 21H
MOV SI,OFFSET SD
MOV AL,DS:[SI]
AND AL,0F0H
MOV CL,4
SHR AL,CL
CMP AL,0AH
JB C2
ADD AL,07H
C2:ADD AL,30H
MOV DL,AL
MOV AH,02H
INT 21H
MOV AL,DS:[SI]
AND AL,0FH
CMP AL,0AH
JB C3
ADD AL,07H
C3:ADD AL,30H
MOV DL,AL
MOV AH,02H
INT 21H
KEY:MOV AH,1
INT 16H
JZ KEY
MOV AX,4C00H
INT 21H
CODE ENDS
END START
(2)实验结果图所示:
2.2 数据传送实验
1. 实验目的
1. 掌握与数据有关的不同寻址方式。
2. 继续熟悉实验操作软件的环境及使用方法。
2.实验设备
PC 微机一台、TD-PITD 实验系统一套。
3.实验内容
本实验要求将数据段中的一个字符串传送到附加段中,并输出附加段中的目标字符串到屏
幕上。参考实验程序如下。
实验程序清单(例程文件名:A2.ASM)
DDATA SEGMENT ;定义源数据段
MSR DB "HELLO,WORLD!$"
LEN EQU $- MSR
DDATA ENDS
EXDA SEGMENT ;定义附加数据段
MSD DB LEN DUP(?)
EXDA ENDS
MYSTACK SEGMENT STACK ;定义堆栈段
DW 20 DUP(?)
MYSTACK ENDS
CODE SEGMENT ;定义代码段
ASSUME CS:CODE,DS:DDATA,ES:EXDA
START:MOV AX,DDATA
MOV DS,AX ;装载数据段寄存器
MOV AX,EXDA
MOV ES,AX ;装载附加数据段寄存器
MOV SI,OFFSET MSR ;设置 SI
MOV DI,OFFSET MSD ;设置 DI
MOV CX,LEN
NEXT: MOV AL,[SI] ;开始传输数据
MOV ES:[DI],AL
INC SI
INC DI
DEC CX
JNZ NEXT
PUSH ES
POP DS ;将附加段寄存器指向的段值赋给数据段寄存器
MOV DX,OFFSET MSD
MOV AH,9
INT 21H
KEY: MOV AH,1 ;判断是否有按键按下?
INT 16H ;(为观察运行结果,使程序有控制的退出)
JZ KEY
MOV AX,4C00H ;结束程序退出
INT 21H
CODE ENDS
END START
将程序主体部分的寄存器间接寻址方式改为相对寻址方式,则如下所示。
MOV BX,0
MOV CX,LEN
NEXT: MOV AL,MSR[BX]
MOV ES:MSD[BX],AL
INC BX
LOOP NEXT
4.实验步骤
(1) 编辑源代码
将程序源代码编辑完成之后修改文件名为A2.asm保存在目录E:\masm5.0\MYCODE下。
(2) 编译A2.asm文件
进入DOS系统打开MASM5.0所在目录,并编译A2.asm文件,直到编译无错误。如图2-2-2所示。
(3) 连接A2.obj文件
使用LINK命令连接A2.obj文件,生成A2.exe文件。运行A2.exe文件,查看运行结果。如图所示:
运行程序后,屏幕显示“HELLO, WORLD!”。说明程序运行正确。下面通过调试查看内存数据来了解数据的传输过程。
(4) DEBUG调试
输入命令E:\masm5.0>debug a2.exe 回车可进入调试系统,首先对a2.exe进行反汇编,如图所示:
从反汇编的程序上可以看出,原字符串存放的段地址为0,13E5,偏移地址为0x0000,复制字符串的母的地址为0x13E6,偏移地址为0x0000,字符串的长度为0x0D。下面通过内存查看命令源地址和目的地址的数据情况,如图所示:
从此图可以直接看出原地址所存放的数据位“HELLO,WORLD!”,目的地址存放的数据全部为0。现将程序运行至13EA:001B处,程序运行到此处时,可完成一个字节的数据传输,查看目的地址的内存数据。如图所示。
输入一个字节后可在目的地址的第一个数据位0x48,其ASCII码为‘H’。同时也可观察AX寄存的低8位为0x48.将程序运行至13EA:001D处,此时程序已经跳出了数据传送的循环,数据的传送工作已将完成。查看目的地址的内存数据,如上图所示。
2.5 分支程序设计实验
1.实验目的
掌握分支程序的设计方法。
2.实验设备
PC 微机一台、TD-PITD 实验系统一套。
3.实验内容及说明
程序有顺序、循环、分支和子程序四种结构形式,分支结构的示意图如图 2-5-1 所示。本实验要求参考图 2-5-2 流程,通过求无符号字节序列中的最大值和最小值来反映分支程序的结构形式。
实验可以使用 BH,BL 作为暂存现行的最大值和最小值,且在程序的初始,将 BH 和 BL 初始化为首字节的内容,然后进入循环操作。在循环操作中,依次从字节序列中逐个取出一个字节的内容与 BH,BL 进行比较,若取出的字节内容比 BH 的内容大或比 BL 中的内容小,则修改之。当循环结束操作时,将 BH,BL 分别送屏幕显示。
实验程序如下:
STACK SEGMENT STACK 'STACK'
DW 256 DUP(?)
STACK ENDS
DATA SEGMENT
MSR DB 0D9H,07H,8BH,0C5H,0EBH,04H,9DH,0F9H
DATA ENDS
CODE SEGMENT
ASSUME SS:STACK,CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
MOV SI,OFFSET MSR
MOV CX,7
CMP CX,0H
JZ NEXT0
MOV BH,[SI]
MOV BL,[SI]
NEXT1:
INC SI
MOV AL,[SI]
CMP AL,BH
JNB NEXT2
CMP AL,BL
JNA NEXT3
NEXT2: MOV BH,AL
JMP NEXT5
NEXT3: MOV BL,AL
NEXT5:DEC CX
CMP CX,0H
JNZ NEXT1
NEXT0:RET
CODE ENDS
END START
4.实验步骤
(1) 运行 Tdpit 集成操作软件,根据实验要求编写程序,在数据段声明 8 个的数据:0D9H,
07H,8BH,0C5H,0EBH,04H,9DH,0F9H。
(2) 对实验程序进行编译、链接。
(3) 使用运行命令运行程序,观察运行结果。
3.1 8255 并行接口实验
1.实验目的
1. 学习并掌握 8255 的工作方式及其应用。
2. 掌握 8255 典型应用电路的接法。
2.实验设备
PC 机一台,TD-PITD 实验装置一套。
3.实验内容
1. 基本输入输出实验。编写程序,使 8255 的 A 口为输出,B 口为输入,完成拨动开关
到数据灯的数据传输。要求只要开关拨动,数据灯的显示就发生相应改变。
2. 流水灯显示实验。编写程序,使 8255 的 A 口和 B 口均为输出,数据灯 D7~D0 由左
向右,每次仅亮一个灯,循环显示,D15~D8 与 D7~D0 正相反,由右向左,每次仅点亮一个灯,循环显示。
4.实验原理
并行接口是以数据的字节为单位与 I/O 设备或被控制对象之间传递信息。CPU 和接口之间的数据传送总是并行的,即可以同时传递 8 位、16 位或 32 位等。8255 可编程外围接口芯片是 Intel 公司生产的通用并行 I/O 接口芯片,它具有 A、B、C 三个并行接口,用+5V 单电源供电,能在以下三种方式下工作:方式 0--基本输入/输出方式、方式 1--选通输入/输出方式、方式 2--双向选通工作方式。8255 的内部结构及引脚如图3-1-1 所示,8255 工作方式控制字和 C 口按位置位/复位控制字格式如图 3-1-2 所示。
8255 实验单元电路图如图 3-1-3 所示:
5.实验步骤
1. 基本输入输出实验
本实验使 8255 端口 A 工作在方式 0 并作为输出口,端口 B 工作在方式 0 并作为输入口。用一组开关信号接入端口 B,端口 A 输出线接至一组数据灯上,然后通过对 8255 芯片编程来实现输入输出功能。具体实验步骤如下述:
(1)实验接线图如图 3-1-4 所示,按图连接实验线路图。
(2)运行 Tdpit 集成操作软件,根据实验内容,编写实验程序,编译、链接。
(3)运行程序,改变拨动开关,同时观察 LED 灯的显示,验证程序功能。
实验程序清单(T8255-1.ASM)
IOY0 EQU 3000H ;片选 IOY0 对应的端口始地址
MY8255_A EQU IOY0+00H*2 ;8255 的 A 口地址
MY8255_B EQU IOY0+01H*2 ;8255 的 B 口地址
MY8255_C EQU IOY0+02H*2 ;8255 的 C 口地址
MY8255_MODE EQU IOY0+03H*2 ;8255 的控制寄存器地址
STACK1 SEGMENT STACK
DW 256 DUP(?)
STACK1 ENDS
CODE SEGMENT
ASSUME CS:CODE
START: MOV DX,MY8255_MODE ;初始化 8255 工作方式
MOV AL,82H ;工作方式 0,A 口输出,B 口输入
OUT DX,AL
LOOP1: MOV DX,MY8255_B ;读 B 口
IN AL,DX
MOV DX,MY8255_A ;写 A 口
OUT DX,AL
MOV AH,1 ;判断是否有按键按下
INT 16H
JZ LOOP1 ;无按键则跳回继续循环,有则退出
QUIT: MOV AX,4C00H ;结束程序退出
INT 21H
CODE ENDS
END START
2. 流水灯显示实验
使 8255 的 A 口和 B 口均为输出,数据灯 D7~D0 由左向右,每次仅亮一个灯,循环显
示,D15~D8 与 D7~D0 正相反,由右向左,每次仅点亮一个灯,循环显示。实验接线图如图 3-1-5 所示。实验步骤如下所述:
(1)实验接线图如图 3-1-5 所示,按图连接实验线路图。
(2)运行 Tdpit 集成操作软件,根据实验内容,编写实验程序,编译、链接。
(3)运行程序,观察 LED 灯的显示,验证程序功能。
(4)自己改变流水灯的方式,编写程序。
实验程序清单(T8255-2.ASM)
IOY0 EQU 3000H ;片选 IOY0 对应的端口始地址
MY8255_A EQU IOY0+00H*2 ;8255 的 A 口地址
MY8255_B EQU IOY0+01H*2 ;8255 的 B 口地址
MY8255_C EQU IOY0+02H*2 ;8255 的 C 口地址
MY8255_MODE EQU IOY0+03H*2 ;8255 的控制寄存器地址
STACK1 SEGMENT STACK
DW 256 DUP(?)
STACK1 ENDS
DATA SEGMENT
LA DB ? ;定义数据变量
LB DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV DX,MY8255_MODE ;定义 8255 工作方式
MOV AL,80H ;工作方式 0,A 口和 B 口为输出
OUT DX,AL
MOV DX,MY8255_A ;写 A 口发出的起始数据
MOV AL,80H
OUT DX,AL
MOV LA,AL
MOV DX,MY8255_B ;写 B 口发出的起始数据
MOV AL,01H
OUT DX,AL
MOV LB,AL
LOOP1: CALL DALLY
MOV AL,LA ;将 A 口起始数据右移再写入 A 口
ROR AL,1
MOV LA,AL
MOV DX,MY8255_A
OUT DX,AL
MOV AL,LB ;将 B 口起始数据左移再写入 B 口
ROL AL,1
MOV LB,AL
MOV DX,MY8255_B
OUT DX,AL
MOV AH,1 ;判断是否有按键按下
INT 16H
JZ LOOP1 ;无按键则跳回继续循环,有则退出
QUIT: MOV AX,4C00H ;结束程序退出
INT 21H
DALLY PROC NEAR ;软件延时子程序
PUSH CX
PUSH AX
MOV CX,0FFFH
D1: MOV AX,0FFFFH
D2: DEC AX
JNZ D2
LOOP D1
POP AX
POP CX
RET
DALLY ENDP
CODE ENDS
END START
上课实验内容:
;实验A3-1
;实验程序清单(T8255-3.ASM)
IOY0 EQU 3000H
MY8255_A EQU IOY0+00H*2
MY8255_B EQU IOY0+01H*2
MY8255_C EQU IOY0+02H*2
MY8255_MODE EQU IOY0+03H*2
STACK1 SEGMENT STACK
DW 256 DUP(?)
STACK1 ENDS
DATA SEGMENT
LA DB ?
LB DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
MOV DX,MY8255_MODE
MOV AL,80H
OUT DX,AL
MOV DX,MY8255_A
MOV AL,01H
OUT DX,AL
MOV LA,AL
MOV DX,MY8255_B
MOV AL,08H
OUT DX,AL
MOV LB,AL
QUIT:MOV AX,4C00H
INT 21H
CODE ENDS
END START
微机原理与接口技术实验指导书班级学号099074姓名安徽工业大学计算机学院实验一存贮器读写实验一实验内容对指定地址区间的RAM40…
实验题目8253定时计数器实验一实验目的与要求1学会8253芯片和微机接口原理和方法2掌握8253定时器计数器的工作方式和编程原理…
微机原理实验报告实验一两个多位十进制数相加的实验一实验目的学习数据传送和算术运算指令的用法熟悉在PC机上建立汇编链接调试和运行汇编…
微机原理及接口技术实验报告20xx20xx学年第一学期班级姓名学号指导教师实验一Emu8086软件的使用一实验目的1熟悉汇编语言开…
大连理工大学本科实验报告课程名称计算机原理课程设计学院系电气工程学院专业电气工程及其自动化班级学号学生姓名20xx年12月30日大…
不知不觉,微机原理与接口技术实验课程已经结束了。回想起来受益匪浅,主要是加深了对计算机的一些硬件情况和运行原理的理解和汇编语言的编…
微机原理与接口技术及其课程设计心得体会本学期的微机原理和接口技术及其课程设计都已经结束。在这个过程中,我们有所付出,也有所回报,让…
微机原理与接口技术实验总结11107108徐寒黎一、实验内容以及设计思路1、①试编写一程序,比较两个字符串STRING1、STRI…
微机原理学习心得本学期微机原理课程即将结束,关于微机课程的心得体会甚多:初学《微机原理》时,感觉摸不着头绪。面对着众多的术语、概念…
实验一Debug命令及汇编指令和寻址的应用一、实验目的:1、掌握DEBUG的基本命令及其功能,学会用DEBUG调试程序;2、掌握8…
微机原理与应用课程实验报告实验分工报告人同组人实验时间20xx1210课程设计一题目要求1在数据段首址为0100H开始的内存区1按…