微机系统实验报告材料.docx

上传人:b****7 文档编号:10435262 上传时间:2023-02-11 格式:DOCX 页数:57 大小:174.07KB
下载 相关 举报
微机系统实验报告材料.docx_第1页
第1页 / 共57页
微机系统实验报告材料.docx_第2页
第2页 / 共57页
微机系统实验报告材料.docx_第3页
第3页 / 共57页
微机系统实验报告材料.docx_第4页
第4页 / 共57页
微机系统实验报告材料.docx_第5页
第5页 / 共57页
点击查看更多>>
下载资源
资源描述

微机系统实验报告材料.docx

《微机系统实验报告材料.docx》由会员分享,可在线阅读,更多相关《微机系统实验报告材料.docx(57页珍藏版)》请在冰豆网上搜索。

微机系统实验报告材料.docx

微机系统实验报告材料

电子科技大学

实验报告

课程名称

微机系统上机实验

实验学时

28学时

评语:

 

指导教师:

吴文华

2016年12月26日

 

实验一汇编语言编程实验

一、实验目的

(1)掌握汇编语言的编程方法

(2)掌握DOS功能调用的使用方法

(3)掌握汇编语言程序的调试运行过程

二、实验设备

PC机一台。

三、实验容

1.将指定数据区的字符串数据以ASCII码形式显示在屏幕上,并通过DOS功能调用完成必要提示信息的显示。

2.在屏幕上显示自己的学号信息。

3.循环从键盘读入字符并回显在屏幕上,然后显示出对应字符的ASCII码,直到输入”Q”或“q”时结束。

4.自主设计输入显示信息,完成编程与调试,演示实验结果。

四、实验源码

DATASEGMENT

DISCHADB'WangHan14030188004',0AH,0DH,'$'

TABDB'',0AH,0DH,'$'

BLANKDB'$'

DATAENDS

STACKSEGMENT

STACKENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACK

START:

MOVAX,SEGDISCHA

MOVDS,AX

MOVDX,OFFSETDISCHA

MOVAH,09H

INT21H

NEXT:

MOVAH,01H

INT21H

CMPAL,'Q'

JEENDSS

CMPAL,'q'

JEENDSS

MOVBL,AL

MOVAX,SEGBLANK

MOVDS,AX

MOVDX,OFFSETBLANK

MOVAH,09H

INT21H

MOVBH,0AH

MOVDL,BL

MOVCL,04H

SHRDL,CL

CMPDL,BH

JNLQ3

JMPQ2

Q1:

ADDDL,07H

Q2:

ADDDL,30H

MOVAH,02H

INT21H

MOVDL,BL

MOVDH,0FH

ANDDL,DH

CMPDL,BH

JNLQ3

JMPQ4

Q3:

ADDDL,07H

Q4:

ADDDL,30H

MOVAH,02H

INT21H

MOVAX,SEGTAB

MOVDS,AX

MOVDX,OFFSETTAB

MOVAH,09H

INT21H

MOVCX,0009H

LOOPNEXT

ENDSS:

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

五、程序流程图

如下图1.2所示

图1.2程序流程图

 

实验二数码转换实验

一、实验目的

1.掌握不同进制数及编码相互转换的程序设计方法。

2.掌握运算类指令编程及调试方法。

3.掌握循环程序的设计方法。

二、实验设备

PC机一台。

三、实验容

1.重复从键盘输入不超过5位的十进制数,按回车键结束输入;

2.将该十进制数转换成二进制数;结果以2进制数的形式显示在屏幕上;

3.如果输入非数字字符,则报告出错信息,重新输入;

4.直到输入“Q”或‘q’时程序运行结束。

5.键盘输入一字符串,以空格结束,统计其中数字字符的个数,在屏幕显示

四、实验原理

十进制数可以表示为:

Dn*10n+Dn-1*10n-1+…+D0*100=Di*10i

其中Di代表十进制数1、2、3、…、9、0。

上式可以转换为:

Di*10i=(((Dn*10+Dn-1)*10+Dn-2)*10+…+D1)*10+D0

由上式可归纳出十进制数转换为二进制数的方法:

从十进制数的最高位Dn开始做乘10加次位的操作,依此类推,则可求出二进制数结果。

表2.1数码转换关系对应表

五、实验源码

1、数制转换

assumecs:

code

datasegment

estdb"Error:

Inputinvalid",0ah,0dh,'$'

dataends

stacksegment

stkdb64dup(0)

stackends

codesegment

start:

movax,stack

movss,ax

movsp,offsetstk

movax,data

movds,ax

rf:

movcx,5

movax,0

movdx,0

movsi,0

movdi,0

rr:

movah,01h

int21h

cmpal,0dh

jerend

cmpal,'q'

jeqt

cmpal,'Q'

jeqt

cmpal,'0'

jlerr

cmpal,'9'

jgerr

jmpcnt

err:

callperr

cnt:

subal,'0'

movbh,0

movbl,al

movax,di

pushbx

movbx,10

mulbx

popbx

addax,bx

adcdx,0

movsi,dx

movdi,ax

looprr

rend:

callnewline

movbx,si

callitb

movbx,di

callitb

callnewline

jmprf

qt:

movax,4c00h

int21h

itb:

movcx,16

rs:

movax,bx

andax,01h

movdl,al

adddl,'0'

pushdx

shrbx,1

looprs

movcx,16

r:

popdx

movah,02h

int21h

loopr

ret

newline:

movah,02h

movdl,0dh

int21h

movdl,0ah

int21h

ret

perr:

movdx,offsetest

movah,09h

int21h

jmprf

ret

codeends

endstart

2、数字统计

assumecs:

code

stacksegment

stkdb16dup(0)

stackends

codesegment

start:

movax,stack

movss,ax

movsp,0

movbx,0

rc:

movah,01h

int21h

cmpal,''

jebrk

cmpal,'0'

jln

cmpal,'9'

jgn

incbx

n:

jmprc

brk:

callshow_num

movax,4c00h

int21h

show_num:

movsi,0

rs:

movax,bx

movcl,10

divcl

addah,'0'

movdl,ah

pushdx

movah,0

incsi

cmpax,0

jert

jmprs

rt:

movcx,si

s:

popdx

movah,02h

int21h

loops

ret

codeends

endstart

六、程序流程图

如下图2.2所示

图2.2十进制ASCII码转换为二进制数流程图

实验三基本IO扩展口实验

一、实验目的

1.了解TTL芯片扩展简单I/O口的方法。

2.掌握数据输入输出程序编制的方法。

二、实验设备

PC机一台,实验箱

三、实验容

本实验要求用74LS244作为输入口,读取开关状态,并将此状态通过74LS273连到发光二极管显示。

具体实验容如下:

1.开关Yi为低电平时对应的发光二极管亮,Yi为高电平时对应的发光二极管灭。

2.当开关Yi全为高电平时,发光二极管Qi从左至右轮流点亮。

3.当开关Yi全为低电平时,发光二极管Qi从右至左轮流点亮。

四、实验原理

74LS244是一种三态输出的8总线缓冲驱动器,无锁存功能,当G为低电平,Ai信号传送到Yi,当为高电平时,Yi处于禁止高阻状态;

 74LS273是一种带清除功能的8D触发器,1D~8D为数据输入端,1Q~8Q为数据输出端,正脉冲触发,低电平清除,常用作8位地址锁存器。

五、实验步骤

1.按照实验连线图连接:

244的CS接到ISA总线接口模块的0000H,Y7—Y0——开关K1—K8。

273的CS接到ISA总线接口模块的0020H,Q7—Q0——发光二极管L1—L8。

该模块的WR、RD分别连到ISA总线接口模块的IOWR、IORD。

该模块的数据(AD0~AD7)连到ISA总线接口模块的数据(LD0~LD7)。

2.编写实验程序,编译,运行程序

3.拨动开关,观察发光二极管的变化。

六、实验源码

MY_STACKSEGMENTPARA'STACK'

