当前位置:文档之家› 微机原理与接口实验

微机原理与接口实验

微机原理与接口实验
微机原理与接口实验

微机原理与接口技术

实验报告

班级:

学号:

姓名:

指导老师:纪平

实验一存贮器读写实验

一、实验目的

l、熟悉静态RAM的使用方法,掌握8088微机系统扩展RAM的方法。

2、掌握静态RAM读写数据编程方法。

二、实验内容

对指定地址区间的RAM(4000H~4FFH)先进行写数据55AAH,然后将其内容读出再写到5000H~5FFH中。

三、实验接线图(系统中已连接好)

四、实验步骤

l、将实验系统与PC机连接;

2、在PC机上启功DJ-8086k软件,实验系统进入联机状态;

3、在DJ-8086k软件环境下编辑、调试程序,将程序调试、编译通过;

4、运行程序。

5、稍后按RST键退出,用存贮器读方法检查4000H~43FFH中的内容和5000~53FFH中的内容应都是55AA。

五、实验总结:把设备连好,然后把代码敲进里面运行,查看那几个内存单元的数据,本次实验对软件有了初步的了解,熟悉了编辑、调试程序,连续运行等内容。

六、实验代码

CODE SEGMENT ;RAM.ASM

ASSUME CS:CODE

PA EQU 0FF20H ;字位口

PB EQU 0FF21H ;字形口

PC EQU 0FF22H ;键入口

ORG 1850h

START: JMP START0

BUF DB ?,?,?,?,?,?

data1: db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h,0a1h

db 86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh,8FH

START0: MOV AX,0H

MOV DS,AX

MOV BX,4000H

MOV AX,55AAH

MOV CX,0200H

RAMW1: MOV DS:[BX],AX

ADD BX,0002H

LOOP RAMW1

MOV AX,4000H

MOV SI,AX

MOV AX,5000H

MOV DI,AX

MOV CX,0400H

CLD

REP MOVSB

call buf1

mov cx,0ffh

con1: push cx

call disp

pop cx

loop con1

call buf2

con2: call disp

jmp con2

DISP: MOV AL,0FFH ;00H

MOV DX,PA

OUT DX,AL

MOV CL,0DFH ;20H ;显示子程序 ,5ms MOV BX,OFFSET BUF

DIS1: MOV AL,[BX]

MOV AH,00H

PUSH BX

MOV BX,OFFSET DATA1

ADD BX,AX

MOV AL,[BX]

POP BX

MOV DX,PB

OUT DX,AL

MOV AL,CL

MOV DX,PA

OUT DX,AL

PUSH CX

DIS2: MOV CX,00A0H

LOOP $

POP CX

CMP CL,0FEH ;01H

JZ LX1

INC BX

ROR CL,1 ;SHR CL,1

JMP DIS1

LX1: MOV AL,0FFH

MOV DX,PB

OUT DX,AL

RET

BUF1: MOV BUF,06H

MOV BUF+1,02H

MOV BUF+2,02H

MOV BUF+3,05H

MOV BUF+4,06H

MOV BUF+5,17H

RET

BUF2: MOV BUF,17H

MOV BUF+1,17H

MOV BUF+2,09H

MOV BUF+3,00H

MOV BUF+4,00H

MOV BUF+5,0dH

RET

CODE ENDS

END START

实验二8259单级中断控制器实验

一、实验目的

⒈掌握8259中断控制器的接口方法。

⒉掌握8259中断控制器的应用编程。

二、实验内容

利用8259实现对外部中断的响应和处理,要求程序对每次中断进行计数,并将计数结果送数码显示。

三、实验接线图

图6-1 实验二接线图

四、编程指南

⑴8259芯片介绍

中断控制器8259A是专为控制优先级中断而设计的芯片。它将中断源优先级排队、辨别中断源以及提供中断矢量的电路集于一片中。因此无需附加任何电路,只需对8259A进行编程,就可以管理8级中断,并选择优先模式和中断请求方式。即中断结构可以由用户编程来设定。同时,在不需要增加其它电路的情况下,通过多片8259A的级联,能构成多达64级的矢量中断系统。

⑵本实验中使用3号中断源IR3,“”插孔和IR3相连,中断方式为边沿触发方式,每拨1次AN开关产生一次中断,满5次中断,显示“good”。如果中断源电平信号不符合规定要求,则自动转到7号中断,显示“Err”。

五、实验程序框图

图6-2 主程序流程

图6-3 IR3中断服务程序流程

图6-4 IR7中断服务流程

六、实验步骤

1、按图6-1连好实验线路图。

⑴8259的INT连8088的INTR;⑵8259的INTA连8088的INTA;⑶“”

插孔和8259的3号中断IR3插孔相连,“”端初始为低电平;⑷8259的CS端接FF80H孔。

2、输入并运行实验程序,系统显示8259-1。

3、按动AN开关按钮,按满5次显示good。

七、思考题:

若用IR5产生中断,要求修改硬件和软件并调试成功。

八、实验总结:要换成IRT5中断,修改程序,修改控制字以及连线方式,对照着书上查格式,掌握了下位机和计算机的简单连接方式。

九、实验代码

IR3产生中断代码如下:

CODE SEGMENT ;

ASSUME CS: CODE

INTPORT1 EQU 0FF80H

INTPORT2 EQU 0FF81H

INTQ3 EQU INTREEUP3

INTQ7 EQU INTREEUP7

PA EQU 0FF20H ;字位口

PB EQU 0FF21H ;字形口

PC EQU 0FF22H ;键入口

ORG 12D0H

START: JMP START0

BUF DB ?,?,?,?,?,?

intcnt db ?

data1: db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h,0a1h

db 86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh,8FH

START0: CLD

CALL BUF1

CALL WRINTVER ;WRITE INTRRUPT

MOV AL,13H

MOV DX,INTPORT1

OUT DX,AL

MOV AL,08H

MOV DX,INTPORT2

OUT DX,AL

MOV AL,09H

OUT DX,AL

MOV AL,0F7H

OUT DX,AL

MOV intcnt,01H ;TIME=1

STI

WATING: CALL DISP ;DISP 8259-1

JMP WATING

WRINTVER: MOV AX,0H

MOV ES,AX

MOV DI,002CH

LEA AX,INTQ3

STOSW

MOV AX,0000h

STOSW

MOV DI,003CH

LEA AX,INTQ7

STOSW

MOV AX,0000h

STOSW

RET

INTREEUP3: CLI

push ax

push bx

push cx

push dx

MOV AL,INTCNT

CALL CONVERS

MOV BX,OFFSET BUF ;077BH

MOV AL,10H

MOV CX,05H

INTRE0: MOV [BX],AL

INC BX

LOOP INTRE0

MOV AL,20H

MOV DX,INTPORT1

OUT DX,AL

ADD INTCNT,01H

CMP INTCNT,06H

JNA INTRE2

CALL BUF2 ;DISP:good INTRE1: CALL DISP

JMP INTRE1

CONVERS: AND AL,0FH

MOV BX,offset buf ;077AH

MOV [BX+5],AL

RET

INTRE2: MOV AL,20H

MOV DX,INTPORT1

OUT DX,AL

pop dx

pop cx

pop bx

pop ax

STI

IRET

INTREEUP7: CLI

MOV AL,20H

MOV DX,INTPORT1

OUT DX,AL

call buf3 ;disp:err INTRE3: CALL DISP

JMP INTRE3

DISP: MOV AL,0FFH ;00H MOV DX,PA

OUT DX,AL

MOV CL,0DFH ;20H ;显示子程序 ,5ms

MOV BX,OFFSET BUF

DIS1: MOV AL,[BX]

MOV AH,00H

PUSH BX

MOV BX,OFFSET DATA1

ADD BX,AX

MOV AL,[BX]

POP BX

MOV DX,PB

OUT DX,AL

MOV AL,CL

MOV DX,PA

OUT DX,AL

PUSH CX

DIS2: MOV CX,00A0H

LOOP $

POP CX

CMP CL,0FEH ;01H

JZ LX1

INC BX

ROR CL,1 ;SHR CL,1

JMP DIS1

LX1: MOV AL,0FFH

MOV DX,PB

OUT DX,AL

RET

BUF1: MOV BUF,08H

MOV BUF+1,02H

MOV BUF+2,05H

MOV BUF+3,09H

MOV BUF+4,17H

MOV BUF+5,01H

RET

BUF2: MOV BUF,09H

MOV BUF+1,00H

