成绩: 大连理工大学 本科实验报告 课程名称:计算机原理课程设计 学院(系):电子与信息工程学院 专 班 学 业: 级: 号: 电子信息工程 学生姓名: 辅导教师: 2008.12.26 目 录 一 运算类程序设计编程训练 二 循环程序设计编程训练 三 排序程序设计编程训练 四 8255 并行接口实验 五 8259 中断实验(一) 六 8259 中断实验(二) 七 8253 定时/计数器实验 八 A/D 转换实验 九 步进电机实验 十 综合实验 十一 实验体会 一 运算类程序设计编程训练 用减奇数法开平方 DATA SEGMENT DA DB 64H,79H,90H COUNT EQU ($-DA) PFG DB COUNT DUP(0) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV CX,COUNT MOV SI,OFFSET DA MOV DI,OFFSET PFG LOP: MOV AL,[SI] SQR_PROC PROC MOV BL,0 MOV DL,1 SQR: SUB AL,DL JB EXIT INC BL ADD DL,2 JMP SQR EXIT: MOV [DI],BL INC SI INC DI DEC CX JNZ LOP MOV AH,4CH INT 21H SQR_PROC ENDP CODE ENDS END START 二 循环程序设计编程训练 DATA SEGMENT DA DB 00H,01H,02H,0FDH,04H,10H,0FFH,0FEH,13H,14H COUNT EQU ($-DA) PFG DB (COUNT +2) DUP(0) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV CX,COUNT MOV SI,OFFSET DA MOV DI,OFFSET PFG MOV [DI],CX INC DI MOV BL,0 MOV AH,7FH MOV MOV CMP JNA AL,[SI] [DI],AL AL,AH L1 LOP: INC BL L1: INC SI INC DI DEC CX JNZ LOP MOV [DI],BL MOV AH,4CH INT 21H 三 排序程序设计编程训练 DATA SEGMENT BUFFER DW DATA ENDS STACK SEGMENT STACK DB 100 DUP(?) STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK MAIN PROC FAR START: MOV AX,DATA MOV DS,AX MOV CX,COUNT-1 MAIN1: MAIN2: LEA BX,BUFFER PUSH CX MOV AX,[BX] -100,300,500,200,400,900,1000,6000 COUNT EQU ($-BUFFER)/2 INC BX INC BX CMP AX,[BX] JLE NEXT XCHG AX,[BX] MOV [BX-2],AX NEXT: LOOP MAIN2 POP CX LOOP MAIN1 MOV AH,4CH INT 21H MAIN ENDP CODE ENDS END START 四 8255 并行接口实验 一,实验目的 1, 学习利用并行接口芯片 8255 构成并行接口电路的基本方法。 2, 熟悉掌握并行接口芯片 8255 的基本性能及在实际应用中硬件连接,初始化编程方法。 二,实验内容: 编写程序,使 8255 的 PB 口为输出口,PA 口为输人口,从 PA 口将 K0--K7 作为一个字节读 入,再从 PB 口输出这一反码字节。 三,实验程序: CODE ASSUME START: MOV MOV OUT BG: IN MOV OUT JMP CODE END ENDS START MOV DX,21BH AL,90H DX,AL DX,218H AL,DX DX,219H DX,AL BG SEGMENT CS:CODE 四,实验电路图 五 8259 中断实验(一) 一,实验目的: 1,了解 pc 机的中断结构及 8259 中断控制器的初始化 2 熟悉 8259 中断控制器的工作原理和硬件连线方法。 3, 了解 8259 的应用和硬件编程方法 4, 了解 8259 的中断屏蔽,以及优先级判别等特性。 5, 了解 8259 的级联工作方式。 二,实验内容:编写中断实验程序,主程序使 8255 的 PB 口为输出口,输出 0FFH,L0—L7 指示灯全亮,中断服务程序从 PB 口输出,L0—L3 亮,L4—L7 灭,并延时一段时间后 返回主程序。 三,实验程序 INT0 INT1 EQU 220h EQU 221h INT10 EQU 228h INT11 EQU 229h STACK STA TOP STACK CODE ASSUME START: CLI MOV AX,TOP MOV SP,AX SEGMENT DB EQU LENGTH STA ENDS SEGMENT CS:CODE,SS:STACK 50 DUP(?) push ds MOV AX,0000H MOV DS,AX MOV AX,OFFSET IRQ0 ADD AX,0000H MOV SI,20H MOV [SI],AX MOV AX,CS MOV SI,22H MOV [SI],AX pop ds MOV AL,13H MOV DX,INT0 OUT DX,AL MOV AL,8 MOV DX,INT1 OUT DX,AL mov cx,0fffh loop $ MOV AL,9 MOV DX,INT1 OUT DX,AL mov cx,0fffh loop $ MOV DX,INT1 MOV AL,0FEH ;OCW1 OUT DX,AL mov cx,0fffh loop $ MOV DX,INT0 MOV AL,20H OUT DX,AL mov cx,0fffh loop $ MOV AL,13H MOV DX,INT10 OUT DX,AL MOV AL,8 MOV DX,INT11 OUT DX,AL mov cx,0fffh loop $ ;ICW2 ;ICW1 ;ICW4 ;ICW2 ;ICW1 ;SET IRQ0 MOV AL,9 MOV DX,INT11 OUT DX,AL mov cx,0fffh loop $ MOV DX,INT11 ;ICW4 MOV AL,0FFH ;OCW1 OUT DX,AL mov cx,0fffh loop $ MOV DX,INT10 MOV AL,20H OUT DX,AL mov cx,0fffh loop $ STI MOV DX,21BH MOV AL,90H OUT DX,AL DSP: MOV AL,0FFH MOV DX,219H OUT DX,AL JMP DSP IRQ0: STI mov cx,0FFFFH LOOP $ MOV AL,0FH MOV DX,219H OUT DX,AL MOV DX,INT0 MOV AL,20H OUT DX,AL mov cx,0FFFFH LOOP $ mov cx,0FFFFH LOOP $ IRET code ends end start 四,实验电路图 六 8259 中断实验(二) 一,实验目的: 1,了解 pc 机的中断结构及 8259 中断控制器的初始化 2 熟悉 8259 中断控制器的工作原理和硬件连线方法。 3 了解 8259 的应用和硬件编程方法 4 了解 8259 的中断屏蔽,以及优先级判别等特性。 5 了解 8259 的级联工作方式。 二,实验内容 编写中断实验程序,主程序使 8255 的 PB 口为输出口,输出 0FFH,L0—L7 指示灯全亮, 中断服务程序从 PB 口输出,L0—L3 亮,L4—L7 灭,并延时一段时间后返回主程序。IR1 中断服务程序从 PB 口输出 0F0H, L0—L3 灭,L4—L7 亮,并延时一段时间后返回主程序。 三,实验程序 INT0 INT1 EQU 220h EQU 221h INT10 EQU 228h INT11 EQU 229h STACK SEGMENT STA TOP STACK CODE ASSUME START: CLI MOV AX,TOP MOV SP,AX PUSH DS DB EQU LENGTH STA ENDS SEGMENT 50 DUP(?) CS:CODE,SS:STACK MOV AX,0000H MOV DS,AX MOV AX,OFFSET IRQ0 ADD AX,0000H MOV SI,20H MOV [SI],AX MOV AX,CS MOV SI,22H MOV [SI],AX MOV AX,0000H MOV DS,AX MOV AX,OFFSET IRQ1 ADD AX,0000H MOV SI,24H MOV [SI],AX MOV AX,CS MOV SI,26H MOV [SI],AX POP DS MOV AL,13H MOV DX,INT0 OUT DX,AL MOV AL,8 MOV DX,INT1 OUT DX,AL mov cx,0fffh loop $ MOV AL,9 MOV DX,INT1 OUT DX,AL mov cx,0fffh ;ICW4 ;ICW2 ;ICW1 ;SET IRQ0 ;SET IRQ1 loop $ MOV DX,INT1 MOV AL,0FCH OUT DX,AL mov cx,0fffh loop $ MOV DX,INT0 MOV AL,20H OUT DX,AL mov cx,0fffh loop $ MOV AL,13H MOV DX,INT10 OUT DX,AL MOV AL,8 MOV DX,INT11 OUT DX,AL mov cx,0fffh loop $ MOV AL,9 MOV DX,INT11 OUT DX,AL mov cx,0fffh loop $ MOV DX,INT11 MOV AL,0FFH OUT DX,AL mov cx,0fffh loop $ MOV DX,INT10 MOV AL,20H OUT DX,AL mov cx,0fffh loop $ ; ;OCW1 ;ICW4 ;ICW2 ;ICW1 ; ;OCW1 STI MOV DX,21BH MOV AL,90H OUT DX,AL DSP: MOV AL,0FFH MOV DX,219H OUT DX,AL JMP DSP IRQ0: STI mov cx,0FFFFH LOOP $ MOV AL,0FH MOV DX,219H OUT DX,AL MOV DX,INT0 MOV AL,20H OUT DX,AL mov cx,0FFFFH LOOP $ mov cx,0FFFFH LOOP $ IRET IRQ1: STI mov cx,0FFFFH LOOP $ MOV AL,0F0H MOV DX,219H OUT DX,AL MOV DX,INT0 MOV AL,20H OUT DX,AL mov cx,0FFFFH LOOP $ mov cx,0FFFFH LOOP $ IRET code ends end start 四,实验电路 七 8253 定时/计数器实验 一,实验目的 1,了解定时器 8253 的初始化及用法。 2,会用逻辑笔或示波器观察 8253 的工作状态。 二,实验内容 编写程序,使 8253 的定时/计数器 2 工作在方式 3 下。 三,实验程序: TIM_CTL TIMER0 TIMER1 TIMER2 MODE23 MODE13 CODE ASSUME START: TT: CLI MOV DX,TIM_CTL EQU EQU EQU EQU EQU EQU SEGMENT CS:CODE 203H 200H 201H 202H 0B6H 76H MOV OUT MOV MOV OUT MOV OUT WT: CODE END JMP AL,MODE23 DX,AL DX,TIMER2 AL,0FFh DX,AL AL,0FFh DX,AL WT ENDS START 四,实验电路 八 A/D 转换实验 一,实验目的 1,了解数/模转换的工作原理 2,掌握 0809 的使用方法 二,实验内容 编写程序,用 0809 的通道 IN0 采集数据并在数码管上显示。 三,实验程序 B8279 D8279 LED0 EQU LED1 data EQU segment EQU EQU 00 38H 212H 210H LED data CODE ASSUME START: MOV MOV OUT DB DB ends SEGMENT 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H 5EH,79H,71H CS:CODE,DS:data DX,B8279 AL,0D0H DX,AL MOV CX,0FFFFH $ DX,B8279 AL,LED0 DX,AL AL,LED1 DX,AL MOV DX,B8279 AL,95H DX,AL DX,D8279 AL,40H DX,AL DX,D8279 AL,5eH DX,AL DX,D8279 AL,77H DX,AL MOV DX,230H DX,AL MOV CX,0FFFFH $ LOOP MOV MOV OUT MOV OUT MOV OUT MOV MOV OUT MOV MOV OUT MOV MOV OUT TT: OUT LOOP MOV MOV OUT MOV DX,B8279 AL,83H DX,AL DX,230H IN AND LEA XLAT MOV OUT MOV MOV OUT MOV IN MOV ROR AND LEA XLAT MOV OUT jmp END START AL,DX AL,0FH BX,LED DX,D8279 DX,AL DX,B8279 AL,84H DX,AL DX,230H AL,DX CL,4H AL,CL AL,0FH BX,LED DX,D8279 DX,AL TT CODE ENDS 四,实验电路 九 步进电机实验 一,实验目的 1,了解步进电机的工作原理,以及脉冲分配概念。 2,掌握计算机控制步进电机的方法。 二,实验内容 编写程序,通过 8255 控制步进电机旋转。 三,实验程序 CODE ASSUME START: MOV MOV OUT BG: IN CMP JNZ C2 MOV JMP C2: CMP JNZ C4 MOV JMP C4: CMP JNZ C8 MOV JMP C8: CMP JNZ CC MOV JMP CC: MOV AL,00H MOV OUT JMP BG WORK: MOV AL,01H DX,219H DX,AL BX,07FFH WORK AL,08H BX,0FFFH WORK AL,04H BX,07FFFH WORK AL,02H BX,0FFFFH WORK MOV DX,21BH AL,90H DX,AL DX,218H AL,DX AL,01H SEGMENT CS:CODE MOV OUT LOOP MOV OUT LOOP MOV OUT LOOP MOV OUT LOOP MOV OUT LOOP MOV OUT LOOP MOV OUT LOOP MOV OUT LOOP JMP CODE END DX,219H DX,AL $ DX,219H DX,AL $ DX,219H DX,AL $ DX,219H DX,AL $ DX,219H DX,AL $ DX,219H DX,AL $ DX,219H DX,AL $ DX,219H DX,AL $ BG ENDS START MOV CX,BX MOV AL,03H MOV CX,BX MOV AL,02H MOV CX,BX MOV AL,06H MOV CX,BX MOV AL,04H MOV CX,BX MOV AL,0CH MOV CX,BX MOV AL,08H MOV CX,BX MOV AL,09H MOV CX,BX 四,实验电路 十 综合实验 1 电路图 2 程序框图 3 实验程序 tim_c equ 203h timer0 equ 200h timer1 equ 201h p8255k equ 21bh p8255b equ 219h int0 equ 220h int1 equ 221h STACK STA TOP STACK CODE ASSUME start: SEGMENT DB EQU LENGTH STA ENDS SEGMENT CS:CODE,SS:STACK 50 DUP(?) CLI mov dx,p8255k mov al,90h out dx,al MOV AX,TOP MOV SP,AX push ds MOV AX,0000H MOV DS,AX MOV AX,OFFSET IRQ0 ADD AX,0000H MOV SI,20H MOV [SI],AX MOV AX,CS MOV SI,22H MOV [SI],AX MOV AX,0000H MOV DS,AX MOV AX,OFFSET IRQ1 ADD AX,0000H MOV SI,24H MOV [SI],AX MOV AX,CS MOV SI,26H MOV [SI],AX ;SET IRQ1 ;SET IRQ0 MOV AX,0000H MOV DS,AX ;SET IRQ2 MOV AX,OFFSET IRQ2 ADD AX,0000H MOV SI,28H MOV [SI],AX MOV AX,CS MOV SI,2AH MOV [SI],AX pop ds MOV AL,13H MOV DX,INT0 OUT DX,AL ;ICW1 MOV AL,8 MOV DX,INT1 OUT DX,AL MOV AL,9 MOV DX,INT1 OUT DX,AL MOV DX,INT1 ;ICW2 ;ICW4 MOV AL,0F8H ;OCW1 OUT DX,AL mov dx,int0 mov al,20h out dx,al mov dx,tim_c mov al,36h ;ji 0 mo 3 out dx,al mov al,5ah mov dx,p8255b out dx,al push ax mov dx,timer0 mov al,0 out dx,al out dx,al mov dx,tim_c mov al,76h out dx,al mov dx,timer1 mov al,5ah out dx,al mov al,0 out dx,al sti pop ax AA: irq0: jmp AA sti xor al,0ffh push ax mov dx,p8255b ;JI CHUZHI ;ji 1 mo 3 ;DUANDIAN FANHUI out dx,al mov dx,int0 mov al,20h out dx,al pop ax iret irq1: sti xor al,0ffh push ax mov dx,p8255b out dx,al mov dx,int0 mov al,20h out dx,al pop ax iret irq2: sti xor al,0ffh push ax mov al,0f0h mov dx,p8255b out dx,al mov dx,int0 mov al,20h out dx,al pop ax iret code ends end start 4 实验思想说明 5 在实验中遇到的问题,怎样解决 十一 实验体会