DB100DUP(?

MY_STACKENDS

MY_DATASEGMENTPARA'DATA'

IO_9054base_addressDB4DUP(0);PCI卡9054芯片I/O基地址暂存空间

IO_base_addressDB4DUP(0);PCI卡I/O基地址暂存空间

pcicardnotfindDB0DH,0AH,'pcicardnotfindoraddress/interrupterror!

!

!

',0DH,0AH,'$'

GOODDB0DH,0AH,'TheProgramisExecuting!

',0DH,0AH,'$'

LS244DW00000H

LS273DW00020H

RADB?

LBDB?

DELAY_SETEQU0FFFH;延时常数

MY_DATAENDs

MY_CODESEGMENTPARA'CODE'

MY_PROCPROCFAR

ASSUMECS:

MY_CODE,DS:

MY_DATA,SS:

MY_STACK

MAIN:

.386;386模式编译

MOVAX,MY_DATA

MOVDS,AX

MOVES,AX

MOVAX,MY_STACK

MOVSS,AX

CALLFINDPCI;自动查找PCI卡资源及IO口基址

MOVCX,wordptrIO_base_address

;MOVCX,0E800H;直接加入(E800:

本机PCI卡IO口基址)

ADDLS244,CX;PCI卡IO基址+偏移

ADDLS273,CX

MOVRA,7FH

MOVLB,0FEH

READ1:

MOVDX,LS244;读取开关状态

INAL,DX

CMPAL,0FFH

JEREAD2

CMPAL,000H

JEREAD3

NOTAL;取反

JMPREAD4

READ2:

CALLRIGHT

JMPREAD4

READ3:

CALLLEFT

READ4:

MOVDX,LS273

OUTDX,AL;送LED显示

CALLDELAY

CALLBREAK

JMPREAD1

MY_PROCENDp

RIGHTPROCNEAR

MOVAL,RA

RORAL,1

MOVRA,AL

RET

RIGHTENDP

LEFTPROCNEAR

MOVAL,LB

ROLAL,1

MOVLB,AL

RET

LEFTENDP

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

;/*按任意键退出*/

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

BREAKPROCNEAR;按任意键退出

PUSHF

PUSHAX

PUSHDX

MOVAH,06H

MOVDL,0FFH

INT21H

JERETURN

MOVAX,4C00H

INT21H

RETURN:

POPDX

POPAX

POPF

RET

BREAKENDP

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

;/*延时程序*/

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

DELAYPROCNEAR;延时程序

PUSHF

PUSHDX

PUSHCX

MOVDX,DELAY_SET

D1:

MOVCX,-1

D2:

DECCX

JNZD2

DECDX

JNZD1

POPCX

POPDX

POPF

RET

DELAYENDp

实验四可编程并行接口实验

一、实验目的

1.了解可编程并行接口8255的部结构,

2.掌握工作方式、初始化编程及应用。

二、实验设备

PC机一台,实验箱

三、实验容

1.流水灯实验:

利用8255的A口、B口循环点亮发光二极管。

2.交通灯实验:

利用8255的A口模拟交通信号灯。

3.I/O输入输出实验:

利用8255的A口读取开关状态,8255的B口把状态送发光二极管显示。

四、实验原理

8255是一个通用可编程并行接口电路。

它具有A、B、C三个8位并行口。

其中C口也可用作A、B口的联络信号及中断申请信号。

通过编程,它可以被设置为基本输入输出、选通输入输出以及双向传送方式。

对于C口还具有按位置0、1的功能。

图4.1可编程并行接口8255芯片接口电路

 

D7

D6

D5

D4

D3

D2

D1

D0

1

(特征位)

A组方式

00=方式001=方式1

1X=方式2

A口

0=输出

1=输入

C口高4位

0=输出

1=输入

B组方式

0=方式0

1=方式1

B口

0=输出

1=输入

C口低4位

0=输出

1=输入

0

(特征位)

不用

位选择

000=C口0位……111=C口7位

0=复位

1=置位

表4.18255控制字

五、实验步骤

1.流水灯实验

图4.2流水灯实验连线图

模块的WR、RD分别连到ISA总线接口模块的IOWR、IORD。

模块的数据(AD0~AD7)、地址线(A0~A7)分别连到ISA总线接口模块的数据(LD0~LD7)、地址线(LA0~LA7)。

8255模块选通线CE连到ISA总线接口模块的0000H。

8255的PA0~PA7连到发光二极管的L0~L7;8255的PB0~PB7连到发光二极管的L8~L15。

运行程序,观察发光二极管。

2.交通灯实验

模块的WR、RD分别连到ISA总线接口模块的IOWR、IORD。

模块的数据(AD0~AD7)、地址线(A0~A7)分别连到ISA总线接口模块的数据(LD0~LD7)、地址线(LA0~LA7)。

8255模块选通线CE连到ISA总线接口模块的0000H。

8255的PA0-L7、PA1-L6、PA2-L5、PA3-L3、PA4-L2、PA5-L1。

运行程序,观察发光二极管。

图4.3交通灯实验连线图

六、实验源码

1流水灯

MY_STACKSEGMENTPARA'STACK'

DB100DUP(?

MY_STACKENDS

;

MY_DATASEGMENTPARA'DATA'

IO_9054base_addressDB4DUP(0);PCI卡9054芯片I/O基地址暂存空间

IO_base_addressDB4DUP(0);PCI卡I/O基地址暂存空间

pcicardnotfindDB0DH,0AH,'pcicardnotfindoraddress/interrupterror!

!

!

',0DH,0AH,'$'

GOODDB0DH,0AH,'TheProgramisExecuting!

',0DH,0AH,'$'

LADB?

LBDB?

P8255_ADW0000H

P8255_BDW0001H

P8255_CDW0002H

P8255_MODEDW0003H

DELAY_SETEQU1FFFH

MES2DB'PCICONFIGREADERROR!

$'

MY_DATAENDs

MY_CODESEGMENTPARA'CODE'

MY_PROCPROCFAR

ASSUMECS:

MY_CODE,DS:

MY_DATA,SS:

MY_STACK

START:

.386;386模式编译

MOVAX,MY_DATA

MOVDS,AX

MOVES,AX

MOVAX,MY_STACK

MOVSS,AX

CALLFINDPCI;自动查找PCI卡资源及IO口基址

MOVCX,wordptrIO_base_address

;MOVCX,0E800H;直接加入(E800:

本机PCI卡IO口基址)

ADDP8255_A,CX;PCI卡IO基址+偏移

ADDP8255_B,CX

ADDP8255_C,CX

ADDP8255_MODE,CX

MOVDX,P8255_MODE;8255初始化,三个口全为输出

MOVAL,80H

OUTDX,AL

MOVDX,P8255_A;PA口赋初值

MOVAL,7FH

OUTDX,AL

MOVLA,AL

MOVDX,P8255_B;PB口赋初值

MOVAL,0FEH

OUTDX,AL

MOVLB,AL

CALLDELAY

A1:

MOVAL,LA;PA口数据右移一位

RORAL,1

MOVLA,AL

MOVDX,P8255_A

OUTDX,AL

MOVAL,LB

ROLAL,1

MOVLB,AL

MOVDX,P8255_B;PB口数据右移一位

OUTDX,AL

CALLDELAY;延时

CALLBREAK;按任意键退出

JMPA1

MY_PROCENDp

;

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

;/*延时子程序*/

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

;

DELAYPROCNEAR;延时程序

PUSHF

PUSHDX

PUSHCX

MOVDX,DELAY_SET

D1:

MOVCX,-1

D2:

DECCX

JNZD2

DECDX

JNZD1

POPCX

POPDX

POPF

RET

DELAYENDp

;

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

;/*按任意键退出子程序*/

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

;

BREAKPROCNEAR

MOVAH,06H

MOVDL,0FFH

INT21H

JERETURN

MOVAX,4C00H

INT21H

RETURN:

RET

BREAKENDP

;

2交通灯

MY_STACKSEGMENTPARA'STACK'

DB100DUP(?

MY_STACKENDS

MY_DATASEGMENTPARA'DATA'

IO_9054base_addressDB4DUP(0);PCI卡9054芯片I/O基地址暂存空间

IO_base_addressDB4DUP(0);PCI卡I/O基地址暂存空间

pcicardnotfindDB0DH,0AH,'pcicardnotfindoraddress/interrupterror!

!

!

',0DH,0AH,'$'

GOODDB0DH,0AH,'TheProgramisExecuting!

',0DH,0AH,'

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 电力水利

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1