MOV BUF+2,00H

MOV BUF+3,0dH

MOV BUF+4,10H

MOV BUF+5,10H

RET

BUF3: MOV BUF,0eH

MOV BUF+1,18H

MOV BUF+2,18H

MOV BUF+3,10H

MOV BUF+4,10H

MOV BUF+5,10H

RET

CODE ENDS

END START

IR5产生中断代码如下:

CODE SEGMENT ;H8255-2.ASM

ASSUME CS:CODE

IOCONPT EQU 0FF2BH

IOAPT EQU 0FF28H

IOBPT EQU 0FF29H

IOCPT EQU 0FF2AH

ORG 11e0H

START: MOV AL,82H

MOV DX,IOCONPT

OUT DX,AL

MOV DX,IOBPT

IN AL,DX

MOV BYTE PTR DS:[0601H],AL

MOV DX,IOCONPT

MOV AL,80H

OUT DX,AL

MOV DX,IOBPT

MOV AL,DS:[0601H]

OR AL,0F0H

OUT DX,AL

MOV DX,IOCPT

MOV AL,0FFH

OUT DX,AL

MOV DX,IOBPT

MOV AL,00FH

OUT DX,AL

CALL DELAY1

IOLED0: MOV AL,01011111B MOV DX,IOBPT

OUT DX,AL

MOV AL,11111010B

MOV DX,IOCPT

OUT DX,AL

CALL DELAY1

CALL DELAY1

OR AL,0FFH

OUT DX,AL

MOV CX,8H

IOLED1: MOV DX,IOCPT

MOV AL,DS:[0601H]

AND AL,10101111B

OUT DX,AL

CALL DELAY2

OR AL,01011111B

OUT DX,AL

CALL DELAY2

LOOP IOLED1

MOV DX,IOBPT

MOV AL,00FH

OUT DX,AL

CALL DELAY2

MOV AL,10101111B

MOV DX,IOBPT

OUT DX,AL

MOV AL,11110101B

MOV DX,IOCPT

OUT DX,AL

CALL DELAY1

CALL DELAY1

OR AL,0FFH

OUT DX,AL

MOV CX,8H

IOLED2: MOV DX,IOCPT

MOV AL,DS:[0601H]

AND AL,01011111B

OUT DX,AL

CALL DELAY2

OR AL,10100000B

OUT DX,AL

CALL DELAY2

LOOP IOLED2

MOV DX,IOCPT

MOV AL,0F0H

OUT DX,AL

CALL DELAY2

JMP IOLED0

DELAY1: PUSH AX

PUSH CX

MOV CX,0030H

DELY2: CALL DELAY2

LOOP DELY2

POP CX

POP AX

RET

DELAY2: PUSH CX

MOV CX,8000H

DELA1: LOOP DELA1

POP CX

RET

CODE ENDS

END START

实验三8255A并行口实验

一、实验目的

掌握通过8255A并行口传输数据的方法,以控制发光二极管的亮与灭。

二、实验内容

用8255做输出口,控制十二个发光管亮灭,模拟交通灯管理。

三、实验接线图

图6-5

四、编程指南

⑴通过8255A控制发光二极管,PB4-PB7对应黄灯,PC0-PC3对应红灯,PC4-PC7对应绿灯, 以模拟交通路灯的管理。

⑵要完成本实验,必须先了解交通路灯的亮灭规律,设有一个十字路口l、3为南北方向,2、4为东西方向,初始状态为四个路口的红灯全亮,之后,1、3路口的绿灯亮,2、4路口的红灯亮,1、3路口方向通车。延时一段时间后,l、3路口的绿灯熄灭,而l、3路口的黄灯开始闪烁,闪烁若干次以后,l、3路口红灯亮,而同时2、4路口的绿灯亮,2、4路口方向通车,延时一段时间后,2、4路口的绿灯熄灭,而黄灯开始闪烁,闪烁若干次以后,再切换到l、3路口方向,之后,重复上述过程。

⑶程序中设定好8255A的工作模式及三个端口均工作在方式0,并处于输出状态。

⑷各发光二极管共阳极,使其点亮应使8255A相应端口的位清0。

五、实验程序框图

六、实验步骤

⒈在系统显示监控提示符“P.”时,按SCAL键。

⒉按图6-5连好实验线路

8255A:PC0->L3,PC1->L6,PC2->L9,PC3->L12,PC4->L2,PC5->L5,PC6->L8,PC7->L11;

PB4->L1,PB5->L4,PB6->L7,PB7->L10

⒊在“P.”态时,输入11E0后,按EXEC键;系统显示执行符“┌”,同时Ll-Ll5发光二极管模拟交通灯显示。

七、思考题

如果通过8255A控制发光二极管,PB4-PB7对应红灯, PC0-PC3对应绿灯, PC4-PC7对应黄灯, 以模拟交通路灯的管理,将如何实现。

八、实验总结:这个实验麻烦些,连的线比较多,代码也比较长,但如果多看几遍,读懂程序,修改就不是问题了。虽然实验箱只是一个小型的模拟平台,但是通过对它的学习和操作,我们对有关接口有了更深刻的了解。

九、实验代码

CODE SEGMENT ;H8255-2.ASM

ASSUME CS:CODE

IOCONPT EQU 0FF2BH

IOAPT EQU 0FF28H

IOBPT EQU 0FF29H

IOCPT EQU 0FF2AH

ORG 11e0H

START: MOV AL,82H

MOV DX,IOCONPT

OUT DX,AL

MOV DX,IOBPT

IN AL,DX

MOV BYTE PTR DS:[0601H],AL

MOV DX,IOCONPT

MOV AL,80H

OUT DX,AL

MOV DX,IOBPT

MOV AL,DS:[0601H]

OR AL,0F0H

OUT DX,AL

MOV DX,IOCPT

MOV AL,0F0H

OUT DX,AL

CALL DELAY1

IOLED0: MOV AL,10100101B

MOV DX,IOCPT

OUT DX,AL

CALL DELAY1

CALL DELAY1

OR AL,0F0H

OUT DX,AL

MOV CX,8H

IOLED1: MOV DX,IOBPT

MOV AL,DS:[0601H]

AND AL,10101111B

OUT DX,AL

CALL DELAY2

OR AL,01010000B

OUT DX,AL

CALL DELAY2

LOOP IOLED1

MOV DX,IOCPT

MOV AL,0F0H

OUT DX,AL

CALL DELAY2

MOV AL,01011010B

OUT DX,AL

CALL DELAY1

CALL DELAY1

OR AL,0F0H

OUT DX,AL

MOV CX,8H

IOLED2: MOV DX,IOBPT

MOV AL,DS:[0601H]

AND AL,01011111B

OUT DX,AL

CALL DELAY2

OR AL,10100000B

OUT DX,AL

CALL DELAY2

LOOP IOLED2

MOV DX,IOCPT

MOV AL,0F0H

OUT DX,AL

CALL DELAY2

JMP IOLED0

DELAY1: PUSH AX

PUSH CX

MOV CX,0030H

DELY2: CALL DELAY2

LOOP DELY2

POP CX

POP AX

RET

DELAY2: PUSH CX

MOV CX,8000H

DELA1: LOOP DELA1

POP CX

RET

CODE ENDS

END START

思考题实验代码:

硬件连接如下:

8255A:PC0->L3,PC1->L6,PC2->L9,PC3->L12,红

PC4->L2,PC5->L5,PC6->L8,PC7->L11;绿PB4->L1,PB5->L4,PB6->L7,PB7->L10

CODE SEGMENT ;H8255-2.ASM ASSUME CS:CODE

IOCONPT EQU 0FF2BH

IOAPT EQU 0FF28H

IOBPT EQU 0FF29H

IOCPT EQU 0FF2AH

ORG 11e0H

START: MOV AL,82H

MOV DX,IOCONPT

OUT DX,AL

MOV DX,IOBPT

IN AL,DX

MOV BYTE PTR DS:[0601H],AL

MOV DX,IOCONPT

MOV AL,80H

OUT DX,AL

MOV DX,IOBPT

MOV AL,DS:[0601H]

OR AL,0F0H

OUT DX,AL

MOV DX,IOCPT

MOV AL,0FFH

OUT DX,AL

MOV DX,IOBPT

MOV AL,00FH

OUT DX,AL

CALL DELAY1

IOLED0: MOV AL,01011111B

MOV DX,IOBPT

OUT DX,AL

MOV AL,11111010B

