微机原理实验1Word文件下载.docx
《微机原理实验1Word文件下载.docx》由会员分享,可在线阅读,更多相关《微机原理实验1Word文件下载.docx(35页珍藏版)》请在冰豆网上搜索。
减法运算
显示结果
MOVDL,0DH
MOVAH,02H
MOVDL,0AH
MOVAX,4C00H
DISPLPROCNEAR;
显示子功能
DSI:
MOVAH,02
MOVDL,[SI+BX-1];
显示字符串中一字符
DECBX;
修改偏移量
JNZDSI
RET
DISPLENDP
SUBAPROCNEAR
MOVDX,SI
MOVBP,DI
SU1:
SUBBYTEPTR[SI+BX-1],30H
SUBBYTEPTR[DI+BX-1],30H
将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;
循环
SU3:
ADDBYTEPTR[SI+BX-1],30H
ADDBYTEPTR[DI+BX-1],30H
十六进制的数字串转化ASCII码表示的数字串
JNZSU3
RET
SUBAENDP
CODEENDS
ENDSTART
实验二两个数相乘的实验
一.实验要求
实现十进制数的乘法,被乘数和乘数均以ASCII码形式存放在内存中,算式结果
在屏幕上显示出来。
二.实验目的
掌握乘法指令和循环指令的用法。
DATA1DB32H,39H,30H,35H,34H
DATA2DB34H
*'
RESULTDB6DUP(00H)
STACKSEGMENT
STADB20DUP(?
MOVSS,AX
MOVSP,TOP
LEASI,DATA1
MOVBX,05H
L1:
MOVDL,[SI+BX-1]
DECBX
JNZL1
LEASI,DATA2
MOVDL,[SI]
MOVSI,OFFSETDATA2;
显示算式
MOVBL,[SI];
乘数DATA2→BL
ANDBL,00001111B;
屏蔽高4位,ASCII码转化为十六进制数
MOVDI,OFFSETRESULT
MOVCX,05
LOOP1:
ANDAL,00001111B;
取被乘数DATA1,ASCII变十六进制数
INCSI;
指向被乘数1的下一字符单元
MULBL;
相乘
AAM;
AAM调整
ADDAL,[DI];
结果低位与前次计算的进位相加
AAA;
AAA调整
MOV[DI],AL
结果送存到下一单元
MOV[DI],AH
LOOPLOOP1;
计算结果高位进位送存
MOVCX,06
MOVSI,DI
DISPL:
ADDDL,30H
DECSI
LOOPDISPL;
MOVAX,4C00H
INT21H;
结束
CODEENDS
实验三BCD码相乘的实验
实现BCD码的乘法,要求被乘数和乘数以组合的BCD码形式存放,各占一个内
存单元,乘积存入在另外两个内存单元中,由于没有组合的BCD码乘法指令,程序中采用
将乘数1作为计算器,累加另一个乘数的方法得到计算结果。
掌握用组合的BCD码表示数据,并熟悉怎样实现组合BCD码乘法运算。
FIRSTDB99H
SECONDDB25H
THIRDDB2DUP(?
STACKSEGMENTPARASTACK'
STACK'
STAPNDB100DUP(?
TOPEQULENGTHSTAPN
STACK
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
往部分积高位送进位后调整
MOVDH,AL
DECAL
DAS;
组合BCD码减法调整
MOVBL,AL
JMPAGAIN
DONE:
LEABX,THIRD
MOV[BX],DX
LEASI,FIRST
CALLDIS
XORAX,AX
LEADX,MES1;
*
LEASI,SECOND
LEADX,MES2;
=
LEASI,THIRD
MOVAX,4C00H;
返回DOS
DISPROCNEAR;
显示子程序
MOVCL,04H
SHRAL,CL
ADDAL,30H
ANDAL,0FH
DISENDP
ENDSTART
实验一双色灯实验
一、实验要求
编写程序,以8255为输出口,控制四个双色灯按要求发光。
1.学习单板方式下扩展简单I/O接口的方法以双色灯的使用。
2.进一步学习微处理器的编程技术。
三、实验电路连线
8255的CS片选接至适配板上138译码处的200H~207H插孔。
四、实验说明
1、因为本实验是模拟交通灯控制实验,所以要先了解实际交通灯的变化规律。
假设一
个十字路口为东西南北走向。
初始状态0为东西红灯,南北红灯。
然后转状态1南北绿灯通
车,东西红灯。
过一段时间转状态2,南北绿灯闪几次转亮黄灯,延时几秒,
东西仍然红灯。
再转状态,东西绿灯通车,南北灯灯。
过一段时间转状态4,东西绿灯闪几
次转亮黄灯,延时几秒,南北仍然红灯。
最后循环至状态1。
2、双色LED是由一个红色LED管芯和一个绿色LED管芯封装在一起,公用负端。
当
红色正端加高电平,绿色正端加低电平时,红灯亮;
红色正端加低电平,绿色正端加高电平
时,绿灯亮;
两端都加高电平时,黄灯亮。
;
D1EQU10H
D2EQU200H
PBDB?
STACKSEGMENTSTACK
STADW50DUP(?
PUSHCS
POPDS
MOVDX,203H;
设置为全输出
MOVAL,80H
OUTDX,AL
MOVDX,200H
MOVAL,0ffh
OUTDX,AL;
清LED
MOVDX,200H
MOVAL,0F0H
全红
MOVBX,7fH
CALLDLY
BG:
MOVAL,01011010B;
南北绿,东西红
MOVBX,D2
MOVCX,03H
XH1:
ANDAL,0F5H;
绿灭黄亮
MOVBX,D1
ORAL,0aH;
绿亮
LOOPXH1
ORAL,0a0H;
南北黄
MOVAL,10100101B;
南北红,东西绿
MOVCX,03
XH2:
ANDAL,0FaH
ORAL,05H
LOOPXH2
ORAL,50H
JMPBG
DLYPROCNEAR
PUSHCX
DDD:
MOVCX,2ffH
CCC:
LOOPCCC
DECBX
CMPBX,0
JNEDDD
POPCX
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键则返回监控。
CODE,SS:
设置为b口输入,c口输出
MOVAL,92H
OUTDX,AL
BG:
MOVDX,201H;
将b口状态从c口输出
INAL,DX
MOVDX,202h
实验五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;
扫描频率
code
pushcs
popds
calldelay
MOVDX,Z8279
MOVAL,LEDMOD
MOVAL,LEDFEQ
MOVCX,06H
XZ:
MOVDX,D8279
MOVAL,00H
LOOPXZ
MOVDX,D8279
MOVAL,5eH
MOVAL,77H
以上为写(AD)
NOP
bg:
movdx,208h
moval,0
outdx,al
inal,dx
movcl,04h
roral,cl
andal,0fh
pushax
movdx,z8279
moval,81h
outdx,al
popax
LEABX,LED
XLAT
MOVDX,D8279;
将AL中内容写到数码管上
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
ENDSTART
实验六D/A转换实验
编写程序,使D/A转换模块循环输出三角波和锯齿波。
1.掌握DAC0832芯片的性能、使用方法及对应硬件电路。
2.了解D/A转换的基本原理。
DAC0832的片选CS孔接译码处208-20F插孔(注:
0832旁的短路帽应下插,做51实验时应上插)。
D/A转换是量转化成模拟量的过程,本实验输出为模拟电压信号,本次实验生成的波形
较为简单,有兴趣者可试编程序生成各种波形,如方波,正弦波等,也可与键盘显示模块结
合起来,构成一个简单的波形发生器,通过键盘输入各种参数,如频率,振幅(小于+5V),
方波的占空比等。
code,SS:
MOVDX,208H;
锯齿波
MOVCX,07ffH
BB:
ADDAL,01
CMPAL,00H
JNZBB
LOOPBB
EE:
ADDAL,01H
CMPAL,0FFH
JNEEE
FF:
SUBAL,01H
JNEFF
LOOPEE
实验九步进电机驱动实验
利用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
ASSUMECS:
CODE
START:
PUSHCS
INI:
MOVDX,C8255
MOVAL,90H
8255初始化
MOVDX,C8279
MOVAL,2AH
8279初始化
MOVAL,0D1H
关显示
WAIT1:
INAL,DX
MOVAH,AL
ANDAL,80H
JNZWAIT1;
FIFO正在清除期间则跳转等待
MOVAL,AH
JEWAIT1;
无键按下则跳转等待
LEABX,STEP
RUN:
CALLCHKKEY
CALLDISPLAY
MOVCX,08H;
步进电机控制
LOOP3:
MOVDX,P8255C
CALLDELAY
LOOPLOOP3
JMPRUN
CHKKEYPROCNEAR
RDKEY:
MOVDX,C8279
ANDAL,80H
CMPAL,80H
JERDKEY
JERTN
MOVAL,40H
读FIFO/传感器RAM命令
CHK:
CMPAL,38H
JEQUIT;
RST退出
CMPAL,30H;
键值大于30H,为方向控制键
JNCDIRE
MOVDELAYTIME,AL
JMPRTN
DIRE:
CMPAL,32H;
HERE顺时针
JNENEXT
MOVDIRDSP,40H
LEABX,STEP
NEXT:
CMPAL,33H;
EXEC逆时针
JNERTN
MOVDIRDSP,46H
ADDBX,08H;
逆时针控制表地址
RTN:
MOVSI,BX
CHKKEYENDP
QUIT:
MOVAL,0D2H
jmp$
DELAYPROCNEAR
;
判断键值,获得相应延时循环值
MOVAL,20H;
"
9"
?
SUBAL,DELAYTIME
MOVCX,04H
MOVAL,08H;
8"
JNZL2
MOVCX,05H
L2:
MOVAL,00H;
7"
JNZL3
L3:
MOVAL,21H;
6"
MOVCX,07H
JNZL4
MOVCX,08H
L4:
MOVAL,09H;
5"
JNZL5
MOVCX,09H
L5:
MOVAL,01H;
4"
JNZL6
MO