微机原理实验1.docx

上传人:b****5 文档编号:6886912 上传时间:2023-01-12 格式:DOCX 页数:29 大小:165.59KB
下载 相关 举报
微机原理实验1.docx_第1页
第1页 / 共29页
微机原理实验1.docx_第2页
第2页 / 共29页
微机原理实验1.docx_第3页
第3页 / 共29页
微机原理实验1.docx_第4页
第4页 / 共29页
微机原理实验1.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

微机原理实验1.docx

《微机原理实验1.docx》由会员分享,可在线阅读,更多相关《微机原理实验1.docx(29页珍藏版)》请在冰豆网上搜索。

微机原理实验1.docx

微机原理实验1

实验一两个多位十进制数相减实验

一.实验要求

将两个多位十进制数相减,要求被减数,减数均以ASCII码形式按顺序存放在以

DATAI和DATA2为首的5个内存单元中(低位在前),结果送回DATAI处。

二、实验目的

1.学习数据传送和算术运算指令的用法。

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

DATASEGMENT

DATA1DB33H,39H,31H,37H,38H;第一个数据(作为被减数)

DATA2DB36H,35H,30H,38H,32H;第二个数据(作为减数)

MES1DB'-','$'

MES2DB'=','$'

DATAENDS

STACKSEGMENT;堆栈段

STADB20DUP()

TOPEQULENGTHSTA

STACKENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACK,ES:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVES,AX

MOVAX,STACK

MOVSS,AX

MOVAX,TOP

MOVSP,AX

MOVSI,OFFSETDATA1

MOVBX,05

CALLDISPL;显示被减数

MOVAH,09H

LEADX,MES1

INT21H

MOVSI,OFFSETDATA2

MOVBX,05;显示减数

CALLDISPL

MOVAH,09H

LEADX,MES2

INT21H

MOVSI,OFFSETDATA1

MOVDI,OFFSETDATA2

CALLSUBA;减法运算

MOVSI,OFFSETDATA1

MOVBX,05;显示结果

CALLDISPL

MOVDL,0DH

MOVAH,02H

INT21H

MOVDL,0AH

MOVAH,02H

INT21H

INT21H

MOVAX,4C00H

INT21H

DISPLPROCNEAR;显示子功能

DSI:

MOVAH,02

MOVDL,[SI+BX-1];显示字符串中一字符

INT21H

DECBX;修改偏移量

JNZDSI

RET

DISPLENDP

SUBAPROCNEAR

MOVDX,SI

MOVBP,DI

MOVBX,05

SU1:

SUBBYTEPTR[SI+BX-1],30H

SUBBYTEPTR[DI+BX-1],30H

DECBX;将ASCII码表示的数字串

JNZSU1;转化为十六进制的数字串

MOVSI,DX

MOVDI,BP

MOVCX,05;包括进位,共5位

CLC;清进单位

SU2:

MOVAL,[SI]

MOVBL,[DI]

SBBAL,BL;带进位相减

AAS;非组合BCD码的减法调整

MOV[SI],AL;结果送被减数区

INCSI

INCDI;指向下一位

LOOPSU2;循环

MOVSI,DX

MOVDI,BP

MOVBX,05

SU3:

ADDBYTEPTR[SI+BX-1],30H

ADDBYTEPTR[DI+BX-1],30H

DECBX;十六进制的数字串转化ASCII码表示的数字串

JNZSU3

RET

SUBAENDP

CODEENDS

ENDSTART

实验二两个数相乘的实验

一.实验要求

实现十进制数的乘法,被乘数和乘数均以ASCII码形式存放在内存中,算式结果

在屏幕上显示出来。

二.实验目的

掌握乘法指令和循环指令的用法。

DATASEGMENT

DATA1DB32H,39H,30H,35H,34H

DATA2DB34H

MES1DB'*','$'

MES2DB'=','$'

RESULTDB6DUP(00H)

DATAENDS

STACKSEGMENT

STADB20DUP()

TOPEQULENGTHSTA

STACKENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACK,ES:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVAX,STACK

MOVSS,AX

MOVSP,TOP

LEASI,DATA1

MOVBX,05H

L1:

MOVAH,02H

MOVDL,[SI+BX-1]

INT21H

DECBX

JNZL1

MOVAH,09H

LEADX,MES1

INT21H

LEASI,DATA2

MOVAH,02H

MOVDL,[SI]

INT21H

MOVAH,09H

LEADX,MES2

INT21H

MOVSI,OFFSETDATA2;显示算式

MOVBL,[SI];乘数DATA2→BL

ANDBL,00001111B;屏蔽高4位,ASCII码转化为十六进制数

MOVSI,OFFSETDATA1

MOVDI,OFFSETRESULT

MOVCX,05

LOOP1:

MOVAL,[SI]