MOV DX,IOCPT

OUT DX,AL

CALL DELAY1

CALL DELAY1

OR AL,0FFH

OUT DX,AL

MOV CX,8H

IOLED1: MOV DX,IOCPT

MOV AL,DS:[0601H]

AND AL,10101111B

OUT DX,AL

CALL DELAY2

OR AL,01011111B

OUT DX,AL

CALL DELAY2

LOOP IOLED1

MOV DX,IOBPT

MOV AL,00FH

OUT DX,AL

CALL DELAY2

MOV AL,10101111B

MOV DX,IOBPT

OUT DX,AL

MOV AL,11110101B

MOV DX,IOCPT

OUT DX,AL

CALL DELAY1

CALL DELAY1

OR AL,0FFH

OUT DX,AL

MOV CX,8H

IOLED2: MOV DX,IOCPT

MOV AL,DS:[0601H]

AND AL,01011111B

OUT DX,AL

CALL DELAY2

OR AL,10100000B

OUT DX,AL

CALL DELAY2

LOOP IOLED2

MOV DX,IOCPT

MOV AL,0F0H

OUT DX,AL

CALL DELAY2

JMP IOLED0

DELAY1: PUSH AX

PUSH CX

MOV CX,0030H

DELY2: CALL DELAY2

LOOP DELY2

POP CX

POP AX

RET

DELAY2: PUSH CX

MOV CX,8000H

DELA1: LOOP DELA1

POP CX

RET

CODE ENDS

END START

实验四 8250串口实验

一、实验目的

(1)系统扩展以8250为核心的可编程串行异步通讯接口芯片。

(2)对扩展的串行通讯接口实现自发自收。

二、实验内容

将寄存器AH的内容从10H开始通过8250发送、接收,每次收发后AH的内容自动增1直到FFH为止,同时将每次接收到的数据,依次写到内存4000H~40EFH单元中,实现自发自收。

三、编程指南

1、通讯协议

1个起始位,8位数据位,1个停止位,波特率:4800。

2、8250的内部寄存器的端口地址

* 通讯线控制寄存器第7位(DLAB)=0 ,** DLAB=1

3、8250的内部寄存器格式(见课本)

4、波特率除数锁存器的值与波特率的对应关系(16进制数)

5、8250的初始化编程

(1)设置波特率

(2)设置通讯数据格式

(3)设置操作方式

(4)设置中断允许寄存器

四、实验接线图

五、实验步骤

1.用扁平线连JX0(BUS)到JX3(D0~D7),连FF80H孔到CS7,连TXD到RXD(8250实验区)。

2.编辑、调试、运行程序。

3.当系统显示“8250——good”表示自发自收结束,按RST键,系统返回P态,用内存读写命令检查4000H~40EFH内容是否为10H~FFH,验证其正确性。

六、思考题

如果使用通讯协议:

1个起始位,7位数据位,2个停止位,波特率:9600。

系统将如何实现。

七、实验总结:实验过程中把学过的计算机编译原理的知识强化,能够把课堂上学的知识通过自己设计的程序表示出来,加深了对理论知识的理解。

八、实验代码:

CODE SEGMENT ;H8250.ASM

ASSUME CS: CODE ;H8250.ASM

DATA EQU 0ff80H ;BTS-LSB

MSB EQU 0ff81H

LINE EQU 0ff83H

LSTAT EQU 0ff85H

PA EQU 0FF20H ;字位口

PB EQU 0FF21H ;字形口

PC EQU 0FF22H ;键入口

ORG 29A0H

START: JMP START0

BUF DB ?,?,?,?,?,?

data1:db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0 c6h,0a1h

db 86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh,8FH

START0: MOV AL,80H ;DLAB=1

MOV DX,LINE

OUT DX,AL

MOV AL,18H ;BTS=4800

MOV DX,DATA ;ff80H

OUT DX,AL

MOV DX,MSB

MOV AL,00

OUT DX,AL

;-----------------------------------------------------

MOV AL,03H ;8- BIT ,1-STOP

MOV DX,LINE

OUT DX,AL

;--------------------------------------------------

MOV AL,00 ;NO-INT

MOV DX,MSB ;8001H

OUT DX,AL

MOV AH,10H

MOV BX,4000H

MAIN: CALL TXD

CALL RCV

MOV [BX],AL

INC BX

INC AH

CMP AH,00H

JNZ MAIN

CALL BUF1

MOV CX,00FFH

S3: PUSH CX

CALL DISP

POP CX

LOOP S3

CALL BUF3

S1: CALL DISP

JMP S1

TXD: MOV DX,LSTAT

WAIT1: IN AL,DX

TEST AL,20H

JZ WAIT1

MOV AL,AH

MOV DX,DATA

OUT DX,AL

RET

RCV: MOV DX,LSTAT

WAIT2: IN AL,DX

TEST AL,01H

JZ WAIT2

TEST AL,0EH

JNZ ERR

MOV DX,DATA

IN AL,DX

RET

ERR: CALL BUF2

S2: CALL DISP

JMP S2

;------------------------------------------------------

DISP: MOV AL,0FFH ;00H

MOV DX,PA

OUT DX,AL

MOV CL,0DFH ;20H ;显示子程序 ,5ms

MOV BX,OFFSET BUF

DIS1: MOV AL,[BX]

MOV AH,00H

PUSH BX

MOV BX,OFFSET DATA1

ADD BX,AX

MOV AL,[BX]

POP BX

MOV DX,PB

OUT DX,AL

MOV AL,CL

MOV DX,PA

OUT DX,AL

PUSH CX

DIS2: MOV CX,00A0H

DELAY: LOOP DELAY

POP CX

CMP CL,0FEH ;01H

JZ LX1

INC BX

ROR CL,1 ;SHR CL,1

JMP DIS1

LX1: MOV AL,0FFH

MOV DX,PB

OUT DX,AL

RET

BUF1: MOV BUF,08H

MOV BUF+1,02H

MOV BUF+2,05H

MOV BUF+3,00H

MOV BUF+4,17H

MOV BUF+5,17H

RET

;-------------------------------------------------------------

BUF2: MOV BUF,08H

MOV BUF+1,02H

MOV BUF+2,05H

MOV BUF+3,00H

MOV BUF+4,0EH

MOV BUF+5,18H

RET

BUF3: MOV BUF,09H

MOV BUF+1,00H

MOV BUF+2,00H

MOV BUF+3,0DH

MOV BUF+4,10H

MOV BUF+5,10H

RET

CODE ENDS

END START

思考题实验代码:

CODE SEGMENT ;H8250.ASM

ASSUME CS: CODE ;H8250.ASM

DATA EQU 0ff80H ;BTS-LSB

MSB EQU 0ff81H

LINE EQU 0ff83H

LSTAT EQU 0ff85H

PA EQU 0FF20H ;字位口

PB EQU 0FF21H ;字形口

PC EQU 0FF22H ;键入口

ORG 29A0H

START: JMP START0

BUF DB ?,?,?,?,?,?

data1:db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0 c6h,0a1h db 86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh,8FH

START0: MOV AL,80H ;DLAB=1

MOV DX,LINE

OUT DX,AL

MOV AL,0cH ;BTS=9600

MOV DX,DATA ;ff80H

OUT DX,AL

MOV DX,MSB

MOV AL,00

OUT DX,AL

MOV AL,06H ;7- BIT ,2-STOP

MOV DX,LINE

OUT DX,AL

MOV AL,00 ;NO-INT

MOV DX,MSB ;8001H

OUT DX,AL

MOV AH,10H

MOV BX,4000H

MAIN: CALL TXD

CALL RCV

MOV [BX],AL

INC BX

INC AH

CMP AH,00H

JNZ MAIN

CALL BUF1

MOV CX,00FFH

S3: PUSH CX

CALL DISP

POP CX

LOOP S3

CALL BUF3

S1: CALL DISP

JMP S1

TXD: MOV DX,LSTAT

WAIT1: IN AL,DX

TEST AL,20H

JZ WAIT1

MOV AL,AH

MOV DX,DATA

OUT DX,AL

微机原理实验指导书

微机原理及应用实验指导书 南京理工大学机械工程学院 2011年10月10日

