实验一 熟悉汇编语言程序开发过程

一、实验目的

1.熟悉与实验有关的系统软件(如编辑程序、汇编程序、连接程序和调试器等)的使用。

2.在程序调试过程中,学习及掌握调试器CodeView的各种操作命令,掌握程序的调试方法及技巧。

二、实验内容

用查表法求0~9之间某个整数的平方,设该数x及结果y均存放在内存中,在数据段定义一个平方表table。

1.建立源程序asm文件

用Windows的记事本输入以下源程序:

data segment

table db 0,1,4,9,16,25,36,49,64,81

x db ?

y db ?

data ends

code segment

assume cs:code,ds:data

start: mov ax,data

mov ds,ax

lea bx,table

mov al,x

mov ah,0

add bx,ax

mov al,[bx]

mov y,al

mov ah,4ch

int 21h

code ends

end start

2.BUFFER单元有一字节数据,将它拆开,低四位送L单元,高四位送H单元,编写程序实现以上功能,调试通过。

data segnment

buffer db 0f8h

l db ?

h db ?

data ends

code segnment

assume cs:code,ds:data

start:mov ax,data

mov ds,ax

mov al,buffer

and al,0fh

mov l,al

mov al,buffer

mov cl,4

shr al,cl

mov h,al

mov ah,4ch

int 21h

code ends

end start

二、实验总结:

1.用汇编程序masm对源文件汇编产生目标文件obj

masm demo.asm

Microsoft (R) MASM Compatibility Driver

Copyright (R) Microsoft Corp 1991. All rights reserved

Invoking: ML.EXE/I. /Zm /C /Ta demo.asm

Microsoft (R) Macro Assembler Version 6.00

Copyright (R) Microsoft Corp 1981-1991. All rights reserved

Assembling: demo.asm

2.用连接程序link产生执行文件exe

link demo

Microsoft (R) Segmented-Executalle Linker Version 5.13

Copyright (R) Microsoft Corp 1984-1991. All rights reserved

Run File [demo.exe]: ↙

List File [NUL.MAP]: ↙

Libraries [.LIB]: ↙

Definitions File [NUL.DEF]: ↙

LINK: warning L4021: no stack segment

↙表示按Enter键,得到可执行程序demo.exe。

也可用汇编器ML,它可以自动调用LINK。应用命令:

ML demo.asm

依次进行汇编和连接,生成demo.obj和demo.exe。但源文件一定要是扩展名.asm,命令中不能省略扩展名.asm。

注意:用Windows记事本保存的源程序的扩展名若为.txt,使用ML进行汇编和连接前,先要在DOS下,用ren命令将源文件的扩展名改为.asm。

ren demo.txt demo.asm

3.执行程序

只要在DOS命令提示符下键入文件名即可执行程序。

四、总结调试器CodeView调试的方法

用调试器CodeView调试程序

(1) 进入CodeView

先执行mouse驱动程序,这样进入调试程序后可以使用鼠标操作。

cv demo

此时已将执行程序装入内存,进入CodeView,屏幕显示CodeView的菜单、窗口、帮助/状态条,CodeView能记住上一次运行时打开的窗口,按下Alt_W键将打开 Windows菜单,可选择表示窗口的菜单,以激活相应的窗口。一般同时打开“Source”(源程序)、“Memory”(内存)、“Register”(寄存器)、“Command”(命令)等窗口,必要时,可以同时打开两个“Memory”(Memory 1和Memory2)。

可用CodeView命令进行程序调试。

(2) 在“Source”(源程序) 窗口查看源程序和对应的机器码,注意查看第一条指令mov ax,xxxx (data),xxxx即为当前数据段段地址DS的值。白底行为CS:IP所指的指令行。

(3) 在“Register”(寄存器) 窗口查看或修改各寄存器的值,也可以用寄存器命令R显示或修改。

