最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

微机原理与接口技术实验指导

来源:动视网 责编:小OO 时间:2025-10-03 09:57:22
文档

微机原理与接口技术实验指导

目录实验一Emu8086软件使用与指令练习(2)实验二伪指令的应用(6)实验三DOS功能调用(8)实验四循环程序设计(10)实验五子程序设计(12)实验六74LS273输出控制LED(14)实验七8253计数器/定时器实验(20)实验八8255并行通信(25)实验一Emu8086软件使用与指令练习一、实验目的1、熟悉汇编语言开发环境。2、掌握Emu8086软件使用方法。3、理解寻址方式的意义。4、掌握8086常用指令的功能。二、实验内容1、Emu8086的使用(1)下载Emu8086软件,并安
推荐度:
导读目录实验一Emu8086软件使用与指令练习(2)实验二伪指令的应用(6)实验三DOS功能调用(8)实验四循环程序设计(10)实验五子程序设计(12)实验六74LS273输出控制LED(14)实验七8253计数器/定时器实验(20)实验八8255并行通信(25)实验一Emu8086软件使用与指令练习一、实验目的1、熟悉汇编语言开发环境。2、掌握Emu8086软件使用方法。3、理解寻址方式的意义。4、掌握8086常用指令的功能。二、实验内容1、Emu8086的使用(1)下载Emu8086软件,并安
目录

实验一Emu8086软件使用与指令练习 (2)

实验二伪指令的应用 (6)

实验三DOS功能调用 (8)

实验四循环程序设计 (10)

实验五子程序设计 (12)

实验六74LS273输出控制LED (14)

实验七8253计数器/定时器实验 (20)

实验八8255并行通信 (25)实验一 Emu8086软件使用与指令练习

一、实验目的

1、熟悉汇编语言开发环境。

2、掌握Emu8086软件使用方法。

3、理解寻址方式的意义。

4、掌握8086常用指令的功能。

二、实验内容

1、Emu8086的使用

(1)下载Emu8086软件,并安装。(步骤略)

(2)打开Emu8086软件,出现如下图所示对话框。

(3)选择“new”按钮,打开代码模板选择对话框。

COM模板用来创建最古老的一种可执行文件格式。采用此格式,源代码从100H后加载(源代码之前有ORG 100H)。从文件的第一个字节开始执行。支持DOS和Windows命令提示符。

EXE模板可创建一种更先进的可执行文件格式。源程序代码的规模不限,源代码的分段也不限,但程序必须包含堆栈段的定义,若选择用EXE模板创建一个简单的EXE程序,程序中则有明确的数据段,堆栈段和代码段的定义。

这两种模板是最常用的模板,当然,也可以选择空的工作空间(empty workspace),可随意输入若干条指令或程序。

(4)选择COM模板,在代码编辑器的代码输入区域,编写如下指令:

MOV AX,5MOV BX,10

ADD AX,BX

SUB AX,1

HLT

(5)保存文件为001.asm,再点击工具栏中的“emulate”按钮。如果编译通过,会另外弹出如下图所示的“emulator”调试运行窗口和“original source code”源代码窗口,如果程序有错误不能编译,会出现错误提示信息,点击错误提示,即可选择源代码中相应的错误的行,可在此处更改源代码。

(6)观察调试运行窗口各寄存器的初始值、每条指令对应的机器码、指令长度及所在内存物理地址和逻辑地址分别是多少。

(7)单步运行程序,观察并记录各指令运行结果及IP的变化。

(8)复制第(4)步中所输入的程序代码,新建一“empty workspace”文档,在代码编辑区粘贴代码,然后点击【emulate】按钮,在弹出的调试运行窗口中观察程序起始地址。

2、新建一空白文档,将以下列出的各条指令逐一输入到代码编辑窗口,然后点击【emulate】按钮,根据错误提示按原意修改指令,直到各指令通过编译为止。