实验1 基本操作实验 1. 实验目的 (1) 掌握TD-PITC 80X86 微机原理及接口技术教学实验系统的操作,熟悉Wmd86联机集成开发调试软件的操作环境。 (2) 掌握使用运算类指令编程及调试方法; (3) 掌握运算类指令对各状态标志位的影响及其测试方法; (4) 学习使用软件监视变量的方法。 2. 实验设备 PC机一台,TD-PITC 实验装置一套。 3. 实验内容及步骤 通过对样例程序的操作,学会在TD-PITC境下,如何输入汇编语言程序,如何进行汇编语言源程序的汇编、连接、下载和运行;在调试程序的学习过程中,应学会: ●如何设置断点; ●如何单步运行程序; ●如何连续运行程序; ●怎样查看寄存器的内容; ●怎样修改寄存器的内容; ●怎样查看存储器的内容; ●怎样修改存储器的内容。 3.1 实验内容1――――BCD码转换为二进制数 实验内容: 将四个二位十进制数的BCD 码存放于3500H 起始的内存单元中,将转换的二进制数存入3510H 起始的内存单元中,自行绘制流程图并编写程序。 参考实验程序清单如下: SSTACK SEGMENT STACK DW 64 DUP(?) SSTACK ENDS CODE SEGMENT ASSUME CS:CODE START: XOR AX, AX MOV CX, 0004H MOV SI, 3500H MOV DI, 3510H A1: MOV AL, [SI] ADD AL, AL MOV BL, AL

ADD AL, AL ADD AL, AL ADD AL, BL INC SI ADD AL, [SI] MOV [DI], AL INC SI INC DI LOOP A1 A2: JMP A2 CODE ENDS END START 实验步骤: 1)运行Wmd86 软件,进入Wmd86 集成开发环境。 2)根据程序设计使用语言的不同,通过在“设置”下拉列表来选择需要使用的语言,如图1-1所示。语言选择后,下次再启动软件,语言环境保持这次的修改不变。在这里,我们选择汇编语言。 图1-1 语言环境选择界面 3)语言选择后,点击新建或按Ctrl+N 组合键来新建一个文档,如图1-2所示。默认文件名为Wmd861。 图1-2 新建文件界面 4)编写实验程序,如图1-3所示,并保存,此时系统会提示输入新的文件名,输完后点击保存。

微机原理及应用实验(题目)

微机原理及应用实验 实验一开发环境的使用 一、实验目的 掌握伟福开发环境的使用方法,包括源程序的输入、汇编、修改;工作寄存器内容的查看、修改;内部、外部RAM内容的查看、修改;PSW中个状态位的查看;机器码的查看;程序的各种运行方式,如单步执行、连续执行,断点的设置。二、实验内容 在伟福开发环境中编辑、汇编、执行一段汇编语言程序,把单片机片内的 30H~7FH 单元清零。 三、实验设备 PC机一台。 四、实验步骤 用连续或者单步的方式运行程序,检查30H-7FH 执行前后的内容变化。五、实验思考 1.如果需把30H-7FH 的内容改为55H,如何修改程序? 2.如何把128B的用户RAM全部清零? 六、程序清单 文件名称:CLEAR.ASM ORG 0000H CLEAR: MOV R0,#30H ;30H 送R0寄存器 MOV R6,#50H ;50H 送R6寄存器(用作计数器) CLR1: MOV A,#00H ;00 送累加器A MOV @R0,A ;00 送到30H-7FH 单元 INC R0 ;R0 加1 DJNZ R6,CLR1 ;不到50H个字节,继续 WAIT: LJMP WAIT END 实验二数据传送 一、实验目的 掌握MCS-51指令系统中的数据传送类指令的应用,通过实验,切实掌握数据传送类指令的各种不同的寻址方式的应用。 二、实验内容 1.编制一段程序,要求程序中包含7中不同寻址方式。 2.编制一段程序,将片内RAM30H~32H中的数据传送到片内RAM38H~3AH中。 3.编制一段程序,将片内RAM30H~32H中的数据传送到片外RAM1000H~1002H 中。 4.编制一段程序,将片内RAM40H~42H中的数据与片外RAM2000H~2002H中的数据互换。 三、实验设备 PC机一台。

微机原理实验指导

微机原理实验一简单I/O口扩展实验 一、实验目的 1. 熟悉74LS273、74LS244的应用接口方法。 2. 掌握用锁存器、三态门扩展简单并行输入输出口的方法。 二、实验内容 用逻辑电平开关作为74LS244(U10)的输入,用发光二极管作为74LS273的输 出,编写程序,使得逻辑电平开关的输入状态从发光二极管上显示出来。 三、实验器材 微机、EL型微机教学实验箱 四、实验原理图 4LS273 4 4LS02 S O S I C S U 1 R K1-K8是开关的输出插孔,L1-L8是发光二极管的输入插孔,SI0-SI7是74LS244 的输入插孔,SO0-SO7是74LS273的输出插孔,CSU10\是74LS244的地址译码输入插孔,CSU8\是74LS273译码输入插孔,以上插孔实验时均需连线,原理图中其它已注的和未标注的引脚均以连好或实验不需要。 74LS244

五、实验步骤 1.连线:将74LS244的输入SI0-SI7分别与逻辑电平开关电路的 K1-K8相连,从I/O地址片选信号 CS0\~CS7\中任选一个与 U10的片选信号相连(例如CS0\)。将74LS273(U8或U9)的输出(CS0\~CS7\)分别与发光二极管电路的 L1~L8相连,从I/O地址片选信号CS0\~CS7\中任选一个与U8或U9的片选信号相连。(如CS1\)2.编辑程序,单步运行,调试程序 3.调试通过后,全速运行,观察实验结果 4.编写实验报告 六、编程提示 逻辑电平开关拨上时为5V,拨下时为0V,发光二极管输入‘1’为亮,‘0’为灭。从U10读入的数据后从输出口输出。 七、程序框图

微机原理及应用实验

实验报告1 实验项目名称:I/O地址译码;简单并行接口同组人: 实验时间:实验室:微机原理实验室K2-407 指导教师:胡蔷 一、实验目的: 掌握I/O地址译码电路的工作原理,简单并行接口的工作原理及使用方法。 二、预备知识: 输入、输出接口的基本概念,接口芯片的(端口)地址分配原则,了解译码器工作原理及相应逻辑表达式,熟悉所用集成电路的引线位置及各引线用途;74LS245、74LS373的特性及作用。 三、实验内容245输入373输出 使用Protues仿真软件制作如下电路图,使用EMU8086编译软件编译源程序,生成可执行文件(nn . exe),在Protues仿真软件中加载程序并运行,分析结果。 编程实现:读8个开关的状态,根据输入信号控制8个发光二极管的亮灭。 图1-1 245输入373输出 四、程序清单

五、实验结果 六、结果分析 七、思考题: 1、如果用74LS373作输入接口,是否可行?说明原因;用74LS245作输出接口,是否可行?说明原因。

实验报告2 实验项目名称:可编程定时器/计数器;可编程并行接口同组人: 实验时间:实验室:微机原理实验室K2-407 指导教师:胡蔷 一、实验目的: 掌握8253的基本工作原理和编程应用方法。掌握8255的工作原理及使用方法。 二、预备知识: 8253的结构、引脚、控制字,工作方式及各种方式的初始化编程及应用。 8255的内部结构、引脚、编程控制字,工作方式0、1、2的区别,各种方式的初始化编程及应用。 三、实验内容: ⑴8253输出方波 利用8253的通道0和通道1,设计产生频率为1Hz的方波。设通道0的输入时钟频率为2MHz,8253的端口地址为40H,42H,44H,46H。通道0的输入时钟周期0.5μs,其最大定时时间为:0.5μs×65536 = 32.768ms,要产生频率为1Hz(周期= 1s)的方波,利用;一个通道无法实现。可用多个通道级连的方法,将通道0的输出OUT0作通道1的输入时钟信号。设通道0工作在方式2(频率发生器),输出脉冲周期= 10 ms,则通道0的计数值为20000(16位二进制)。周期为4 ms的脉冲作通道1的输入时钟,要求输出端OUT1输出方波且周期为1s,则通道1工作在方式3(方波发生器),计数值为100(8位;二进制)。硬件连接如图2-1。

微机原理实验报告