(4) 在“Memory”(内存)窗口查看数据段的数据,鼠标移至段地址处按左键,光标在该字符下闪烁,键入新的值修改段地址值,使它指向当前DS(源程序窗口查看到的值xxxx),从而查看数据段指定内存单元的值。

(5) 在“Memory”(内存)窗口直接修改内存单元的值,只要将光标移到相应字节处,键入新的十六进制值即可,输入变量x(地址应为DS:000a)的值,如送入05。

(6) 程序运行

实验三 循环程序设计

一、实验目的

1.进一步熟悉调试器CodeView的各种操作命令,掌握程序的调试方法及技巧。

2.加深对循环结构的理解。

3.掌握循环结构程序设计和调试的方法。

二、实验内容

1.用计数器控制循环

统计某数据区内负数的个数,设数据区的第一个单元存放数据区内单元数据的个数,从第二个单元开始存放数据,结果存入NUMB单元。为统计数据区内负数的个数,需要逐个判断数据区内的每一个数据,然后将所有数据中凡是符号位为1的数据的个数累加起来,即得数据区内所包含负数的个数。

实验程序如下: DATA SEGMENT

BUFF DB 10,10H,88H,78H,9AH,24H,5H,0D8H,0FAH,38H,9H

NUMB DB ?

DATA ENDS

STACK SEGMENT STACK DW 64 DUP(?) STACK ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK

START:MOV AX,DATA 。

MOV DS,AX

MOV ES,AX

LEA DI,BUFF

MOV CL,[DI]

XOR CH,CH

MOV BL,CH

INC DI

A1: MOV AL,[DI]

TEST AL,80H

JE A2

INC BL

A2: INC DI

LOOP A1

MOV [DI],BL

MOV AH,4CH

INT 21H

CODE ENDS

END START

图3-1 程序流程图

2.按问题的条件控制循环

编制程序,使S=1+2×3+3×4+4×5+?N(N+1),直到N(N+1)项大于200为止,实验程序流程如图3-2所示

程序如下:

code segment

assume cs:code

start: mov dx,1

mov bl,2

a: mov al,bl

inc bl

mul bl

add dx,ax

cmp ax,200

jna a

mov ah,4ch

int 21h

code ends

end start

三:实验总结:总结循环程序中控制循环的方法

实验十一 存储器接口实验

一、实验目的 1.了解62256 RAM特性。 2.掌握存储器扩展和存储器读/写方法,通过硬件电路的分析,掌握地址译码的方法。 3.熟悉EAT598实验教学系统的基本操作。

二、实验内容

利用62256扩充RAM,地址为00000-07FFFH,编写一个程式,将62256的前十个存储单元依次送入数据0~9,再对其进行读操作校验。

程序如下:

code segment

assume cs:code

start: mov ax,0

mov ds,ax

mov si,0

mov cx,10

a2: mov [si],al

mov ah,[si]

cmp al,ah

jne a1

inc si

inc al

loop a2

mov bl,0

jmp a3

a1: mov bl,0eh

a3:jmp a3

code ends

end start

三、实验总结

EAT598实验教学系统的9芯仿真机通讯口与PC机的串行口用串行通讯电缆相连,仿真实验板上的拨动开关SB1,拨到下端,切换到88实验模式(后面的硬件接口实验同)。

(1) 打开实验教学系统电源(实验箱右边的开关),将实验箱中央的电源开关切向ON,在PC机桌面上点击LCA88图标,启动LCA88调试软件。

(2) 连机:选择“设置——实验机/仿真机”菜单项,在弹出的对话框中,设置实验机/仿真机加载的段地址和偏移地址。选择“设置——通讯口”菜单项,在弹出的对话框中,选择相应的通讯串口和通讯波特率。点击测试串口按钮,检查通讯口是否可用。当通讯正常,

实验箱的LED显示为AedK- 86。

