微机原理实验报告 下载本文

6、实验代码

DATA SEGMENT

YI DB 44H,33H,22H,99H,00H

ER DB 44H,33H,22H,99H,00H ;装载数据,必须有后面00H SUM DB 5 DUP()

OUP DB 'H + H= ','$'

DATA ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA MAIN PROC FAR START: MOV AX,DATA MOV DS,AX

MOV DX,OFFSET OUP ;显示字符串 MOV AH,9 INT 21H

LEA BP,YI ;在BP中装入YI的地址偏移量 LEA SI,ER ;在SI中装入ER的地址偏移量

LEA DI,SUM ;在DI中装入SUM的地址偏移量 MOV CX,05 ;计数初值 CLC ;进位位清零

NEXT: MOV AL,[BP] ;将YI中的数据赋给AL MOV AH,[SI] ;将ER中的数据赋给BL

ADC AL,AH ;YI和ER中的数据带进位的相加 MOV [DI],AL ;将相加的结果保存在SUM中 INC SI INC DI INC BP

DEC CX

JNZ NEXT ;结果不为零,跳转到NEXT

;上面的程序已经将相加的结果存在了SUM中,下面的程序是将SUM中的结果转化为ASCII显示

MOV CH,05 ;计数器初值

NEXT1: MOV DH,[DI-1] ;将所得结果最高位赋给DH MOV BX,02H

NEXT2: MOV CL,4

ROL DH,CL ;将DH循环右移四位 MOV AL,DH

AND AL,0FH ;将AL高位清零 CMP AL,09H ;与09H比较大小

JBE NEXT3 ;若小于,跳转至NEXT3 ADD AL,07H

NEXT3: ADD AL,30H ;加30H MOV DL,AL

MOV AH,2 ;DOS中断显示 INT 21H DEC BX

JNZ NEXT2 DEC DI DEC CH

JNZ NEXT1 ;循环显示SUM中的值 MOV DL,'H' ;显示H MOV AH,2 INT 21H MAIN ENDP CODE ENDS

END START 实验结果

五、分析与总结

通过实验熟练了8086的指令系统和基本的程序设计格式,实验中出现的各种 问题通过一步步的分析自行解决的过程,提高了对于各种语句、指令的运用熟练程 度

实验二 8255可编程并行接口实验

一、实验目的

1、 掌握8255芯片结构及工作方式; 2、 熟悉8255并行口扩展的编程。

二、实验设备

1、 Lab6000p实验教学系统; 2、 IBM-PC机

三、系统中8255模块

Lab6000p实验箱中的8255模块连线如图所示:

AD0~AD7、A0、A1、RESET、/WR、/RD已分别连至系统总线DB0~DB7、AB0、AB1、RESET、/IOW、/IOR;8255_CS、PA口、PB口、PC口引出留给用户连接。

四、实验内容和实验步骤

1、 8255基本输入输出方式――开关控制LED显示 1) 实验要求

开关拨上LED亮,开关拨下LED灭。 2) 电路连接

8255_CS连至地址译码/CS0,PA口连至LED电平显示模块,PB口连至开关电路。 3) 程序框图

4) 程序代码

mode equ 082h ; 方式0,PA,PC输出,PB输入 PortA equ 8000h ; Port A PortB equ 8001h ; Port B PortC equ 8002h ; Port C CAddr equ 8003h ; 控制字地址 code segment

assume cs:code Start:

mov al, mode mov dx, CAddr

out dx, al ; 输出控制字 loop1: mov dx, PortB in al, dx mov dx, PortA out dx, al jmp loop1 code ends

end start

5) 实验步骤

[1] 在Lab6000p实验箱上完成连接电路;

[2] 开启计算机电源,开启Lab6000p实验箱电源; [3] 启动WAVE6000软件;

[4] 确认WAVE6000与Lab6000p连接; [5] 输入源代码; [6] 编译源代码(F9); [7] 单步运行源代码(F8),观察每条指令执行结果; [8] 连续运行程序(Ctrl+F9),上下拨动开关观察LED显示情况。 6) 问题思考

[1] 若8255_CS连至地址译码/CS4,程序该如何修改。

答:只要将8255四个端口A、B、C、控制口端口号依次更改为:0C000H, 0C001H, 0C002H, 0C003H

[2] 若PB口连至LED电平显示模块,PA口连至开关电路,程序该如何修改。

答:只要更改8255的方式控制字为:H ;方式0 PA输入 PB、PC输出

2、 8255选通输入方式――开关控制LED显示 1) 实验要求

开关上的逻辑信号在选通信号有效时读入微处理器,并送到LED显示。 2) 提示

选通信号由单脉冲产生。 3) 程序代码 MODE EQU B PORTA EQU 8000H PORTB EQU 8001H PORTC EQU 8002H CADDR EQU 8003H CODE SEGMENT ASSUME CS:CODE

START: START PROC NEAR MOV DX,CADDR MOV AL,MODE OUT DX,AL SCAN: MOV DX,PORTB IN AL,DX MOV DX,PORTA OUT DX,AL JMP SCAN START ENDP CODE ENDS END START

实验三8253可编程定时/计数器实验

一、实验目的

1、 掌握8253芯片结构及工作方式;

2、 熟悉8253可编程定时/计数器的编程。

二、实验设备

1、 Lab6000p实验教学系统; 2、 IBM-PC机

三、系统中8253模块

Lab6000p实验箱中的8253模块连线如图所示:

AD0~AD7、A0、A1、/WR、/RD已分别连至系统总线DB0~DB7、AB0、AB1、/IOW、/IOR;三个通道的OUT、GATE、CLK以及CS引出留给用户连接。 四、 实验内容和实验步骤 1、 8253计数实验 1) 实验要求

5个脉冲后LED0亮。 2) 电路连接

3) 程序代码

CONTROL equ 08003h COUNT0 equ 08000h COUNT1 equ 08001h COUNT2 equ 08002h

code segment

assume cs:code start proc near

mov al, 30h ; 通道0,方式0 mov dx, CONTROL out dx, al

mov al, 4 ; 计数器初始值。 mov dx, COUNT0

out dx, al ; 低八位 mov al, 0

out dx, al ; 高八位 jmp $ start endp code ends

end start 4) 实验步骤

[1] 在Lab6000p实验箱上完成连接电路;

[2] 开启计算机电源,开启Lab6000p实验箱电源; [3] 启动WAVE6000软件;