汇编语言程序设计实验 一、实验内容 1.学习并掌握IDE86集成开发环境的使用,包括编辑、编译、链接、 调试与运行等步骤。 2.参考书例4-8,P165 (第3版161页)以单步形式观察程序的 执行过程。 3.修改该程序,求出10个数中的最大值和最小值。以单步形式观 察,如何求出最大值、最小值。 4.求1到100 的累加和,并用十进制形式将结果显示在屏幕上。 要求实现数据显示,并返回DOS状态。 二、实验目的 1.学习并掌握IDE86集成开发环境的使用 2.熟悉汇编语言的基本算法,并实际操作 3.学会利用IDE86进行debug的步骤 三、实验方法 1.求出10个数中的最大值和最小值 (1)设计思路:利用冒泡法,先对数据段的10个数字的前2个比 较,把二者中大的交换放后面。在对第二个和第三个数比较,把 二者中较大的交换放后面,依此类推直到第十个数字。这样第十 位数就是10个数里面最大的。然后选出剩下9个数字里面最大 的,还是从头开始这么做,直到第九个数字。以此类推直到第一 个数字。

(2)流程图 2.求1到100 的累加和,并用十进制形式将结果显示在屏幕上。 要求实现数据显示,并返回DOS状态

(1)设计思路:结果存放在sum里面,加数是i(初始为1),进行 100次循环,sum=sum+I,每次循环对i加1. (2)流程图: 四、 1.求出10个数中的最大值和最小值

DSEG SEGMENT NUM DB -1,-4,0,1,-2,5,-6,10,4,0 ;待比较数字 DSEG ENDS CODE SEGMENT ASSUME DS:DSEG,CS:CODE START:MOV AX,DSEG MOV DS,AX LEA SI,NUM MOV DX,SI MOV CL,9 ;大循环计数寄存器初始化 NEXT1:MOV BL,CL ;大循环开始,小循环计数器初始化MOV SI,DX NEXT2:MOV AL,[SI+1] CMP [SI],AL ;比较 JGGONE ;如果后面大于前面跳到小循环末尾CHANGE:MOV AH,[SI] ;交换 MOV [SI+1],AH MOV [SI],AL JMP GONE GONE:add SI,1 DEC BL JNZ NEXT2

微机原理及接口技术习题解答与实验指导

第一部分学习指导与习题解答 (3) 第1章计算机基础 (3) 1.1 学习指导 (3) 1.2 单项选择题 (3) 1.3 判断题 (6) 1.4填空题 (6) 1.5 简答题 (7) 第2章微处理器 (9) 2.1 学习指导 (9) 2.2单项选择题 (11) 2.3判断题 (15) 2.4填空题 (17) 2.5 简答题 (19) 第3章80x86指令系统 (22) 3.1学习指导 (22) 3.2单项选择题 (23) 3.3 判断题 (29) 3.4 填空题 (30) 3.5 简答题、 (34) 3.6. 分析程序题 (40) 3.7 编程题 (43) 第四章 (45) 4.3 判断题 (52) 4.4 填空题 (54) 4.5 简答题 (64) 4.6 分析程序题 (76) 4.7 编程题 (85) 第5章半导体存储器及其接口技术 (118) 5.1 学习指导 (118) 5.2单项选择题 (118) 5.3判断题 (121) 5.4填空题 (122) 5.5简答题 (123) 5.6应用题 (126) 第6章微型计算机接口技术 (134) 6.1 学习指导 (134) 6.2单项选择题 (135) 6.3判断题 (138) 6.4填空题 (139) 6.4填空题 (141) 6.5简答题 (141) 第7章,简单接口电路设计 (148) 7.1 学习指导 (148) 7.2单项选择题 (149) 7.3判断题 (149) 7.5应用题 (150)

第8章可编程接口技术 (156) 8.1可编程计数器8253/8254 (156) 8.1.1学习指导 (156) 8.1.2单项选择题 (157) 8.1.3判断题 (159) 8.1.4填空题 (159) 8. 1 . 5 简答题 (160) 8.1.6 应用题 (160) 8.2 并行通信接口8255A (163) 8.2.1 学习指导 (163) 8.2.2 单选题 (163) 8.2.3 判断题 (164) 8.2.4 填空题 (165) 8.2.5应用题 (165) 8.3串行通信接口8250/8251 (170) 8.3.2 单项选择题 (172) 8.3.3判断题 (172) 8.4可编程中断控制器8259A (178) 8.4.1 学习指导 (178) 8.4.2单选题 (178) 8.4.3 判断题 (180) 8.4.4 填空题 (181) 8.4.5 简答题 (182) 8.4.6 应用题 (184) 第9章自检试卷 (187) 9.1 自检试题一 (187) 自检试题二 (192)

微机原理及应用实验报告81487

实 验 报 告 课 程 名 称 实 验 名 称 实 验 日 期 学 生 专 业 学 生 学 号 学 生 姓 名 教 师 姓 名 成 绩 南京理工大学机械工程学院 微机原理及应用 实验1 DEBUG 操作实验 实验2 汇编程序设计实验 实验3 8253定时/计数器实验 实验4 8255 并行接口实验 年 月 日 至 年 月 日

实验一DEBUG命令及其操作 一、实验目的 1.熟练掌握debug的常用命令,学会用debug来调试程序。 2.深入了解数据在存储器中的存取方法及堆栈中数据的压入与弹出。 3.掌握各种寻址方法以及简单指令的执行过程。 二、实验要求 1.实验前要作好充分准备,包括汇编程序清单、调试步骤、调试方法以及对程序结果的分析等。 2.本实验要求在PC机上进行。 3.本实验只要求在DEBUG调试状态下进行,包括汇编程序,调试程序,执行程序。三、实验内容 ●实验内容1:学习用DEBUG调试工具进行源程序的输入、汇编、调试和执行。 实验报告要求: 1.写出运行结果; 2.小结debug常用命令及使用体会 答:1.原文已给出(略) 2.a 汇编 d显示内存单元内容 e修改单元内存内容 g执行命令 t单步(或多步)调试 n指定文件路径文件名(含扩展名) u反汇编 r查看寄存器值及修改 l加载程序 w写盘命令 体会:提升学习热情和动手能力有助于理解代码执行过程 ●实验内容2 设AX=3000H,BX=5000H,请编一程序段将AX的内容和BX的内容进行交换。请用堆栈作为两寄存器交换内容的中间存储单元,用DEBUG调试程序进行汇编与调试。 实验报告要求: 1.写出完成上述功能的程序段; 2.单步执行,并记录寄存器AX, BX及堆栈指针SP的值 答: A100 Mov ax,3000 ;ax:3000 bx:0000 sp:ffee Mov bx,5000 ;ax:3000 bx:5000 sp:ffee Push ax ;ax:3000 bx:5000 sp:ffec

微机原理实验报告

西安交通大学实验报告 课程_微机与接口技术第页共页 系别__生物医学工程_________实验日期:年月日 专业班级_____组别_____交报告日期:年月日 姓名__ 学号__报告退发 ( 订正、重做 ) 同组人_教师审批签字 实验一汇编语言程序设计 一、实验目的 1、掌握Lab6000p实验教学系统基本操作; 2、掌握8088/8086汇编语言的基本语法结构; 3、熟悉8088/8086汇编语言程序设计基本方法 二、实验设备 装有emu8086软件的PC机 三、实验内容 1、有一个10字节的数组,其值分别是80H,03H,5AH,FFH,97H,64H,BBH,7FH,0FH,D8H。编程并显示结果: 如果数组是无符号数,求出最大值,并显示; 如果数组是有符号数,求出最大值,并显示。 2、将二进制数500H转换成二-十进制(BCD)码,并显示“500H的BCD是:” 3、将二-十进制码(BCD)7693转换成ASCII码,并显示“BCD码7693的ASCII是:” 4、两个长度均为100的内存块,先将内存块1全部写上88H,再将内存块1的内容移至内存块2。在移动的过程中,显示移动次数1,2 ,3…0AH…64H(16进制-ASCII码并显示子

程序) 5、键盘输入一个小写字母(a~z),转换成大写字母 显示:请输入一个小写字母(a~z): 转换后的大写字母是: 6、实现4字节无符号数加法程序,并显示结果,如99223344H + 99223344H = xxxxxxxxH 四、实验代码及结果 1.1、实验代码: DATA SEGMENT SZ DB 80H,03H,5AH,0FFH,97H,64H,0BBH,7FH,0FH,0D8H;存进数组 SHOW DB 'THE MAX IS: ','$' DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA ;把数据的基地址赋给DS MOV DS,AX MOV DX,OFFSET SHOW ;调用DOS显示字符串 MOV AH,09H INT 21H MOV SI ,OFFSET SZ ;数组的偏移地址赋给SI MOV CX,10 ;存进数组的长度给CX MOV DH,80H ;将数组的第一个数写进DH NEXT: MOV BL,[SI] ;将数组的第一个数写进BL CMP DH,BL ;比较DH和BL中数的到校 JAE NEXT1 ;如果DH中的数大于BL中,将跳转到NEXT1 MOV DH,BL ;如果DH中的数小于BL中,将BL中的数赋给DH NEXT1: INC SI ;偏移地址加1 LOOP NEXT;循环,CX自减一直到0,DH中存数组的最大值 ;接下来的程序是将将最大值DH在屏幕上显示输出 MOV BX,02H NEXT2: MOV CL,4 ROL DH,CL ;将DH循环右移四位