(1)MOV DL,AX (2)MOV 8650H,AX

(3)MOV DS,0200H (4)MOV [BX],[1200H]

(5)MOV IP,0FFH (6)MOV [BX+SI+3],IP(7)MOV AX,[BX+BP] (8)MOV AL,ES:[BP]

(9)MOV DL,[SI+DI] (10)MOV AX,OFFSET 0A20H

(11)MOV AL,OFFSET TABLE (12)XCHG AL,50H

(13)IN BL,05H (14)OUT AL,0FFEH

3、单步执行以下程序段,观察并记录执行每条指令后,AX、CF、SF、ZF的值各是多少?

MOV AX,1234H

MOV CL,4

ROL AX,CL

DEC AX

MOV CX,4

MUL CX

4、新建COM模板文件,在编辑窗口输入如下代码序列,试分析各指令执行结果。

org 100h ;[0100H]——[0113H]:

MOV AX,[010EH] ;AX=

MOV BX ,[0110H] ;BX=

ADD AX,BX ;AX=

MOV [0112H],AX ;[0112H]=

INT 20H

DW 2222H

DW 8888H

DW 0

5、在下面程序的括号中分别填入如下指令:

①LOOP XH ②LOOPE XH ③LOOPNE XH

问在这三种情况下,当程序执行完后,AX、BX、CX、DX四个寄存器中的内容分别是什么?START:MOV AX,01H

MOV BX,02H

MOV CX,04H

MOV DX,03H

XH:INC AX

ADD BX,AX

SHR DX,1

()

HLT

(选做)6、新建一文档,在代码编辑窗口中输入以下代码后,点击【emulate】按钮,打开内存显示窗口(打开方法:点击【aux】中的弹出菜单【memory】),并将0050H和0060H 开始的单元内容改成如图所示。

MOV SI,0050H

MOV DI,0060H

MOV CX,16

REPT0: MOV AL,[SI]MOV BL,[DI]

MOV [DI],AL

MOV [SI],BL

INC SI

INC DI

LOOP REPT0

单步运行程序,观察寄存器和内存单元变化情况,记录分析,并说明程序段的功能。

三、实验要求

1、按实验内容逐一、完成实验任务,并能分析实验结果。

2、及时做好实验记录,尽量在课内完成实验报告主要内容。

3、实验报告书写要规范,需要记录的实验结果要写在实验报告上。

实验二伪指令的应用

一、实验目的

1、掌握常用伪指令的定义与使用方法。

2、熟悉数据定义伪指令的内含及其作用。

二、实验内容

1、在Emu8086中定义如下数据段,汇编后,写出偏移地址从100H到110H的各存储单元的内容。

DATA SEGMENT

ORG 100H

V1 DB 5AH

V2 DW 1122H

V3 DD 2A004455H

V4 DB 3 DUP(10H)

V5 DB ‘1234’

V6 DW ‘12’,‘34’

DATA ENDS

2、在Emu8086中定义如下数据段,写出其后的各条指令执行后的结果。

DATA SEGMENT

ORG 100H

AA DW 0A24H

BB DB 33H,66H,92H,29H

CC EQU WORD PTR BB

DD DB ‘ABCD’

EE EQU $ - DD

DATA SEGMENT

(1)MOV AX,AA AL=()

(2)MOV BX,CC BH=()

(3)MOV DX,OFFSET DD DL=()

(4)MOV CL,EE CL=()

3、在Emu8086中定义如下数据段:

DATA SEGMENT

A D

B ‘$’,10H

B DB ‘COMPUTER’

C DW 1234H,0FFH

D DB 5 DUP(?)

E DD 1200459AH

DATA ENDS

汇编后,观察数据段内存存放情况,并画出内存结构示意图。单步执行以下指令后,运行结果分别是什么?MOV AL,A

MOV DX,C

MOV DL,OFFSET B

MOV CX,3[BX]

LEA BX,D

LDS SI,E