ANDAL,00001111B;取被乘数DATA1,ASCII变十六进制数

INCSI;指向被乘数1的下一字符单元

MULBL;相乘

AAM;AAM调整

ADDAL,[DI];结果低位与前次计算的进位相加

AAA;AAA调整

MOV[DI],AL

INCDI;结果送存到下一单元

MOV[DI],AH

LOOPLOOP1;计算结果高位进位送存

MOVCX,06

MOVSI,DI

DISPL:

MOVAH,02

MOVDL,[SI]

ADDDL,30H

INT21H

DECSI

LOOPDISPL;显示结果

MOVAX,4C00H

INT21H;结束

CODEENDS

ENDSTART

实验三BCD码相乘的实验

一.实验要求

实现BCD码的乘法,要求被乘数和乘数以组合的BCD码形式存放,各占一个内

存单元,乘积存入在另外两个内存单元中,由于没有组合的BCD码乘法指令,程序中采用

将乘数1作为计算器,累加另一个乘数的方法得到计算结果。

二.实验目的

掌握用组合的BCD码表示数据,并熟悉怎样实现组合BCD码乘法运算。

DATASEGMENT

FIRSTDB99H

SECONDDB25H

THIRDDB2DUP()

MES1DB'*','$'

MES2DB'=','$'

DATAENDS

STACKSEGMENTPARASTACK'STACK'

STAPNDB100DUP()

TOPEQULENGTHSTAPN

STACKENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACK

START:

MOVAX,DATA

MOVDS,AX

MOVAX,STACK

MOVSS,AX

MOVAX,TOP

MOVSP,AX

MOVBL,FIRST;被乘数送BL

MOVCL,SECOND;乘数送CL

MOVDX,0;部分积清0

MOVAL,BL

AGAIN:

ORAL,AL

JZDONE;被乘数减到0则转结果显示

MOVAL,DL

ADDAL,CL

DAA;乘数于部分积低位相加后调整

MOVDL,AL

MOVAL,DH

ADCAL,0

DAA;往部分积高位送进位后调整

MOVDH,AL

MOVAL,BL

DECAL

DAS;组合BCD码减法调整

MOVBL,AL

JMPAGAIN

DONE:

LEABX,THIRD

MOV[BX],DX

LEASI,FIRST

CALLDIS

XORAX,AX

MOVAH,09H

LEADX,MES1;*

INT21H

LEASI,SECOND

CALLDIS

XORAX,AX

LEADX,MES2;=

MOVAH,09H

INT21H

LEASI,THIRD

INCSI

CALLDIS

DECSI

CALLDIS

MOVAX,4C00H;返回DOS

INT21H

DISPROCNEAR;显示子程序

MOVAL,[SI]

MOVCL,04H

SHRAL,CL

ADDAL,30H

MOVDL,AL

MOVAH,02H

INT21H

MOVAL,[SI]

ANDAL,0FH

ADDAL,30H

MOVDL,AL

MOVAH,02H

INT21H

RET

DISENDP

CODEENDS

ENDSTART

实验一双色灯实验

一、实验要求

编写程序,以8255为输出口,控制四个双色灯按要求发光。

二、实验目的

1.学习单板方式下扩展简单I/O接口的方法以双色灯的使用。

2.进一步学习微处理器的编程技术。

三、实验电路连线

8255的CS片选接至适配板上138译码处的200H~207H插孔。

四、实验说明

1、因为本实验是模拟交通灯控制实验,所以要先了解实际交通灯的变化规律。

假设一

个十字路口为东西南北走向。

初始状态0为东西红灯,南北红灯。

然后转状态1南北绿灯通

车,东西红灯。

过一段时间转状态2,南北绿灯闪几次转亮黄灯,延时几秒,

东西仍然红灯。

再转状态,东西绿灯通车,南北灯灯。

过一段时间转状态4,东西绿灯闪几

次转亮黄灯,延时几秒,南北仍然红灯。

最后循环至状态1。

2、双色LED是由一个红色LED管芯和一个绿色LED管芯封装在一起,公用负端。

红色正端加高电平,绿色正端加低电平时,红灯亮;红色正端加低电平,绿色正端加高电平

时,绿灯亮;两端都加高电平时,黄灯亮。

;实验一双色灯实验

D1EQU10H

D2EQU200H

DATASEGMENT

PBDB

DATAENDS

STACKSEGMENTSTACK

STADW50DUP()

TOPEQULENGTHSTA

STACKENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

PUSHCS

POPDS

MOVDX,203H;设置为全输出

MOVAL,80H

OUTDX,AL

MOVDX,200H

MOVAL,0ffh

OUTDX,AL;清LED

MOVDX,200H

MOVAL,0F0H

OUTDX,AL;全红

MOVBX,7fH

CALLDLY

BG:

MOVAL,01011010B;南北绿,东西红