微机原理实验指导

实验一 MASM For Windows 的使用及顺序程序设计 一、实验目的 1、熟悉在PC机上建立、汇编、连接、调试和运行8086汇编语言程序的过程。 2、熟悉masm for windows调试环境及DEBUG常用命令的使用 二、实验内容 1.DEBUG常用命令(U、R、D、E、F、T、G、Q)的操作使用 2.编程实现两个16位无符号数的加、减、乘、除运算。 有两个两字节无符号数分别放在存储单元A、B起始的缓冲器中,求其和,结果放在A起始的缓冲区并在屏幕上显示。相加若有进位不存入存储单元。 三、实验设备 PC机一台、masm for windows 汇编语言集成环境 四、实验准备 1) 分析题目,将程序中的原始数据和最终结果的存取方法确定好。 2) 画出流程图。 3) 写出源程序。 4) 对程序中的结果进行分析,并准备好上机调试与用汇编程序及汇编调试的过程。 五、实验步骤 1) 输入源程序。 2) 汇编、连接程序,生成 .EXE文件,执行文件,检查结果。 六、学生实验报告的要求 1) 列出源程序,说明程序的基本结构,包括程序中各部分的功能。 2) 说明程序中各部分所用的算法。

3) 说明主要符号和所用到寄存器的功能。 4) 上机调试过程中遇到的问题是如何解决的。 5) 对调试源程序的结果进行分析。 4) 说明标志位CF、SF和OF的意义。 DEBUG的常用命令 1、R 显示或修改寄存器的内容命令格式:-R 2、 D 显示存储单元的内容命令格式:-D[地址1, 地址2] 3、E修改存储单元的内容 命令格式:-E[地址1, 地址2] 4、U反汇编 命令格式:-U[地址1, 地址2] 5、T单步执行 命令格式:-T 6、G连续执行 命令格式:-G[=起始地址, 结束地址] A小汇编 命令格式:-A 7、Q退出DEBUG,返回DOS 实验一源程序 EXAM1-2 .ASM DATA SEGMENT A D B 34H,18H,2 DUP(0),’$’ B DB 56H,83H DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV AL,A MOV BL,B ADD AL,BL

微机原理与单片机实验报告

北京联合大学信息学院实验报告 课程名称:微型计算机原理学号: 姓名: 2012 年 6 月 9 日

目录 实验1 EMU8086模拟器的使用 (3) 实验2 数据传送指令的使用 (5) 实验3 多位十六进制加法运算实验 (9) 实验5 循环程序实验 (11) 实验6 由1 到100 求和实验 (13) 实验7 求表中正数_负数_0 的个数实验 (14) 实验8 数据排列实验(冒泡排序) (16) 实验9 系统功能调用(大小写转换) (18) 实验10 阶乘(递归运算) (20) 实验11 ProteusIO工程文件的建立 (21) 实验12 IO口读写实验(245、373) (22) 实验13 8255 接口实验 (24) 实验14 声光报警 (25) 实验总结 (28)

实验1 EMU8086模拟器的使用 一实验要求 利用EMU8086模拟器环境,完成创建源程序文件,运行调试,实验结果的查看二实验目的: 熟悉EMU8086实验环境 三EMU8086环境: 1 模拟器编辑窗口 2 模拟器调试窗口

四实验内容 实验内容1:新建文件。 运行emu8086 1. 新建文件:单击“新建”按钮,选择COM模板,在模拟器编辑窗口中输入如下程序代码: MOV AX, 1020H MOV BX, 2030H MOV AX, BX ADD AX, BX MOV [BX], AX MOV [2032H], AX HLT 2. 编译:单击“编译”按钮,对程序段进行编译; 3. 保存:编译通过,单击“完成”按钮,将其以文件名“EXP1”保存在本地磁盘上。 4. 仿真:单击“仿真”按钮,打开模拟器调试窗口和源文件窗口。 5.在模拟器调试窗口中的寄存器组区,查看数据寄存器AX,BX,CX,DX;段寄存器CS,ES,SS,DS;指令指针寄存器IP;指针寄存器SP,BP;变址寄存器SI,DI;标志寄存器的值。 6.单击“单步前”按钮,单步执行程序,并观察每次单步执行后,相关寄存器值的变化。 7.单击“重载”按钮,将程序重载,并调整指令运行步进时延为400毫秒,单击“全速”按钮,运行程序, 8.程序运行之后,在程序调试窗口中,选择[view]/[memory],查看模拟器环境中,内存单元0700:0100开始的连续10个单元的内容 9.将“存储器”中的地址改为0700:2030,查看开始的四个字节的内容,并思考其内容与程序

微机原理及应用实验指导书

信号线 寄存器 编址 IOY7 A 口 0e0H B 口 0e1H C 口 0e2H 控制寄存器 0e3H 3.接口实验单元中的开关和发光二极管电路 图1-4 图1-5 实验线路图 四、实验步骤: 1.8255接口应用实验(1) (1) 按图1-5所示实验线路接线并编写程序, 4 5 6 A B C D 6 5 4 Title Number Revision Size B Date: 15-Oct-2002Sheet of File: E:\给我\微机原理说明书.ddb Drawn By : 100 100 3 2 A 4049/4 3 2 A 4049/4 D0 D7 1k X8 LEDX8 +5 K7 K0R?1K R?1K +5

编程要求:使8255端口A工作在方式0并作为输出口,端口B工作在方式0并作为输入口。用1组开关信号接入端口B,端口A输出线接至一组发光二极管上,然后通过对8255芯片编程来实现输入/出功能。 (2)输入程序并检查无误,经汇编、链接后装入系统。 (3)运行程序,拨动开关组,观察发光二极管应一一对应。 五、分析整理实验数据,写出实验程序 实验二交通灯控制实验 一、实验目的: 通过并行接口8255实现十字路口交通灯的模拟控制,进一步掌握对并行口的使用。二、实验设备: XFJW-1型教学实验系统。 三、实验内容: 如图2-1,L15、L14、L13作为南北路口的交通灯与PC5、PC6、PC7相连,L12、L11、L10作为东西路口的交通灯与PC0、PC1、PC2相连,编程使六个灯按交通灯变化规律燃灭。发光二极管“0”为亮,“1”为灭。 图2-1实验接线图 十字路口交通灯的变化规律要求: (1)南北路口的绿灯、东西路口的红灯同时亮30秒左右。 (2)南北路口的黄灯闪烁若干次,同时东西路口红灯继续亮。 (3)南北路口的红灯、东西路口的绿灯同时亮30秒左右。 (4)南北路口的红灯继续亮,同时东西路口的黄灯亮闪烁若干次。 (5)转(1)重复。

微机原理及应用 上机实验报告2 数据传送

课程名称:_________微机原理及应用___________指导老师:_____钟崴_______成绩:__________________ 实验名称:_________数据传送___________实验类型:________________同组学生姓名:__________ 一、实验目的和要求(必填)二、实验内容和原理(必填) 三、主要仪器设备(必填)四、操作方法和实验步骤 五、实验数据记录和处理六、实验结果与分析(必填) 七、讨论、心得 一、实验目的和要求(必填) 掌握MCS-51指令系统中的数据传送类指令的应用,通过实验,切实掌握数据传送类指令的各种不同的寻址方式的应用。 二、实验内容和原理(必填) 1.编制一段程序,要求程序中包含7中不同寻址方式。 2.编制一段程序,将片内RAM30H~32H中的数据传送到片内RAM38H~3AH中。 3.编制一段程序,将片内RAM30H~32H中的数据传送到片外RAM1000H~1002H中。 4.编制一段程序,将片内RAM40H~42H中的数据与片外RAM2000H~2002H中的数据互换。 三、主要仪器设备(必填) PC机一台。 四、操作方法和实验步骤 逐段编制程序,汇编无误后,用连续或者单步的方式运行程序,检查程序的运行结果,看是否达到预期的效果。 五、程序清单 1. ORG 0000H CLEAR MOV R0,#30H ;间接寻址 MOV A,#40H ;立即寻址 MOV @R0,A ;间接寻址 MOV A,30H ;直接寻址 MOV DPTR,#0100H ;间接寻址 MOV A,#36H MOVX @DPTR,A MOV R0,#50H ;立即寻址 MOV A,#10 MOVC A,@A+DPTR ;变址寻址 END