LES DI,E

4、在Emu8086中定义如下数据段:

DATA SEGMENT

A1 DW 23H, 5678H

A2 DB 3 DUP (?),0AH,0DH,’$’

A3 DB 3 DUP(1,2,’ABC’)

L EQU $ – A3

DATA ENDS

汇编后,试并回答问题:

(1)用Emu8086变量显示窗口观察变量A1、A2、A3的值分别是多少?试用MOV数据传送指令验证这三个变量的值。

(2)变量A1、A2、A3的段基址和偏移地址分别是多少?用相关指令验证结果。

(3)L的值为多少?表示什么意义?$的含义是什么?

(4)指令MOV AX, DATA中的源操作数是多少?意义是什么?

(5)指令MOV DS, DATA有无错误,若有,错误原因是什么,如何更正?

(6)在Emu8086软件中观察数据段所在内存区,画出数据段内存分配图。

(7)若在变量定义前加上ORG 100H伪指令,变量A1、A2、A3的段基址和偏移地址分别是多少?

5、理解下列指令中源操作数中表达式的含义,执行下列指令后目的操作数分别是多少?

MOV AX, 00FFH AND 1122H + 3344H

MOV AL, 15 GE 1111B

AND AL, 50 MOD 4

OR AX, 0F00FH AND 1234H OR 00FFH实验三 DOS功能调用

一、实验目的

1、掌握DOS功能调用的方法与技巧。

2、熟悉DOS功能调用程序的调试与内存信息查看方法。

二、实验原理

单个字符及字符串的输入与输出DOS功能调用相关知识(略)。

三、实验内容

1、编写程序,实现在屏幕上显示字符串“My name is XXX!”XXX为自己姓名汉语拼音。

参考程序如下(需自己补充完整):

;********定义数据段*********

DATA SEGMENT

DA1 DB ‘My name is XXX!’

DB 0DH,0AH,’$’

DATA ENDS

;********定义堆栈段*********

STACK SEGMENT

ST1 DB 100 DUP(?)

STACK ENDS

;********定义代码段*********

CODE SEGMENT

MAIN PROC FAR

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

START:MOV AX, STACK

MOV SS, AX

PUSH D S

MOV AX,0

PUSH AX

MOV DS, DATA

;指定功能号

MOV DX,

INT 21H

RET

MAIN END

CODE END

END START

要求:

(1)阅读并分析以上程序段,将空白处补充完整,更正有错误的地方;

(2)查看数据段存储区域,画出数据段内存结构图;

(3)若在数据段中没有“DB 0DH,0AH,’$’”语句,或没有“0DH,0AH,’$’”中的一个,会出现什么现象?2、以下程序是键入字符串并保存在数据缓冲区中的DOS功能中断调用源程序,试分析并在Emu8086环境下运行调试。若输入的字符串为‘123ABCD’,列出内存缓冲区各存储单元在字符串输入前后的变化情况。CL寄存器的值为多少?

DATA SEGMENT

BUFF DB 100

DB 1

DB 100 DUP (2)

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE, DS:DATA

START:MOV AX, DATA

MOV DS, AX

MOV DX, OFFSET BUFF

MOV AH, 0AH

INT 21H

MOV BX, DX

MOV CL, [BX+1]

MOV AH,4CH

INT 21H

CODE ENDS

END START

CL=

要求:

(1)数据段定义有何规定,第一、二、三个字节存储单元分别代表什么含义?

(2)根据程序运行结果,填写上表。

3、试编写程序,实现在显示器上显示全部标准和扩展ASCII码字符(其编码为00—FFH)。

实验四循环程序设计

一、实验目的

1、掌握在汇编语言程序中分支和循环语句编写方法。

2、掌握数组排序程序设计方法。

二、实验内容

1、找出给定数组中最大数和最小数,并将其送入指定存储单元。

