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软件;