(3) 程序编辑:选择“文件——新文件”菜单项,将新建一个空的编辑窗口。在编辑窗口中输入程序,输入完毕,选择“文件——另存为”菜单项,把该文件保存为ram.asm。也可以直接选择“文件——打开”菜单项打开该文件。

(4) 汇编和连接:选择“编译——编译并连接”菜单项,将编译并连接当前活动窗口中的源文件,编译结果的信息显示在输出窗口中,可以根据输出窗口中错误信息直接定位到源文件的相应位置。编译连接成功后生成EXE文件。

(5) 选择“调试——加载调试”菜单项,加载当前活动窗口中的源文件所产生的目标文件到实验教学系统(加载空间从8100:0开始)。“设置——实验机/仿真机”菜单项中若选择了“编译连接成功后自动加载到实验机”,则上步编译连接成功后自动将EXE文件加载到实验教学系统。

(6) 选择“调试/对话窗口”菜单项,打开一个与AEDK 8688实验教学系统直接对话的窗口,可以使用实

验机/仿真机监控命令和实验教学系统对话。显示提示符“#”, 以表示监控程序正等待接收命令进来。

(7) 在“调试”菜单选项中,断点调试、全速运行等功能调试程序。

1) 断点调试

有以下方法来设置断点达到中止程序执行目的:

·执行到光标所在行 热键F4

·按暂停按钮

LCA88ET调试软件提供一次性断点:执行到光标所在行。按热键F4,调试程序继续执行程序代码,直到它到达光标行处。

2) 全速运行 热键F9

(8) 查看结果

移动鼠标到源程序窗中相应的寄存器上,将出现一个提示窗口,显示这寄存器的当前值。 在对话窗口,用DW0000:0000命令显示存储器前80H个单元内容,检查写入是否正确。

实验十三 8255A并行接口实验

一、实验目的 1.学习并掌握8255A的各种工作方式及其应用。 2.学习在接口实验单元上构造实验电路。 3.掌握8255A 工作于中断方式的应用。

二、实验内容

编写程序,使8255A端口B工作在方式0并作为输入口,端口A工作在方式0并作为输出口。 sy13

code segment

assume cs:code

start: mov al,82h

mov dx,213h

out dx,al

a1: mov dx,211h

in al,dx

mov dx,210h

out dx,al

jmp a1

code ends

end start

三、记录实验中观察到的现象,并加以解释。

四、实验总结:总结8255A可编程并行接口芯片的编程方法。

实验十五 8253定时器/计数器应用编程

一、实验目的

1.熟悉8253在系统中的典型接法。

2.掌握8253的工作方式及应用编程。

二、实验内容

编程将8253的计数器0设置为方式2(分频),计数器1设置为方式2(分频),计数器2设置为方式3(方波),输出频率为0.5Hz。

code segment

assume cs:code

start: mov al,35h;计数器0设置

mov dx,22bh

out dx,al

mov al,72h;计0装初值

mov dx,228h

out dx,al

mov al,30h

out dx,al

mov al,55h

mov dx,22bh

out dx,al

mov al,10h

mov dx,229h

out dx,al

mov al,97h

mov dx,22bh

out dx,al

mov al,10h

mov dx,22ah

out dx,al

a1:jmp a1

code ends

end start

三、记录实验中观察到的现象,并加以解释。

四、总结8253可编程计数器/定时器芯片的编程方法。

第二篇:微机原理及接口技术 实验报告 9200字

微机原理及接口技术

实验报告

学 院: 信息工程学院 专业班级: 通 信 0801 姓 名:学 号:

实验一 多位十进制数相加实验

一.实验目的

1.熟悉在PC机上建立、汇编、连接、调试和运行汇编语言程序的过程。

2.掌握数据传送和算术运算指令的用法。

二.实验内容

将两个多位十制数28056,47193相加,并显示加数,被加数,和。要求加数和被加数均以ASCII码形式各自顺序存放在DATAl和DATA2内存单元中,结果送回DATA1处(低位在前,高位在后)。