以BUF为首址的字节单元中,存放了COUNT个无符号数,找出其中最大数并送入MAX 单元中。编写程序并观察记录实验结束。

参考程序如下,分析程序段,并将其填充完整:

DSEG SEGMENT

BUF DB 5,6,7,58H,13H,76H,120,36H,48,H

COUNT EQU $-BUF

MAX DB ?

DSEG ENDS

CSEG SEGMENT

;段分配

START: MOV AX, DATA

; 对数据段进行初始化

MOV BX, ; 获取第一个数的偏移地址

MOV CX, COUNT-1

;将第一个数送到AL

LOP1: INC BX

; 两数比较

JAE NEXT

MOV AL,[BX]

NEXT: ;重复比较

MOV MAX,AL

;返回DOS

CSEG ENDS

END START

要求:

(1)在实验报告上写出调试通过的完整程序,记录程序执行前和执行后数据段内容变化。(2)若要找出数组中的最小值,以上程序如何修改?记录程序执行前和执行后数据段内容变化。

(3)若要将最大数和最小数都找出来,并存放在MAX和MAX+1单元中,程序如何修改?2、对给定数组按大到小或从小到大的顺序重新排序。

原理:对于这样一个数组排列问题,通常采用气泡排序算法。从数组的第一个元素开始,依次进行相邻两个元素的大小比较。若符合排序规定,则不做任何操作;若不符合排序规定,则将两数交换位置。第一遍比较(共进行n-1次相邻两元素比较)完后,数组中最小的数已经排在了最后。然后以同样的做法,再进行第二遍比较,为了加快处理速度,最后一个数将不再参与比较,所以只需对n-1个数进行考虑,需进行n-2次相邻两元素比较过程。同样,第三遍比较只有n-2个数需要考虑(又有一个较小的数排在后面),需进行n-3次相邻两元素的比较过程。对于n个数组元素,最多需进行n-1遍比较就可完成排序过程。

排序参考程序:

DSEG SEGMENT

ARRAY DW 75H,126H,63H,48H,H,66H,2014H,16H,568H,6H ; 定义排序数组DSEG ENDS

CSEG SEGMENT

ASSUME CS: CSEG, DS: DSEG

START: MOV AX, DSEG

MOV DS, AX

MOV CX, 10-1 ; 设置内循环计数器初始值

LOP1: MOV DI, CX ; 设置外循环计数器初始值

MOV BX, 0000H ; 设地址指针BX=0000H

MOV DL, 00H ; 清交换标志(置成不交换状态)LOP2: MOV AX, ARRAY[BX] ; 相邻两数比较

CMP AX, ARRAY[BX+2]

JGE LOP3 ; 若符合排序规定, 转移

XCHG AX, ARRAY[BX+2] ; 若不符合排序规定, 两数交换

MOV ARRAY[BX], AX

MOV DL, 01H ; 置交换标志

LOP3: ADD BX, 2 ; 修改地址指针

LOOP LOP2 ; 若一遍未比较完, 继续

MOV CX, DI

DEC CX ; 外循环次数减1

JZ DONE ; 外循环结束, 转移

AND DL, DL ; 外循环没有结束, 检测交换

JNZ LOP1 ; 标志DL的状态, DL=01H,继续循环, 否则排序结束DONE: MOV AH, 4CH

INT 21H

CSEG ENDS

END START

要求:

整理好运行正确的源程序和结果,写出每遍比较后数据段数据存放变化情况(数据排序情况)及实验的调试运行情况。

实验五子程序设计

一、实验目的

1、掌握在子程序调用时堆栈的变化情况。

2、掌握子程序的结构和设计方法。

3、掌握子程序的调用和返回指令的用法及执行情况。

二、实验内容

1、在Emu8086中先执行以下两条MOV指令后,再分别执行以下四条CALL指令,试用图表形式表示在执行CALL指令前后CS、IP、SP以及堆栈中的内容如何变化,并分析其原因。

MOV BX,0300H