微机原理实验报告软件实验1-4

微机原理实验报告 学院:算机科学与软件教育学院 1. 掌握存储器读写方法 2. 了解存储器的块操作方法 二、实验原理 存储器读写和块操作 三、实验设备仪器及材料 计算机,WA VE 6000软件 四、实验过程 S1.asm 代码流程图 data segment Block db 256 dup(55h) data ends code segment assume cs:code, ds:data start proc near mov ax, data mov ds, ax mov bx, offset Block ; 起始地址 mov cx, 256 ; 清256 字节Again: mov [bx], byte ptr 0 inc bx ; 地址+1 Loop Again ; 记数减一jmp $ ;死循环code ends end start

五、实验步骤 (1) 进入Wave6000,输入程序并检查,保存程序。 (2) “编译”程序。 (3) “全速执行”程序。 (4) “暂停”程序运行,在“数据窗口(MEMOREY)”查看0400H起始的单元内容,并记录。 (5) 在指令“jmp $”处设断点。“全速执行”程序。 (6) 在“数据窗口(MEMOREY)”查看0400H起始的单元内容,记录并分析实验结果。 六、实验结果及总结 运行前:运行后: 2、调试:如何将存储器块的内容置成某固定值(例全填充为0FFH)? 总结:通过本实验,我了解到单片机读写存储器的读写方法,同时也了解到单片机编程,调试方法。学会内存的移动方法,也加深对存储器读写的认识。

微机原理实验报告 学院:算机科学与软件教育学院 实验 课程 名 微机原理实验成绩实验 项目名称实验二、二进制到BCD码转换 指导老 师 1. 了解BCD值和ASCII值的区别。 2. 了解如何将BCD值转换成ASCII值。 3. 了解如何查表进行数值转换及快速计算。 二、实验原理 ASCII码表 三、实验设备仪器及材料 计算机,WA VE 6000软件 data segment Result db 3 dup(?) data ends code segment assume cs:code, ds:data start proc near mov ax, data mov ds, ax mov ax, 123 mov cl, 100 div cl mov Result, al ; 除以 100, 得百位数 mov al, ah mov ah, 0 mov cl, 10 div cl mov Result+1, al ; 余数除以 10, 得十位数 mov Result+2, ah ; 余数为个位 数 jmp $ code ends end start 代码流程图

微机原理与应用实验报告

微机原理及应用实验报告 班级:机械1301班 :黄佳清 学号:0801130117 座位号: 中南大学机电工程学院

实验一单片机仿真开发机操作和MCS-51指令系统应用 一.实验目的 1、熟悉MCS-51单片机仿真开发机和开发调试软件的操作使用和调整; 2、学会编写和输入汇编语言源程序、对输入的源程序进行汇编; 3、掌握程序的调试和运行的各种方法。 三.实验容及步骤(完成分值:60分) 本实验秩序运行Keil uVersion2程序,设置为keil为纯软件仿真 1.新建工程项目 2.设置工程文件参数 3.编写新程序事例 4.调试程序直至能够运行出结果。 四.实验程序 AJMP MAIN ORG 0030H MAIN: MOV R0,#20H MOV R2,#0FH MOV A,#00H A1: MOV R0,A INC R0 INC A DJNZ R2,A1 MOV R0,#20H ;暂停,观察并记录! MOV DPTR,#7000H MOV R2,#0FH A2: MOV A,R0 MOVX DPTR,A INC R0 INC DPTR DJNZ R2,A2 MOV R0,#030H ;断点,观察并记录! MOV DPTR,#7000H MOV R2,#0FH A3: MOVX A,DPTR MOVX R0,A INC R0 INC DPTR DJNZ R2,A3 DO: LJMP DO END ;部存储器数据块赋值,搬运数据块到外部存储器,再搬运回部数据存储器。 五、附加题 1.将光标移到想要暂停的地方,MOV R0,#20H所在行,选择“执行到光

2.在MOV R0,#0A0H行设置断点,全速执行,暂停后观察并记录以下单元容 3.

微机原理实验四实验报告

实验报告

实验四 8251可编程串行口与PC机通信实验一、实验要求 利用实验箱内的8251A芯片,实现与PC机的通信。 二、实验目的 1.掌握8251A芯片结构和编程方法; 2.了解实现串行通信的硬件环境,数据格式和数据交换协议; 3.了解PC机通信的基本要求。 三、实验原理 (一)8251A芯片工作方式配置: 1. 8个数据位; 2.无奇偶校验位; 3.1个停止位; 4.波特率因子设为16; 5. 波特率设为9600。 (二)8251A主要寄存器说明 图4-1 模式字 图4-2 命令字

CO MMAN D I NSTR UCT ION FO RMA T 图4-3 状态字 (三)8251编程 对8251 的编程就是对8251 的寄存器的操作,下面分别给出8251 的几个寄存器的格式。(1)方式控制字 方式控制字用来指定通信方式及其方式下的数据格式,具体各位的定义如图4-4所示。 图4-4 方式控制字说明 (2)命令控制字 命令控制字用于指定8251 进行某种操作(如发送、接收、内部复位和检测同步字符等)或处于某种工作状态,以便接收或发送数据。图4-5 所示的是8251 命令控制字各位的定义。 图4-5命令控制字说明 (3)状态字 CPU 通过状态字来了解8251 当前的工作状态,以决定下一步的操作,8251 的状态字如 图4-6所示。 图4-6 状态字说明 四、实验电路连接: 1.CS8251接228H,CS8279已固定接至238H; 2.扩展通信口18中的232RXD连8251RXD ,232TXD连8251TXD;

3.计算机的两个RS232通信口,一个连至仿真机通信口,一个连至扩展通信口18(所有通信口均为DB9)。注意:RS232通信口必须在设备断电状态下插拔! 图4-7 连线图 五、实验内容及要求 1. 将例程从PDF文档中导入到WMD86软件编辑环境中,调试通过。使用软件自带的示波器,观察Txd管脚的输出,验证结果的正确性。将结果截图保存,贴入实验报告。 2.剔除例程中冗余部分,实现对例程的精简和优化。将精简内容与相应理由写入实验报告。 3.将自己学号的后三位数字通过RS232端口的Txd管脚输出。使用软件自带的示波器,观察Txd管脚的输出,验证结果的正确性。将结果截图保存,贴入实验报告。 4.通过读状态寄存器的方法,获得发送移位寄存器是否为空的信息,实现学号后三位数字的循环发送。将结果截图保存,贴入实验报告。 5.给每帧数据间添加固定的时间间隔,时间间隔为10000个指令周期。将结果截图保存,

微机原理实验指导书(2008-11-11)

《微机原理及应用》实验指导书 张群英编写 桂林工学院电子与计算机系 2008-11-11

目录 汇编语言程序设计的实验环境及上机步骤 (3) 实验一汇编语言程序上机过程与调试 (17) 实验二顺序程序设计 (21) 实验三分支程序设计 (22) 实验四循环程序设计 (24) 实验五子程序设计 (25) 实验六显示程序设计 (26) 实验七系统认识实验 (29) 实验九中断特性及8259应用编程实验 (33) 实验十8255并行接口应用实验 (45) 实验十一8253定时/计数器应用实验 (50)