三.程序流程图

微机原理及接口技术实验报告

四.参考程序

SHOW MACRO B

MOV DL,B

MOV AH,02H

INT 21H

ENDM

DATA SEGMENT

DATA1 DB 33H,39H,31H,37H,34H

DATA2 DB 36H,35H,30H,38H,32H

DATA3 DB ‘__’, 0DH,0AH,’$’

DATA ENDS

STACK SEGMENT STACK

STA DB 20 DUP (?)

TOP EQU LENGTH STA

STACK ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA START: MOV AX,DATA

MOV DS,AX

MOV AX,STACK

MOV SS,AX

MOV AX,TOP

MOV SP,AX

MOV SI,OFFSET DATA2

MOV BX,05

SHOW 20H

CALL DISPL

SHOW 0DH

SHOW 0AH

MOV SI,OFFSET DATA1

MOV BX,05

SHOW 2BH

CALL DISPL

SHOW 0DH

SHOW 0AH

MOV CL,7

S1: SHOW 2DH

LOOP S1

微机原理及接口技术实验报告

SHOW 0DH

SHOW 0AH

MOV SI,OFFSET DATA1 MOV DI,OFFSET DATA2 CALL ADDA

MOV SI,OFFSET DATA1 MOV BX,05

SHOW 20H

CALL DISPL

MOV AX,4C00H

INT 21H

DISPL PROC NEAR

DS1: SHOW [SI+BX-1]

DEC BX

JNZ DS1

RET

DISPL ENDP

ADDA PROC NEAR

MOV DX,SI

MOV BP,DI

MOV BX,05

AD1: SUB BYTE PTR [SI+BX-1],30H SUB BYTE PTR [DI+BX-1],30H DEC BX

JNZ AD1

MOV SI,DX

MOV DI,BP

MOV CX,05

CLC

AD2: MOV AL,[SI]

MOV BL,[DI]

ADC AL,BL

AAA

MOV [SI],AL

INC SI

INC DI

LOOP AD2

MOV SI,DX

MOV DI,BP

MOV BX,05

AD3: ADD BYTE PTR [SI+BX-1],30H ADD BYTE PTR [DI+BX-1],30H DEC BX

JNZ AD3

RET

ADDA ENDP

CODE ENDS

END START

四.实验过程

进入DOS环境,进入E盘MASM子目录,键入:

E: 回车

CD: MASM 回车

EDIT *.ASM 回车(*为程序名)

打开编辑窗口将汇编语言源程序输入

对源程序进行汇编链接,执行并调试可执行文件

微机原理及接口技术实验报告

六.思考题

不改变数据段DATA1和DATA2的内容,如何将加数与被加数分别由28056和47193变成65082和39174,并且相加

答:源程序不变将

DATA1 DB 33H,39H,31H,37H,34H

DATA2 DB 36H,35H,30H,38H,32H

后加上

DATA4 DB 37H,34H,31H,39H,33H

DATA5 DB 32H,38H,30H,35H,36H

并将全部DATA1和DATA2全部改成DATA4和DATA5

就可以实现

七、实验感想:

通过本实验,基本学会了数据传送和算术运算指令的用法,熟悉了DOS环境,并且对微机原理及接口技术这门课程有了更深的了解和认识。

实验二 统计数据个数实验

一.实验目的

掌握将多位十六进制数转换成多位十进制数ASCII码的方法

二.实验内容

统计内存数组中大于0和小于0的元素个数,并将统计结果分别存放在LRESULT和HRESULT变量中,并显示个数

三.程序流程图

微机原理及接口技术实验报告

四.参考程序

DATA SEGMENT

ARY DB 1,3,-1,2,6,-9,-5,7,8,1,3,8,-6,8,-9,-7,2,4,-3,-3 DB -4,7,7,8,3,1,3,6,8,5,5,6,4,5,7,-4,2,4,5,-7,5,4 DB 2,5,7,8,8,8,7,6,-5,4,3,2,1,-1,2,2,3,-4,5,6,7 N=$-ARY