OUTDX,AL

MOVBX,D2

CALLDLY

MOVCX,03H

XH1:

ANDAL,0F5H;绿灭黄亮

OUTDX,AL

MOVBX,D1

CALLDLY

ORAL,0aH;绿亮

OUTDX,AL

MOVBX,D1

CALLDLY

LOOPXH1

ORAL,0a0H;南北黄

OUTDX,AL

MOVBX,D1

CALLDLY

MOVBX,D1

CALLDLY

MOVAL,B;南北红,东西绿

OUTDX,AL

MOVBX,D2

CALLDLY

MOVCX,03

XH2:

ANDAL,0FaH

OUTDX,AL

MOVBX,D1

CALLDLY

ORAL,05H

OUTDX,AL

MOVBX,D1

CALLDLY

LOOPXH2

ORAL,50H

OUTDX,AL

MOVBX,D1

CALLDLY

MOVBX,D1

CALLDLY

JMPBG

DLYPROCNEAR

PUSHCX

DDD:

MOVCX,2ffH

CCC:

LOOPCCC

DECBX

CMPBX,0

JNEDDD

POPCX

RET

DLYENDP

CODEENDS

ENDSTART

实验二开关状态显示实验

一、实验要求

编写程序,设定8255的PA口为开关量输入,PB口为开关量输出,要求能随时将PA

口的开关状态通过PB口的发光二极管显示出来。

二、实验目的

学习使用8255各个口的不同工作方式

三、实验电路连接

将K1~K8用连接至8255的PB0~PB7,将DL1~DL8用连线连至8255的PC0~PC7,

8255CS连至译码处的200~207插孔。

四、实验说明

本实验要求8255工作方式0,PB口设置为输入,PC口设置为输出,输入量为开关量,

通过8255可实时显示在LED灯上。

按下HALT或RST键则返回监控。

;实验二开关状态显示实验

STACKSEGMENTSTACK

STADW50DUP()

TOPEQULENGTHSTA

STACKENDS

CODESEGMENT

ASSUMECS:

CODE,SS:

STACK

START:

MOVDX,203H;设置为b口输入,c口输出

MOVAL,92H

OUTDX,AL

BG:

MOVDX,201H;将b口状态从c口输出

INAL,DX

MOVDX,202h

OUTDX,AL

JMPBG

CODEENDS

ENDSTART

实验五A/D转换实验

一、实验要求

编程用查询方式采样电位器输入电压,并将采样到的结果实时地通过8279显示在

数码管上。

(只须显示一位即可。

用0~F表示0~+5V电压)。

二.实验目的

1.掌握A/D芯片AD0809的转换性能及编程方法。

2.学习A/D芯片与其他芯片(如8279)接口的方法,初步建立系统的概念。

三.实验电路及连线

CS79接译码处210~217这个插孔。

A/D的CS插译码处208~20F这个插孔,0809的IN0

接至电位器W1的中心抽头插孔。

注意:

电位器W1两边的两个插孔已经分别接好电源+5V和地,请不要再接,以防接

错,出现短路。

四、实验说明

本实验中所用A/D转换芯片为逐次逼近型,精度为8位每转换一次约100微钞,所以

程序若为查询式,则在启动后要加适应延时。

另外,0809芯片提供转换完成信号(EOC),

利用此信号可实现中断采集。

有兴趣者可自行编制程序。

Z8279EQU212H

D8279EQU210H

LEDMODEQU00;左边输入,八位显示外部译码八位显示

LEDFEQEQU38H;扫描频率

CODESEGMENT

ASSUMECS:

CODE,DS:

code

START:

pushcs

popds

calldelay

MOVDX,Z8279

MOVAL,LEDMOD

OUTDX,AL

MOVAL,LEDFEQ

OUTDX,AL

MOVCX,06H

XZ:

MOVDX,D8279

MOVAL,00H

OUTDX,AL

LOOPXZ

MOVDX,D8279

MOVAL,5eH

OUTDX,AL

MOVDX,D8279

MOVAL,77H

OUTDX,AL;以上为写(AD)

NOP

bg:

movdx,208h

moval,0

outdx,al

calldelay

inal,dx

movcl,04h

roral,cl

andal,0fh

pushax

movdx,z8279

moval,81h

outdx,al

popax

LEABX,LED

XLAT

MOVDX,D8279;将AL中内容写到数码管上

OUTDX,AL

calldelay

jmpbg

LEDDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H

DB5EH,79H,71H

delayprocnear

pushcx

movcx,01f00h

loop$

popcx

ret

delayendp

CODEENDS

ENDSTART

实验六D/A转换实验

一、实验要求

编写程序,使D/A转换模块循环输出三角波和锯齿波。

二、实验目的

1.掌握DAC0832芯片的性能、使用方法及对应硬件电路。