MOV [BX],4800H

(1)CALL 2014H

(2)CALL BX

(3)CALL [BX]

2、已知当前数据段中BUF开始分别存放若干二进制字节数据,编制程序将这些数据分别转换为十六进制数据在屏幕上显示出来,要求十六进制转换ASCII码用子程序实现。

实验参考源程序

DATA SEGMENT

BUF DB 0ABH,0CDH,0DEH,01H,02H,03H

DB 3AH,4BH,5CH,6FH

DATA ENDS

;*****************************

CODE SEGMENT

ASSUME CS:CODE, DS:DATA

START: MOV AX, DATA

MOV DS, AX

MOV CX, 10

LEA BX, BUF

AGAIN: MOV AL, [BX]

CALL HEX2ASC ;调用十六进制转换ASCII码子程序;******显示ASCII码*******

PUSH CX

MOV CX, DX

MOV DL, CH ;显示高位

MOV AH, 2

INT 21H

MOV DL,CL ;显示低位

MOV AH, 2

INT 21H

MOV DL,' ' ;显示空格

MOV AH,2

INT 21H

POP CX

INC BX

LOOP AGAIN

;********************************

MOV AH, 4CH ;返回dos

INT 21H

;*******十六进制转换ASCII码子程序******** HEX2ASC PROC NEAR

MOV DH,AL

PUSH CX

MOV CL,4

SHR DH,CL

CMP DH,9

JBE NEXT1

ADD DH,7

NEXT1: ADD DH,30H

MOV DL,AL

AND DL,0FH

CMP DL,9

JBE NEXT2

ADD DL,7

NEXT2: ADD DL,30H

POP CX

RET

HEX2ASC ENDP

;********************************

CODE ENDS

END START

要求:

(1)以注释的方式写出以上程序各条指令的功能;(2)观察并记录子程序调用前后堆栈的变化情况。

实验六 74LS273输出控制LED

一、实验目的

1、熟悉用PROTEUS软件绘制电路图;

2、熟悉用软件编程实现74LS273接口芯片对LED显示状态的控制。

二、实验条件

微机一台,PROTEUS软件、EMU8086软件

三、实验原理

1、IN、OUT指令的使用。(略)

2、CPU与I/O接口的连接。(略)

四、实验内容

图1 8086最小模式下的总线结构及I/O地址译码电路

根据图1,可分析74LS154译码器各输出端的地址为:

̅̅̅̅̅:0000H (A15-A0=0000 0000 0000 0000)

IO0

̅̅̅̅̅:0200H(A15-A0=0000 0010 0000 0000)

IO1

̅̅̅̅̅:0400H

IO2

̅̅̅̅̅:0600H

IO3

̅̅̅̅̅:0800H

IO4

……

̅̅̅̅̅̅̅:1E00H (A15-A0=0001 1110 0000 0000)

IO15

2、74LS273输出口控制循环彩灯(单个移动点亮LED)

要求:用两片74LS273输出接口控制16只LED,通过编程实现LED由上到下移动点亮(每次只亮一只)。

(1)在PROTEUS译码电路旁边空白处按下图2所示画出接口电路:

图2 74LS273输出口控制彩灯的接口电路

(2)在EMU8086中编写如下控制程序,并保存为ASM汇编语言程序(如LED.ASM):.MODEL SMALL

.8086

.STACK

.CODE

.STARTUP

AGAIN: MOV DX,0200H ;273地址

MOV AX,1111111111111110B ;对应0电平的LED点亮

NEXT: OUT DX,AX

CALL DELAY ;延时

ROL AX,1 ;左移1位

JMP NEXT

DELAY PROC NEAR ;延时子程序

MOV BX,100LP1: MOV CX,469

LP2: LOOP LP2

DEC BX

JNZ LP1

RET

DELAY ENDP

.DATA

END

(3)将源程序编译为.EXE文件,并保存LED.EXE文件。