LRESULT DW 0

HRESULT DW 0

TJJG DB ‘STATISTICS RESULT:’,0DH,0AH,’$’ DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA START: MOV AX,DATA

MOV DS, AX

MOV ES, AX

SHOW MACRO B

PUSH DX

PUSH AX

MOV AH,02H

INT 21H

POP AX

POP DX

ENDM

XOR CX,CX

MOV CX,N

LEA SI,ARY

LOP: MOV AL,[SI]

CMP AL,0

JNS PLUS

INC LRESULT

JMP CONT

PLUS: INC HRESULT

CONT: INC SI

LOOP LOP

LEA DX,TJJG

MOV AH,09H

INT 21H

SHOW ‘+’

MOV AX,HRESULT

CALL DISPL

SHOW 0DH

SHOW 0AH

SHOW ‘-‘

MOV AX,LRESULT

CALL DISPL

MOV AX,4C00H

INT 21H

DISPL PROC

PUSH DX

PUSH AX

MOV CX,10

MOV DX,00H

MOV BX,00H

DIV CX

MOV BX,DX

ADD AL,30H

DISPL1: MOV DL,AL

MOV AH,02H

INT 21H

MOV DL,BL

ADD DL,30H

MOV AH,02H

INT 21H

POP AX

POP DX

RET

DISPL ENDP

CODE ENDS

END START

五.实验过程

进入E盘的MASM子目录,打开编辑窗口将汇编语言源程序输入,对源程序进行汇编链接,执行并调试可执行文件

微机原理及接口技术实验报告

六.思考题

试分析程序中语句“MOV CX,N”执行后,赋给CX寄存器的值是多少?

答:赋给CX的值是63

七、实验感想:

通过本实验,基本学会了数据传送和算术运算指令的用法及将多位十六进制数转换为多位十进制数ASCII码得方法,熟悉了DOS环境,并且对微机原理及接口技术这门课程有了更深的了解和认识。

实验三 直流电机测速实验

一. 实验目的:

1.掌握8254的工作原理和编程方法

2.了解光电开关的使用方法,掌握用光电传感器测量电机转速的方法

二. 实验内容

光电测速的基本电路由光电传感器、计数器和定时器组成。测量时在被测电机主轴上固定一个圆盘,圆盘的边缘上打上小孔。传感器的红外发射端和接收端装在圆盘的两测,电机带动圆盘转到有孔的位置时,红外光通过,红外接收管导通,输出低电平。红外光被挡住时接收管截止,输出高电平。用计数器记录在一定时间内传感器发出的脉冲个数就可以计算出电机转速。

三. 线路连接

接线方法:8254计数器/定时器0和2作为定时器,确定测速时间,定时器0的CLK0接1MHZ脉冲频率,OUT0作为定时器2的输入,与CLK2相连,输出OUT2与8255的PA0端相连。GATE0、GATE2均接+5V,8254计数器/定时器1作为计数器,输入CLK1与直流电机计数端相连,GATE1与8255的PC0相连。电机DJ端与+5V~0V模拟开关SW1相连。

四. 编程提示

8254计数器/定时器1作为计数器,记录脉冲个数,计数器/定时器0和2作为定时器,组成10~60秒定时器,测量脉冲个数,算出电机每分钟的转速并显示在屏幕上。

8255的PA0根据OUT2的开始和结束时间,通过PC0向8254计数器/定时器1发出开始和停止计数信号。

五. 流程图

微机原理及接口技术实验报告
微机原理及接口技术实验报告
微机原理及接口技术实验报告

六. 参考程序

DATA SEGMENT

IOPORT EQU 0D880H-0280H

IO8255K EQU IOPORT+283H

IO8255A EQU IOPORT+280H

IO8255C EQU IOPORT+282H

