计算机硬件技术基础实验报告
实验日期:20##年4月20日
准备实验
实验目的:初步了解实验所用环境
实验仪器:pc机一台
实验步骤:编写程序如
SSTACK SEGMENT STACK
DW 32 DUP(?)
SSTACK ENDS
CODE SEGMENT
ASSUME CS:CODE,SS:SSTACK
START: PUSH DS
XOR AX,AX
MOV DS,AX
MOV SI,3000H
MOV CX,16
AA1: MOV [SI],AL
INC SI
INC AL
LOOP AA1
AA2: JMP AA2
CODE ENDS
END START
实验现象:编译,连接,加载后没有报错。
实验一
实验名称:电子发声设计实验
实验目的:1、学习使用8254定时/计数器使蜂鸣器发声的编程方法。
实验仪器:PC机一台、TD-PITC实验装置一套
实验内容:根据实验提供的音乐频率表和时间表,编写程序控制8254,使其输出连接到扬声器上能发出相应的乐曲。
实验步骤:1按参考图示连接实验线路;
2编写实验程序,经翻译,连接无误后装入系统。
程序如下:
IOY0 EQU 06C0H
MY8254_COUNT0 EQU IOY0+00H;
MY8254_COUNT1 EQU IOY0+02H;
MY8254_COUNT2 EQU IOY0+04H;
MY8254_MODE EQU IOY0+06H;
STACK1 SEGMENT STACK
DW 256 DUP(?)
STACK1 ENDS
DATA SEGMENT
FREQ_LIST DW 371,495,495,495,624,556,495,556,624 ;频率表
DW 495,495,624,742,833,833,833,742,624
DW 624,495,556,495,556,624,495,416,416,371
DW 495,833,742,624,624,495,556,495,556,833
DW 742,624,624,742,833,990,742,624,624,495
DW 556,495,556,624,495,416,416,371,495,0
TIME_LIST DB 4,6,2,4,4,6,2,4,4 ;时间表
DB 6,2,4,4,12,1,3,6,2
DB 4,4,6,2,4,4,6,2,4,4
DB 12,4,6,2,4,4,6,2,4,4
DB 6,2,4,4,12,4,6,2,4,4
DB 6,2,4,4,6,2,4,4,12
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
MOV DX,MY8254_MODE
MOV AL,36H
OUT DX,AL
BEGIN: MOV SI,OFFSET FREQ_LIST
MOV DI,OFFSET TIME_LIST
PLAY:MOV DX,0FH
MOV AX,4240H
DIV WORD PTR[SI]
MOV DX,MY8254_COUNT0
OUT DX,AL
MOV AL,AH
OUT DX,AL
MOV DL,[DI]
CALL DALLY
ADD SI,2
INC DI
CMP WORD PTR[SI],0
JE BEGIN
JMP PLAY
DALLY PROC
D0:MOV CX,0010H
D1:MOV AX,0F00H
D2:DEC AX
JNZ D2
LOOP D1
DEC DL
JNZ D0
RET
DALLY ENDP
CODE ENDS
END START
3运行程序,听扬声器发出的音乐是否正确。
4更改程序,再次运行。
更改部分的音乐:
DATA SEGMENT
FREQ_LIST DW 262,262,393,393,441,441,393,350,350 ;频率表
DW 330,330,294,294,262,393,393,350,350
DW 330,330,294,393,393,350,350,330,330
DW 294,262,262,393,393,441,441,393,350
DW 350,330,330,294,294,262,262,262,393
DW 393,441,441,393,350,350,330,330,294,0
TIME_LIST DB 2, 2, 2, 2, 2, 2, 8, 2, 2 ;时间表
DB 2, 2, 2, 2, 8, 2, 2, 2, 2
DB 2, 2, 8, 2, 2, 2, 2, 2, 2
DB 8, 2, 2, 2, 2, 2, 2, 8, 2
DB 2, 2, 2, 2, 2, 8, 2, 2, 2
DB 2, 2, 2, 8, 2, 2, 2, 2, 2
DATA ENDS
实验现象:首先听到了“友谊地久天长“这首歌,音符较为准确
更改程序后,音符有所变化,运行较好。
实验二
实验名称:点阵LED显示设计实验
实验目的:1了解LED点阵的基本结构
2学习LED点阵扫描显示程序的设计方法。
实验设备:PC机一台、TD-PITC实验装置一套
实验内容:编写程序,控制点阵向上卷动显示“同济大学”。
实验步骤:1按图示连接实验电路图;
2使用字符提取软件得到“”的编码,将该字库文件修改后写入程序中,保存为“HZDOT.ASM”,编写式样程序,检查无误后,便意,连接并装入系统;
程序如下:
ROW1 EQU 0600H
ROW2 EQU 0640H
COL1 EQU 0680H
COL2 EQU 06C0H
STACK1 SEGMENT STACK
DW 256 DUP(?)
STACK1 ENDS
DATA SEGMENT
HZDOT:
;同 CCDAC
DB 000H,000H,07FH,0FCH,040H,004H,040H,004H
DB 05FH,0F4H,040H,004H,040H,004H,04FH,0E4H
DB 048H,024H,048H,024H,048H,024H,04FH,0E4H
DB 048H,024H,040H,004H,040H,014H,040H,008H
;济 CBCC3
DB 040H,080H,020H,040H,027H,0FEH,001H,010H
DB 088H,0A0H,048H,040H,051H,0B0H,016H,00EH
DB 011H,010H,021H,010H,0E1H,010H,021H,010H
DB 022H,010H,022H,010H,024H,010H,028H,010H
;大 CB4F3
DB 001H,000H,001H,000H,001H,000H,001H,000H
DB 001H,000H,0FFH,0FEH,001H,000H,002H,080H
DB 002H,080H,002H,040H,004H,040H,004H,020H
DB 008H,010H,010H,018H,020H,00EH,040H,004H
;学 CD1A7
DB 001H,008H,010H,08CH,00CH,0C8H,008H,090H
DB 07FH,0FEH,040H,004H,08FH,0E8H,000H,040H
DB 000H,080H,07FH,0FEH,000H,080H,000H,080H
DB 000H,080H,000H,080H,002H,080H,001H,000H
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
MOV DX,ROW1
MOV AL,00H
OUT DX,AL
MOV DX,ROW2
OUT DX,AL
MOV AL,0ffH
MOV DX,COL1
OUT DX,AL
MOV DX,COL2
OUT DX,AL
BG0:MOV AX,160
MOV SI,OFFSET HZDOT
BG1:CALL DISP
ADD SI,2
DEC AX
JZ BG0
JMP BG1
DISP:MOV CX,000FH
PUSH AX
ML0:PUSH CX
MOV BL,01H
MOV CX,0008H
ML1:MOV DX,ROW1
MOV AL,00H
OUT DX,AL
MOV AL,[SI]
NOT AL
MOV DX,COL1;
OUT DX,AL
INC SI
MOV AL,[SI]
NOT AL
MOV DX,COL2;
OUT DX,AL
INC SI
MOV DX,ROW1;
MOV AL,BL
OUT DX,AL
ROL BL,1
CALL DELAY
LOOP ML1
MOV DX,ROW1
MOV AL,00H
OUT DX,AL
MOV CX,0008H
ML2:MOV DX,ROW2;
MOV AL,00H
OUT DX,AL
MOV AL,[SI]
NOT AL
MOV DX,COL1;
OUT DX,AL
MOV AL,[SI]
NOT AL
MOV DX,COL1;
OUT DX,AL
INC SI
MOV AL,[SI]
NOT AL
MOV DX,COL2;
OUT DX,AL
INC SI
MOV DX,ROW2;
MOV AL,BL
OUT DX,AL
ROL BL,1
CALL DELAY
LOOP ML2
MOV DX,ROW2
MOV AL,00H
OUT DX,AL
SUB SI,32
POP CX
LOOP ML0
POP AX
RET
DELAY:PUSH CX;
MOV CX,0100H
DL1:PUSH AX
POP AX
LOOP DL1
POP CX
RET
CODE ENDS
END START
3运行实验程序,观察点阵的显示,验证程序功能;
实验三
实验名称:步进电机实验
实验目的:掌握步进电机的控制方法,了解80X86微处理器在控制领域的实际应用。
实验仪器:PC机一台、TD-PITC实验装置一套
实验步骤:1按图示连接线路;
2编写实验程序,编译,连接后装入系统;
程序如下:
SSTACK SEGMENT STACK
DW 256 DUP(?)
SSTACK ENDS
DATA SEGMENT
TABDT DB 01H,03H,02H,06H,04H,0CH,08H,09H
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
MAIN:MOV Al,90H;
MOV DX,0606H
OUT DX,AL
A1:MOV BX,OFFSET TABDT
MOV CX,0008H
A2:MOV AL,[BX]
MOV DX,0602H;
OUT DX,AL
CALL DALLY;
INC BX
LOOP A2
JMP A1
DALLY:PUSH CX
MOV CX,800H
A3:PUSH AX
POP AX
LOOP A3
POP CX
RET
CODE ENDS
END START
3运行程序,观察实验现象;
4 改变电机的转速。汇编语言如下:
MAIN: MOV AL, 90H
MOV DX, 0606H
OUT DX, AL
A1: MOV BX, OFFSET TABDT
MOV CX, 0100H
A2: MOV AL,[BX]
MOV DX, 0602H
OUT DX, AL
CALL DALLY
注意:步进电机不使用时请断开连接器,以免误操作使用电机过热损坏。
实验现象:运行程序后,步进电机开始旋转
实验总结:
通过本次实验,我们初步掌握了Wmd86软件的使用,掌握了用汇编语言控制TD-PITC实验箱的电子发声单元、点阵显示单元、步进电机单元的方法,了解了LED点阵的基本结构,了解了80X86微处理器在控制领域的实际应用,对课堂所学知识有了更深入的体会。
第二篇:计算机硬件实验报告
计算机硬件技术基础实验报告
一、实验目的
(1) 掌握分支程序的结构;
(2) 掌握分支程序的设计,调试方法
二、实验内容
设有3个单字节无符号数存在BUF开始的缓冲区中,编写一个能将它们从大到小重新排序的程序。
三、算法描述流程图
四、实验步骤
1. 输入源程序:
DATA SEGMENT ;数据段
BUF DB 87,234,123
DATA ENDS
CODE SEGMENT 代码段
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA 段寄存器初值
MOV DS,AX
MOV SI,OFFSET BUF
MOV AL,[SI] 把三个数取到寄存器中
MOV BL,[SI+1]
MOV CL,[SI+2]
CMP AL,BL 排序,将最大的数送AL寄存器中
JAE NEXT1
XCHG AL,BL
NEXT1:
CMP AL,CL
JAE NEXT2
XCHG AL,CL
NEXT2:
CMP BL,CL 将最小数送CL寄存器中
JAE NEXT3
XCHG BL,CL
NEXT3:
MOV [SI],AL 从大到小依次存回缓冲区
MOV [SI+1],BL
MOV [SI+2],CL
MOV AH,4CH
INT 21H 程序结束退出
CODE ENDS
ENDS TART
2. 在emu8086中保存源文件,执行compile。
3. 执行run,运行程序。
4. 单步执行,查看缓冲区数据段值。
五、实验结果
1. 执行run,运行程序,得到如下界面:
2. 执行single step,单步调试程序,执行结果:AL,BL,CL的值从大到小排列
3. 查看内存缓冲区三个数的初始值及结果值:
六、思考题
分支结构程序设计的关键在于准确地知道操作结果影响的标志位状态和正确地使用条件转移指令。本程序中,由于是无符号数的比较,所以也可以根据一个标志位来判定数的大小,你能说出是哪个标志位吗,且程序中的JAE指令该用什么指令替换呢?
答:本程序中也可以根据一个标志位ZF来判断数的大小。本程序中的JAE可以用JA/JZ指令替换。
七、扩展题
在BUF开始的单元中有3个单字节无符号数,编写程序找出它们中的最小值并存入MIN单元。
答:比较BUF中的三个的三个值,将最小值存入MIN。
具体程序如下:
DATA SEGMENT ;数据段
BUF DB 87,234,123
MIN DB 0
DATA ENDS
CODE SEGMENT 代码段
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA 段寄存器初值
MOV DS,AX
MOV SI,OFFSET BUF
MOV AL,[SI] 把三个数取到寄存器中
MOV BL,[SI+1]
MOV CL,[SI+2]
CMP AL,BL 将最小数送AL寄存器中
JBE NEXT1
XCHG AL,BL
NEXT1:
CMP AL,CL
JBE NEXT2
XCHG AL,CL
NEXT2:
MOV MIN,AL 将最小值存入MIN单元中
MOV AH,4CH
INT 21H 程序结束退出
CODE ENDS
END START
编译运行获得结果如下:
八、实验心得
理解了汇编语言中编程的基本步骤,掌握了通过地址对数据赋值的方法。掌握汇编语言编制基本顺序结构的算法,包括地址取值和加法的算法步骤等。这个实验,使我可以在编程中认识到直接通过CPU寄存器地址赋值可以大大提高了程序效率,但我要继续练习熟读汇编语言代码的能力。我要通过不停地学习使我能够熟练运用它,它使我能清楚的看到每步的内存变化,更了解程序的操作。