第一部分:汇编语言程序设计的实验环境及上机步骤 1.1汇编语言程序设计的实验环境 汇编语言程序设计的实验环境为:80x86系列微型计算机一台机进行汇编语言程序设计所必需的编程工具一套。目前被广泛使用的编程工具分别来自Microsoft和Borland两家公司。 1.1.1 Microsoft公司的汇编语言程序设计工具 ◆任意一种文本编辑器——用于编辑生成汇编语言源程序(*.ASM) ◆小汇编程序ASM.EXE或宏汇编程序MASM.ESE——用于将汇编语言源程序(*.ASM)翻译成机器语言文件,即目标文件(*.OBJ) ◆连接程序LINK.EXE——用于将目标文件连接生成可执行文件(*.EXE) ◆调试程序DEBUG.EXE——用于对生成的可执行文件(*.EXE)进行逻辑错误检查。 1.1.2 Borland公司的Turbo系列汇编语言程序设计工具 ◆任意一种文本编辑器——用于编辑生成汇编语言源程序(*.ASM) ◆汇编程序TASM.EXE——用于将汇编语言源程序(*.ASM)翻译成机器语言文件(*.OBJ) ◆连接程序TLINK.EXE——用于将目标文件连接生成可执行文件(*.EXE) ◆调试程序TD.EXE (Turbo Debugger) ——用于对生成的可执行文件(*.EXE)进行逻辑错误检查。 可以看出,进行汇编语言程序设计时需要的编程工具有:文本编辑器、汇编程序、连接程序以及调试程序,下面分别对它们进行简要介绍。 1.文本编辑器(Text Editor) 在文本编辑器中,用户可以通过键盘输入汇编语言源程序,并可以对源程序进行编辑、修改以及存盘等操作。不论使用哪一种文本编辑器,都应该把汇编语言源程序保存为*.ASM文件,即源程序的扩展名必须为“ASM”,否则,汇编程序将无法对其进行汇编。 2.汇编程序(Assembler) 汇编程序用于将用户编写的汇编语言源程序(*.ASM)翻译成机器语言文件(*.OBJ),其主要功能可以概括为以下三点: (1)检查源程序中的语法错误,并给出错误信息。 (2)产生目标文件(*.OBJ) (3)展开宏指令(Microsoft公司的小汇编程序ASM.EXE无此功能)

微机原理及应用实验报告

微机原理及应用实验报告标准化文件发布号:(9312-EUATWW-MWUB-WUNN-INNUL-DQQTY-

微机原理及应用实验报告 班级: 姓名: 学号: 中南大学 机电工程学院精密测控实验室

实验二软件程序设计 1.实验目的: 1、掌握MCS-51单片机指令系统及用汇编语言编程技巧; 2、了解和熟悉用MCS-51单片机仿真开发机调试程序的方法。 2.实验内容: 1、编写排序程序并上机调试通过。 已知8031内部RAM60H~69H单元中,依次存放了 FFH,99H,77H,CCH,33H,DDH,88H,BBH,44H,EEH,它们均为无符号数,编程 将它们按递减次序排序,即最大数放在60H中,最小数放在69H中。 2.、编写多字节加法程序并上机调试通过。 8031内部RAM20H~22H单元中,存放了3字节被加数(低字节在前),在2AH~2CH单元中存放3字节加数(低字节在前),求两数之和,并将结 果存入以20H为起始地址的区域中(低字节在前)。 3.实验设备名称、型号: 4.画出软件程序流程图,写出上机调试通过的汇编语言程序清单: 程序1、编写排序程序并上机调试通过。 已知8031内部RAM60H~69H单元中,依次存放了 FFH,99H,77H,CCH,33H,DDH,88H,BBH,44H,EEH,它们均为无符号数,编程 将它们按递减次序排序,即最大数放在60H中,最小数放在69H中。

解:本设计采用冒泡排序法,使用双重循环,并在内循环中进行比较如果合乎从大到小的顺序则不动,否则两两交换,这样比较下去,比较9次 后,最小的那个数就会沉底,在下一次比较时将减少一次比较次数。如 果一次比较完毕,没有发生交换,说明已经按照从大到小的顺序排列 了。则可以退出循环,结束程序。 程序结构框图和程序代码如下:

微机原理实验报告

大学 科技学院 实 验 报 告 课程名称:微机原理实验

实验一数据转换实验 一、实验目的 (1)初步掌握在PC机上建立、汇编、链接和运行8086/88汇编语言程序的过程。 (2)通过对两个验证性试验的阅读、调试、掌握不同进制数及编码相互转换的程序设计方法。 (3)完成程序设计题,加深对数码转换的理解,了解简单程序设计方法。 二、实验内容 1.十六进制数转换为ASCII码 设二字节十六进制数存放于其实地址为3500H的内存单元中,把他们转换成ASCII码后,再分别存入起始地址为350A的四个内存单元中。从书上ASCII码表中可知十六进制数加30H即可得到0H~9H的ASCII码,而要得到AH~FH 的ASCII码,则需再加7H。 请根据所给流程图理清思路,总结出对应的若干要点。将流程图与参考程序相互。根据分析的结果将运行时内存的变化列写出来。 学习并使用MASM或WAVE仿真软件分析程序运行过程中相关寄存器及相应内存的变化情况来验证自己的猜想,以巩固命令的学习,提高编程能力。

图1-1-1

DATAS SEGMENT ;此处输入数据段代码 DATAS ENDS STACKS SEGMENT ;此处输入堆栈段代码 STACKS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKS START: MOV AX,DATAS MOV DS,AX ;此处输入代码段代码 MOV CX,0004H;根据转换个数设定循环次数 ;(两字节十六进制数如6B2C对应有四个用十六进制表示的ASCII码表示,即四个字节) MOV DI,3500H;指向该两字节十六进制数起始地址,此时在调试窗口修改内存字节 MOV DX,[DI];将地址3500H中的内容(6B2C)给DX A1: MOV AX,DX;第一次时DX=6B2C, ;因为想顺序取C、2、6、B,所以需要一个中间变量AND AX,000FH;取低四位,第一次取到C, CMP AL,0AH;判断AL属于0~9,还是A~F JB A2;如果是0~9,则跳转到A2 ADD AL,07H;若属于A~F,再加上07H后也是再加上30H即得到转换。 A2: ADD AL,30H;0~9的ASCII码对应的十六进制比其 ;本身(注意:亦是十六进制)大30H MOV [DI+0AH],AL;将转码后的C,即43H给350A INC DI;将DI指向下一字节,用于存储转码后的值,第一次自增后要存‘2’ PUSH CX;功能是接下来要用到CX作为一个中间变量, ;而刚才已经使用并且接下来还会用到CX的值, ;也可以不用CX,用其他不用的寄存器或者直接立即数形式的。 MOV CL,04H;若直接用立即数,可能不稳定,(原因不详)用一个中间变量。

微机原理实验报告冒泡排序

一、实验目的 (1)学习汇编语言循环结构语句的特点,重点掌握冒泡排序的方法。 (2)理解并掌握各种指令的功能,编写完整的汇编源程序。 (3)进一步熟悉DEBUG的调试命令,运用DEBUG进行调试汇编语言程序。 二、实验内容及要求 (1)实验内容:从键盘输入五个有符号数,用冒泡排序法将其按从小到大的顺序排序。 (2)实验要求: ①编制程序,对这组数进行排序并输出原数据及排序后的数据; ②利用DEBUG调试工具,用D0命令,查瞧排序前后内存数据的变化; ③去掉最大值与最小值,求出其余值的平均值,输出最大值、最小值与平均值; ④用压栈PUSH与出栈POP指令,将平均值按位逐个输出; ⑤将平均值转化为二进制串,并将这组二进制串输出; ⑥所有数据输出前要用字符串的输出指令进行输出提示,所有数据结果能清晰显示。 三、程序流程图Array (1)主程序:MAIN

(2)

就是 NAME BUBBLE_SORT DATA SEGMENT ARRAY DW 5 DUP(?) ;输入数据的存储单元 COUNT DW 5 TWO DW 2 FLAG1 DW 0 ;判断符号标志 FLAG2 DB 0 ;判断首位就是否为零的标志FAULT DW -1 ;判断出错标志 CR DB 0DH,0AH,'$' STR1 DB 'Please input five numbers seperated with space and finished with Enter:','$' STR2 DB 'The original numbers:','$' STR3 DB 'The sorted numbers:','$' STR4 DB 'The Min:','$' STR5 DB 'The Max:','$' STR6 DB 'The Average:','$' STR7 DB 'The binary system of the average :','$' STR8 DB 'Input error!Please input again!''$' DATA ENDS CODE SEGMENT MAIN PROC FAR ASSUME CS:CODE,DS:DATA,ES:DATA START: PUSH DS AND AX,0 PUSH AX MOV AX,DATA MOV DS,AX LEA DX,STR1 MOV AH,09H ;9号DOS功能调用,提示输入数据 INT 21H CALL CRLF ;回车换行 REIN: CALL INPUT ;调用INPUT子程序,输入原始数据CMP AX,FAULT ;判断就是否出错, JE REIN ;出错则重新输入

相关主题
文本预览
相关文档 最新文档