IO8254K EQU IOPORT+28BH

IO82542 EQU IOPORT+28AH

IO82541 EQU IOPORT+289H

IO82540 EQU IOPORT+288H

MESS DB ‘STRIKEANY KEY,RETURN TO DOS!’,0AH,0DH,’$’ COU DB 0

COU1 DB 0

COUNT1 DB 0

COUNT2 DB 0

COUNT3 DB 0

COUNT4 DB 0

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE, DS:DATA

START: MOV AX,DATA

MOV DS,AX

MOV DX,OFFSET MESS

MOV AH,09H INT 21H

MOV DX,IO8254K MOV AL,36H OUT DX,AL

MOV DX,IO82540 MOV AX,50000 OUT DX,AL NOP

NOP

MOV AL,AH OUT DX,AL

MOV DX,IO8255K MOV AL,90H OUT DX,AL

MOV DX,IO8255C MOV AL,00 OUT DX,AL LL: MOV AH,01H INT 16H JNZ QUIT1

MOV DX,IO8254K MOV AL,70H OUT DX,AL

MOV DX,IO82541 MOV AL,0FFH OUT DX,AL NOP

NOP

OUT DX,AL

MOV DX,IO8254K MOV AL,90H OUT DX,AL

MOV DX,IO82542 MOV AL,100 OUT DX,AL

MOV DX,IO8255C MOV AL,01H OUT DX,AL JMP A0 QUIT1: JMP QUIT

A0: MOV DX,IO8255A A1: IN AL,DX AND AL,01H

JZ A1

MOV DX,IO8255C MOV AL,00H OUT DX,AL

MOV DX,IO8254K MOV AL,70H OUT DX,AL

MOV DX,IO82541 IN AL,DX MOV BL,AL IN AL,DX MOV BH,AL

MOV AX,0FFFFH SUB AX,BX CALL DISP MOV DL,0DH MOV AH,02 INT 21H

MOV DL,0AH MOV AH,02 INT 21H JMP LL

DISP PROC NEAR MOV DX,0000H MOV CX,03E8H DIV CX

MOV COUNT1,AL MOV AX,DX MOV CL,64H DIV CL

MOV COUNT2,AL MOV AL,AH MOV AH,00H MOV CL,10 DIV CL

MOV COUNT3,AL MOV COUNT4,AH MOV AL,COUNT1 CALL DISP1

MOV AL,COUNT2 CALL DISP1

MOV AL,COUNT3 CALL DISP1

MOV AL,COUNT4

CALL DISP1

RET

DISP ENDP

DISP1 PROC NEAR

AND AL,0FH

CMP AL,09H

JLE NUM

ADD AL,07H

NUM: ADD AL,30H

MOV DL,AL

MOV AH,02

INT 21H

RET

DISP1 ENDP

QUIT: MOV AH,4CH

INT 21H

CODE ENDS

END START

七. 实验结果

微机原理及接口技术实验报告

八. 思考题

关闭电机后,为什么8254计数不为0?

答:关闭电机后,但主机未断电,计数值锁存在锁存器中,所以读数会一直为锁存器的值,8254计数不会显示0

九.实验感想

通过本实验,基本掌握了8254的工作原理和编程方法,了解了光电开关,掌握了用光电传感器测量电机转速的方法。同时,也进一步提高了自己实践动手的能力,熟悉了DOS环境,并且对微机原理及接口技术这门课程有了更深的了解和认识。

实验四 十字路口红绿灯闪烁实验

一.实验目的

通过对红、绿、黄灯的控制,熟练掌握8255A接口芯片的编程方法。

二.实验内容

对8255A接口芯片进行编程,使红,黄,绿发光二极管按照十字路口交通灯的形式点亮或熄灭。

三.线路连接

微机原理及接口技术实验报告
微机原理及接口技术实验报告
微机原理及接口技术实验报告

图2交通十字路口及信号