(4)在PROTEUS中双击8086CPU,弹出如图3所示设置窗口,在Program File栏选择文件为LED.EXE,其他属性值采用默认值。

图3 8086CPU属性设置窗口

(5)在PROTEUS中点击左下角的运行按钮,查看仿真结果,若有问题,检查电路图或是汇编语言源程序,若程序修改,若重新编译。直到仿真结果正确为止。正确的结果为LED灯从上到下依次点亮,并重复此现象。

3、LED霓虹灯设计

(1)不改变以上电路,将控制程序修改为如下参考程序,观察LED变化情况。

.MODEL SMALL

.8086

.STACK

.CODE.STARTUP

AGAIN: MOV DX,0200H

MOV SI,OFFSET SITUATION

NEXT: MOV AX,[SI]

OUT DX,AX

CALL DELAY

ADD SI,2

CMP SI,OFFSET SIT_END

JB NEXT

JMP AGAIN

DELAY PROC NEAR

MOV BX,100

LP1: MOV CX,469

LP2: LOOP LP2

DEC BX

JNZ LP1

RET

DELAY ENDP

.DATA

SITUATION DW 1111111111111111B

DW 0111111111111110B

DW 0011111111111100B

DW 0001111111111000B

DW 0000111111110000B

DW 0000011111100000B

DW 0000001111000000B

DW 0000000110000000B

DW 0000000000000000B

DW 0000000110000000B

DW 0000001111000000B

DW 0000011111100000B

DW 0000111111110000B

DW 0001111111111000B

DW 0011111111111100B

DW 0111111111111110B

DW 1111111111111111B

SIT_END=$

END

(2)分析控制程序,弄清控制原理。

4、LED模拟交通灯设计

要求:用12只LED分成东西南北4组,每组用红黄绿3只LED模拟交通信号灯,外部接口用两片74LS273,用其低12位控制12只LED。

(1)在PROTEUS中新建一个文档,I/O接口译码部分仍用图1.

(2)在译码电路旁边再按图4画出交通灯电路。

图4 交通灯电路原理图

(3)编写如下控制程序,并保存为LED.ASM,再编译为LED.EXE文件。.MODEL SMALL

.8086

.STACK

.CODE

.STARTUP

START: MOV AX,ALL_LIGHT

MOV DX,0200H

OUT DX,AX

AGAIN: MOV SI,OFFSET SITUATION

MOV DX,0200H

NEXT: MOV AX,[SI]

OUT DX,AX

CALL DELAY1

ADD SI,2

MOV AX,[SI]

OUT DX,AX

CALL DELAY2

ADD SI,2

CMP SI,OFFSET SIT_END

JB NEXT

JMP AGAIN

DELAY1 PROC NEAR

MOV BX,1000

LP1: MOV CX,469

LP2: LOOP LP2

DEC BXJNZ LP1

RET

DELAY1 ENDP

DELAY2 PROC NEAR

MOV BX,500

LP3: MOV CX,469

LP4: LOOP LP4

DEC BX

JNZ LP3

RET

DELAY2 ENDP

.DATA

SITUATION DW 0000011110011110B

S1 DW 0000101110101110B

S2 DW 0000110011110011B

S3 DW 0000110101110101B

SIT_END = $

ALL_LIGHT EQU 0000001001001001B

END

(4)将8086的程序文件设置为LED.EXE

(5)在PROTEUS中点击左下角的运行按钮,查看仿真结果,若有问题,检查电路图或是汇编语言源程序,若程序修改,若重新编译。直到仿真结果正确为止。

实验七 8253计数器/定时器实验

一、实验目的

1、掌握8253定时器的编程原理及应用

2、练习使用Proteus仿真软件

二、实验内容

利用Proteus仿真实现8253控制LED的闪烁,要求LED点亮0.5秒,熄灭0.5秒。

三、实验步骤

1、画硬件连接图