2.了解D/A转换的基本原理。

三、实验电路连线

DAC0832的片选CS孔接译码处208-20F插孔(注:

0832旁的短路帽应下插,做51实验时应上插)。

四、实验说明

D/A转换是量转化成模拟量的过程,本实验输出为模拟电压信号,本次实验生成的波形

较为简单,有兴趣者可试编程序生成各种波形,如方波,正弦波等,也可与键盘显示模块结

合起来,构成一个简单的波形发生器,通过键盘输入各种参数,如频率,振幅(小于+5V),

方波的占空比等。

CODESEGMENT

ASSUMECS:

CODE,DS:

code,SS:

code

START:

pushcs

popds

BG:

NOP

MOVDX,208H;锯齿波

MOVAL,00H

MOVCX,07ffH

BB:

OUTDX,AL

ADDAL,01

CMPAL,00H

JNZBB

LOOPBB

NOP

MOVAL,00H

MOVCX,07ffH

EE:

OUTDX,AL

ADDAL,01H

CMPAL,0FFH

JNEEE

FF:

OUTDX,AL

SUBAL,01H

CMPAL,00H

JNEFF

LOOPEE

JMPBG

CODEENDS

ENDSTART

实验九步进电机驱动实验

一、实验要求

利用8255的PC口PC-PC3轮流输出脉冲序列,小键盘控制步进电机的转速和转动方

向。

二、实验目的

1、了解控制步进电机的基本原理。

2、掌握控制步进电机转动的编程的方法。

三、实验连线

用硬导线将8255选信号CS接至200-207,PC0-PC3接至SMA-SMD。

8279的片选信号CS接至208-20F。

在运行过程中,可按动小键盘的“0-9”数码键,控制步进电机的转速,

按“+或-”键控制步进电机的方向,按“REG”键退出。

C8279EQU20AH

D8279EQU208H

C8255EQU203H

P8255CEQU202H

CODESEGMENT

ASSUMECS:

CODE,DS:

CODE

START:

PUSHCS

POPDS

INI:

MOVDX,C8255

MOVAL,90H

OUTDX,AL;8255初始化

MOVDX,C8279

MOVAL,00H

OUTDX,AL

MOVAL,2AH

OUTDX,AL;8279初始化

MOVAL,0D1H

OUTDX,AL;关显示

WAIT1:

INAL,DX

MOVAH,AL

ANDAL,80H

JNZWAIT1;FIFO正在清除期间则跳转等待

MOVAL,AH

ANDAL,0FH

CMPAL,00H

JEWAIT1;无键按下则跳转等待

LEABX,STEP

RUN:

CALLCHKKEY

CALLDISPLAY

MOVCX,08H;步进电机控制

LOOP3:

MOVDX,P8255C

MOVAL,[SI]

OUTDX,AL

INCSI

CALLDELAY

LOOPLOOP3

JMPRUN

CHKKEYPROCNEAR

RDKEY:

MOVDX,C8279

INAL,DX

MOVAH,AL

ANDAL,80H

CMPAL,80H

JERDKEY

MOVAL,AH

ANDAL,0FH

CMPAL,00H

JERTN

MOVAL,40H

OUTDX,AL;读FIFO/传感器RAM命令

MOVDX,D8279

INAL,DX

CHK:

CMPAL,38H

JEQUIT;RST退出

CMPAL,30H;键值大于30H,为方向控制键

JNCDIRE

MOVDELAYTIME,AL

JMPRTN

DIRE:

CMPAL,32H;HERE顺时针

JNENEXT

MOVDIRDSP,40H

LEABX,STEP

JMPRTN

NEXT:

CMPAL,33H;EXEC逆时针

JNERTN

MOVDIRDSP,46H

LEABX,STEP

ADDBX,08H;逆时针控制表地址

RTN:

MOVSI,BX

RET

CHKKEYENDP

QUIT:

MOVDX,C8279

MOVAL,0D2H

OUTDX,AL

jmp$

DELAYPROCNEAR

PUSHCX

;判断键值,获得相应延时循环值

MOVAL,20H;"9"

SUBAL,DELAYTIME

JNZL1

MOVCX,04H

L1:

MOVAL,08H;"8"

SUBAL,DELAYTIME

JNZL2

MOVCX,05H

L2:

MOVAL,00H;"7"

SUBAL,DELAYTIME

JNZL3

L3:

MOVAL,21H;"6"

SUBAL,DELAYTIME

MOVCX,07H

JNZL4

MOVCX,08H

L4:

MOVAL,09H;"5"

SUBAL,DELAYTIME

JNZL5

MOVCX,09H

L5:

MOVAL,01H;"4"

SUBAL,DELAYTIME

JNZL6

MOVCX,0AH

L6:

MOVA

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

当前位置:首页 > 法律文书 > 调解书

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

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