发光二极管共8个,其中两组绿,黄,红灯用6个,L2、L3、L4为一组,L5、L6、L7为一组;实验台连接如图4.3所示。高电平“1”时,点亮。

四.流程图

微机原理及接口技术实验报告
微机原理及接口技术实验报告

五.参考程序

DATA SEGMENT

IOPORT EQU 0D880H-280H

IO8255C EQU IOPORT+282H

IO8255T EQU IOPORT+283H

PB DB ?

MESS DB ‘ENTER ANY KEY CAN EXIT TO DOS!’,0DH,0AH,’$’ DATA ENDS

STACK SEGMENT STACK

STA DW 50 DUP(?)

TOP EQU LENGTHSTA

STACK ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACK

START: MOV AX,DATA

MOV DS,AX

MOV ES,AX

MOV AH,09H

MOV DX,OFFSET MESS INT 21H

MOV DX,IO8255T MOV AL,81H OUT DX,AL

MOV DX,IO8255C IN AL,DX

MOV PB,AL

MOV DX,IO8255T MOV AL,80H OUT DX,AL

MOV DX,IO8255C MOV AL,PB

OR AL,0CH OUT DX,AL

MOV AL,30H OUT DX,AL

CALL DELAY10 LLL: MOV DX,IO8255C MOV AL,12H OUT DX,AL

CALL DELAY10 CALL DELAY10 CALL DELAY10 CALL DELAY10 MOV AL,10H OUT DX,AL

MOV CX,0040H TTT: MOV AL,0CH OUT DX,AL

PUSH CX

MOV CX,80H LOP1: CALL DELAY1 LOOP LOP1

MOV AL,00H OUT DX,AL

MOV CX,80H LOP2: CALL DELAY1 LOOP LOP2

POP CX

LOOP TTT

MOV AL,30H

OUT DX,AL CALL DELAY10 MOV AL,21H OUT DX,AL CALL DELAY10 CALL DELAY10 CALL DELAY10 CALL DELAY10 MOV AL,20H OUT DX,AL MOV CX,0040H GGG: MOV AL,0CH OUT DX,AL PUSH CX MOV CX,80H LOP3: CALL DELAY1 LOOP LOP3 MOV AL,00H OUT DX,AL MOV CX,80H LOP4: CALL DELAY1 LOOP LOP4 POP CX LOOP GGG MOV AL,30H OUT DX,AL CALL DELAY10 MOV AH,06H MOV DL,0FFH INT 21H JNZ PPP JMP LLL

PPP: MOV AX,4C00H INT 21H

DELAY1 PROC NEAR PUSH CX

MOV CX,0FFFFH CCC: LOOP CCC POP CX RET

DELAY1 ENDP

DELAY10 PROC NEAR PUSH AX PUSH CX

MOV CX,0F00H UUU: CALL DELAY1 LOOP UUU

POP CX

POP AX+*+* RET

DELAY10 ENDP

CODE ENDS

END START

六. 实验结果

1、汇编成功

微机原理及接口技术实验报告

2、 经测试灯是按照指定规律变化

微机原理及接口技术实验报告

七. 实验现象

红黄绿变化的规律为:两个路口红灯全亮;南北路口绿灯亮,东西路口红灯亮;南北路口绿灯灭,东西路口红灯亮;两个路口黄灯闪烁;两个路口红灯全亮;东西路口绿灯亮,南北路口红灯亮;东西路口绿灯灭,南北路口红灯亮;两个路口黄灯闪烁;依次从头到尾循环出现

八. 思考题 :程序中红,绿,黄灯点亮和熄灭的延时时间是如何设

定的?

答:通过用延时子程序CALL DELAY 10的次数来设定

九. 实验感想

通过本实验,基本掌握了8255A接口芯片的编程方法,熟悉了DOS环境,同时,也进一步提高了自己的实践动手能力,并且对微机原理及接口技术这门课程有了更深的了解和认识。

类似文章