微机原理实验1.docx
- 文档编号:9408557
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:35
- 大小:166.07KB
微机原理实验1.docx
《微机原理实验1.docx》由会员分享,可在线阅读,更多相关《微机原理实验1.docx(35页珍藏版)》请在冰豆网上搜索。
微机原理实验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,10100101B;南北红,东西绿
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
MO
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 实验