(1)点击开始、程序、Proteus 7 professional、ISIS 7 professional,启动Proteus。

(2)放置元件,点击,再点击,出现如下图:

依次输入8086、74LS373、74LS138、NAND、8253A、LED-RED、PULLUP。

(3)按下图连接电路。

(4)放置标号,点击

,依次放置总线标号,网络标号(如上图)。根据上图地址线连接

方式,可知8253的四个端口地址分别为0E8H、0EAH、0ECH、0EEH。

(5)放置电源和终端,点击。

(6)修改元件属性,双击LED,出现如下对话框,将Model Type 改为Digital。

(7)放置时钟信号,点击,选择DCLOCK,双击信号源出现如下对话框,将频率改为2M。

2、加载软件

(1)启动emu8086,新建一个空白文档。

(2)在emu8086中输入如下参考程序, 并保存为8253.asm。

参考程序如下;

PORT_0 equ 0e8h

PORT_1 equ 0eah

PORT_2 equ 0ech

PORT_CTR equ 0eeh

CODE SEGMENT

ASSUME CS:CODE

START:

mov al, 00110101B ;计数器0控制字,先写低字节,后写高字节,方

;式2,BCD计数

mov dx, PORT_CTR

out dx, al ;写入控制字

mov dx, PORT_0

mov al,00h

out dx,al

mov al,50h ;计数器0的计数初值为5000out dx,al

mov al, 01110111B ;计数器1控制字,先写低字节,后写高字节,方

;式3,BCD计数

mov dx, PORT_CTR

out dx, al

mov dx, PORT_1

mov al, 00h

out dx, al

mov al,04h ;计数器1的计数初值为400

out dx,al

CODE ENDS

END START

(3)编译程序,点击,生成Exe文件,并保存(如8253.exe)。

(4)加载程序,双击仿真图中的8086CPU,出现如下对话框,点击加载软件,同时将各参数修改如下图。

设置Internal Memory Size参数值为0x10000,如下图所示。

3、仿真:点击,系统开始仿真。

四、思考题

1.若8253的CS端改接到138译码器的Y1输出端,控制程序如何改变?电路图需要改动吗?若需要,如何改动?

2.若将LED指示灯的亮、熄时间从0.5秒改为1秒,控制程序如何更改?

五、实验报告要求

整理好运行正确的源程序,画出程序流程图,并列出源程序清单,写出实验的心得体会。

实验八 8255并行通信

一、实验目的

掌握8255A的使用方法。

二、实验内容

1、按下图连接硬件线路。

2、打开emu8086,编制程序,读取开关数据并用LED上显示。具体方法同实验七,参考程序如下:

A8255 equ 0F0h

B8255 equ 0F2h

C8255 equ 0F4h

M8255 equ 0F6h

CODE SEGMENT

ASSUME CS:CODE

START:

MOV DX,M8255

MOV AL,10010000B

OUT DX,AL

TEST_IT: MOV DX,A8255

IN AL,DX

NOT ALMOV DX,B8255

OUT DX,AL

JMP TEST_IT

CODE ENDS

END START

3、仿真

按下相应按钮,观察对应的LED的亮熄变化。

四、实验报告要求

整理好运行正确的源程序,画出程序流程图,并列出源程序清单,写出实验的心得体会。

文档

微机原理与接口技术实验指导

目录实验一Emu8086软件使用与指令练习(2)实验二伪指令的应用(6)实验三DOS功能调用(8)实验四循环程序设计(10)实验五子程序设计(12)实验六74LS273输出控制LED(14)实验七8253计数器/定时器实验(20)实验八8255并行通信(25)实验一Emu8086软件使用与指令练习一、实验目的1、熟悉汇编语言开发环境。2、掌握Emu8086软件使用方法。3、理解寻址方式的意义。4、掌握8086常用指令的功能。二、实验内容1、Emu8086的使用(1)下载Emu8086软件,并安
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top