微机原理实验实验指导书.docx
- 文档编号:13591714
- 上传时间:2023-06-15
- 格式:DOCX
- 页数:40
- 大小:281.35KB
微机原理实验实验指导书.docx
《微机原理实验实验指导书.docx》由会员分享,可在线阅读,更多相关《微机原理实验实验指导书.docx(40页珍藏版)》请在冰点文库上搜索。
微机原理实验实验指导书
微型计算机原理与接口技术
实验指导书
王会海邓宏贵编
2006年10月
实验一数学表达式计算
一、实验目的
(1)掌握算术运算指令的应用方法;
(2)理解计算机中除法溢出的含义。
二、实验内容
(1)设W、X、Y、Z均为16位带符号数;
(2)要求计算表达式(W-(X*Y+Z-220))/X;
(3)将表达式的商和余数存入数据区RESULT单元开始的区域中。
三、编程思路
该题目要求掌握乘除法运算中带符号数和无符号数运算的区别。
为了实现指定功能,应从一下几个方面考虑:
(1)带符号数的乘除法运算应选用的指令;
(2)乘除法运算中操作数的长度问题;
(3)带符号数的扩展问题。
四、程序框图
本题的设计思路如图1所示。
五、参考程序清单
DATASEGMENT
WDW-304
XDW1000
YDW-12
ZDW20
RESULTDW2DUP(?
)
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
图1实验一程序框图
START:
MOVAX,DATA
MOVDS,AX
MOVAX,X;被乘数X取到AX中
IMULY;计算X*Y
MOVCX,AX
MOVBX,DX;X*Y转到BX、CX
MOVAX,Z;Z取到AX中
CWD;Z扩展到DX、AX中
ADDCX,AX
ADCBX,DX;计算X*Y+Z
SUBBX,220;计算X*Y+Z-220
SBBBX,0
MOVAX,W;W取到AX中
CWD;扩展DX、AX中
SUBAX,CX
SBBDX,BX;计算W-(X*Y+Z-220)
IDIVX;计算(W-(X*Y+Z-220))/X
MOVRESULT,AX
MOVRESULT+2,DX;送结果
MOVAH,4CH
INT21H;返回DOS
CODEENDS
ENDSTART
四、思考题
(1)在进行除法运算时,如何扩展被除数?
(2)本程序在运算时,数据定义应注意什么问题?
参考上述程序,试设计程序,其功能试:
内存中连续存放着两个无符号字节数序列VAL1i和VAL2i,求有符号字序列VAL3i,VAL3i=(VAL2i+VAL1i)/2,VAL3i是顺序存放的字序列。
其中,i为0~9的十进制数字。
实验二数据串压缩程序设计
一、实验目的
(1)掌握汇编语言中数组的操作方法以及串操作指令的应用。
(2)掌握汇编语言中双重循环的编程技巧。
二、实验内容
在数据段中有一个数据存储区,该存储区中存有若干个字节数据,存储的是10个阿拉伯数字字符。
要求编写程序实现数据串的压缩,具体要求是:
(1)、对于连续出现的数字字符压缩成3个字节,第一个字节存储E5H,第二个字节存储该字符的值,第三个字节存储这些字符出现的次数。
(2)、字符仅连续出现一次,则不压缩,直接放到压缩数据区中相应的位置。
(3)、开辟新的数据缓冲区存放压缩后的数据。
三、编程思路
该题目要求掌握双重循环设计方法。
为了实现数据串压缩功能,应从以下几个方面考虑:
(1)选择一种合适的算法,搜索字符串,并能计算出字符出现的次数。
(2)确定寻找字符串使用的指令。
(3)确定操作过程中使用的数据指针。
(4)确定双重循环程序的结构。
四、程序框图
本题的设计思路参见图2所示。
图2实验二程序框图
五.参考程序清单
DATASEGMENT
BUFDB‘1111111110000000000022222222333333333333333333’
DB‘3222222225555555555556777777777777774444444449’
CNEQU¥-BUF
SECDBCNDUP(?
)
DATAENDS;数据定义
STACKSEGMENTSTACK
DB100DUP(?
)
STACKENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACK,ES:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVES,AX;段寄存器初始化
MOVCX,CN;外循环的循环次数送CX
MOVDI,OFFSETBUF;DI指向源数据串首单元
MOVSI,OFFSETSEC;SI指向压缩数据串首单元
CLD;DF清0
LPI:
MOVAL,[DI];取数据串中一个字节送AL
INCDI;源数据串指针指向下一个单元
MOVBX,CX;CX暂存到BX中
REPZSCASB;在源数据串中搜索和AL中内容不同的字节
SUBBX,CX;计算AL中内容重复出现的次数
CMPBX,1
JZNEXT;出现依次转NEXT
MOVDL,0E5H;否则进行数据压缩
MOV[SI],DL;E5H送第1个字节
INCSI
MOV[SI],AL;重复出现字符送死2个字节
INCSI
MOV[SI],BL;重复出现次数送第3个字节
INCSI
JMPEXIT;转EXIT
NEXT:
MOV[SI],AL;出现依次的数据直接送压缩串
EXIT:
DECDI;调整源数据串指针
CMPCX,0
JNZLP1;CX中内容不为0转LP1
MOVAH,4CH
INT21H;返回DOS
CODEENDS
ENDSTART
六、思考题
(1)参考上述程序,试设计程序,其功能是:
在TEXT开始的内存中存有一段英文文章,以CTRL—Z结束(ASCII码为1AH)。
现要求在其中找出单词byte,并全部替换成word。
(2)试设计程序,其功能是:
在NUM开始的内存中存有一系列无符号字节数据,删除其中的0,后面的数据依次前移。
实验三统计字符出现次数的程序设计
一、实验目的
(1)掌握汇编语言中数组的操作方法以及串操作指令的应用。
(2)掌握汇编语言中双重循环的编程技巧。
二、实验内容
(1)在数据段中有一个数据存储区,该存储区中存有若干个字节的数据。
(2)要求编写程序统计数据串中0出现的次数并送到另一个内存单元中。
三、编程思路
该题目要求掌握双重循环程序设计方法。
为了实现数据串搜索并能统计“0”出现的次数,应从以下几个方面考虑:
(1)选择一种合适的算法,搜索字符串,并能计算字符出现的次数。
(2)确定选找字符串使用的指令。
(3)确定操作过程中使用的数据指针。
(4)缺点双重循环程序的结构。
四、程序框图
本题的设计思路参见图3所示。
图3实验三程序框图
五、参考程序清淡
DATASEGMENT
STRDB1,2,0,0,3,4,5,0,6,7,0,9,0,1,7,0
CNEQU¥-STR
COUNTDB?
DATAENDS;数据定义
STACKSEGMENTSTACK
DB100DUP(?
)
STACKENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACK,ES:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVES,AX;段寄存器初始化
MOVSI,OFFSETSTR;SI指向数据串首单元
MOVAL,0;搜索内容0送AL中
MOVDL,0;计数器送初值0
MOVCX,CN;循环次数送CX中
LP:
REPNZSCASB;在数据串中搜索0
JNZEXIT;未找到,转EXIT
INCDL;找到计数器加1
EXIT:
CMPCX,0
JNZLP;否则计数结果送COUNT单元
MOVAH,4CH
INT21H;返回DOS
CODEENDS
ENDSTART
六、思考题
(1)在数据段VALUE单元存储一个十进制数,设计程序统计其中有多少个二进制位为1,统计结果放在附加段中的COUNTER单元。
(2)若在数据段VALUE开始的单元存储若干十进制数,统计各个数中有多少个二进制位为1的程序该如何设计?
统计结果放在附加段中以COUNTER为首地质的若干单元中。
实验四键盘处理程序设计
一、实验目的
(1)了解小写字母和大写字母在计算机内的表示方法,并学习如何转换。
(2)掌握DOS系统功能调用中01H、09H号调用的用法。
(3)掌握多分支和循环程序嵌套使用的编程方法。
二、实验内容
(1)接受键盘输入的字符。
(2)将其中的小写字母变为大写字母,存放到输入缓冲区中。
(3)遇到回车符表示本次输入结束。
(4)^C表示程序结束。
三、编程思路
该题目要求将输入的小写字母转换为大写字母,以回车表示本次输入的结束,然后继续下一个字符串的输入,以^C结束程序。
通过DOS系统功能调用的01H号功能接受的是相应按键的ASCII码,因此首先需要判断输入的字符是否为^C键,若是结束程序;否则接着判断是否为回车键,是回车键则转下一个字符串的输入;如果不是回车键,则判断输入的字符是否为小写字母,若是则转换为大写字母,然后把字符存入字符缓冲区,准备接受下一个字符。
程序结束前显示转换后的结果。
四、程序框图
本题的设计思路参见图4所示
Y
N
Y
N
Y
N
图4实验四程序框图
五、参考程序清单
CRLFMACRO
MOVDL,0AH
MOVAH,02H
INT21H
MOVDL,0DH
INT21H
ENDM
DATASEGMENT
BUFDB80DUP(?
)
DATAENDS
STACKSEGMENTSTACK
DB100DUP(?
)
STACKENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACK,ES:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVES,AX;段寄存器初始化
MOVBX,OFFSTEBUF;BX指向字符缓冲区首单元
LP:
MOVSI,0;SI中送偏移量0
LP1:
MOVAH,01H
INT21H;接受键盘输入的按键指
CMPAL,03H
JZEXIT;若是^C,则转程序结束位置
CMPAL,0DH
JZNEXT1;若是回车键,则转NEXT1
CMPAL,61H
JBNEXT
CMPAL,7AH
JANEXT;接收按键不是小写字母转NEXT
SUBAL,20H;否则按键ASCⅡ码减20H
NEXT:
MOV[BX+SI],AL;AL中内容送字符缓冲区
INCSI;指针调整
JMPLPI;转LPI处接收下一个字节
NEXT:
MOV[BX+SI],AL
MOVAL,0AH;字符串结尾送换行符
MOV[BX+SI+1],AL
MOVAL,’$’;然后送$
MOV[BX+SI+2],AL
CRLF;显示回车行
MOVDX,BX
MOVAH,09H
INT21H;显示输入的字符串
JMPLP;转LPI处接受下一个字符串
EXIT:
MOVAH,4CH
INT21H;程序结束
CODEENDS
ENDSTART
六、思考题
在进行输入数据过程中,通过DOS系统功能调用的01H号功能接受相应按键的ASCⅡ码,若采用BIOS功能调用该如何实现?
实验五画图程序设计
一、实验目的
(1)了解PC机显示模式的分类及特点。
(2)掌握利用汇编语言在图形方式下的编程方法。
二、实验内容
编写程序,使PC机在中分辨率下(模式4)显示一个等腰三角形。
三、题目分析
(1)对于图形设计程序设计,首先应通过BIOSINT10H调用。
将屏幕的工作方法方式设置为图形方式。
其次选择合适的INT10H功能调用实现绘画。
(2)本题绘制三角形,只要用写像素子程序画出三条直线,就可画出三角形。
关键是三条线的坐标要确定好。
四、程序框图
本题设计思路参见图5所示。
图5实验五程序框图
五、程序清单
DATASEGMENT
MESSDB‘Triangle’,0DH,’$’
CNEQU$-MESS
MESS1DB‘(0,0)’0AH,0DH,’$’
MESS2DB‘(0,100)’0AH,0DH,’$’
MESS3DB‘(100,0)’,0AH,0DH,’$’
F_ALDB?
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDA,AX;程序初始化
MOVAH,0FH
INT10H;取当前显示方式
MOVBYTEPTRF_AL,AL;保存当前显示方式
MOVAH,0
MOVAL,4
INT10H;设置新的显示方式(模式4)
MOVDX,60
MOVCX,100
DONE1:
MOVAH,0CH
MOVAL,02H
INT10H;画三角形斜边
INCCX
INCDX
CMPDX,140
JNZDONE1
MOVDX,140
MOVCX,180
DONE2:
MOVAH,0CH
MOVAL,2
INT10H;画三角形的一条边
DECCX
CMPCX,99
JNZDONE2
MOVDX,60
MOVCX,100
DONE3:
MOVAH,0CH
MOVAL,02H
INT10H;画三角形的另一条边
INCDX
CMPDX,140
JNZDONE3
MOVAH,02H
MOVDH,19
MOVDL,13
INT10H
MOVDI,OFFSETMESS
MOVCX,CN
LOP:
MOVAH,0EH
MOVAL,[DI]
INCDI
MOVBL,3
INT10H
LOOPLOP;显示“Triangle”
MOVDH,17
MOVDL,7
MOVBX,OFFSETMESS1
CALLDISP
MOVDH,7
MOVDL,5
MOVBX,OFFSETMESS2
CALLDISP
MOVDH,17
MOVDL,23
MOVBX,OFFSETMESS3
CALLDISP
LOP1:
MOVAH,06H
MOVDL,0FFH
INT21H;是否有键按下
JNZOVER
JMPLOP1
OVER:
MOVAH,0
MOVAL,F_AL
INT10H;恢复原显示模式
MOVAH,4CH
INT21H;返回DOS
DISPPROCNEAR
MOVAH,02H
INT10H
MOVAH,09H
MOVDX,BX
INT21H;显示坐标值
RET
DISPENDP
CODEENDS
ENDSTART
六、思考题
用直接写屏的方式,画出一个蓝色背景的黄色矩形。
提示:
直接写屏就是将要显示字符的ASCII码及其属性放置在显示存储器中,在运行程序时对显示存储器中的内容直接显示。
单色显卡只能显示字符,其屏幕被划分成80列25行(编号从0开始),显卡就是在这2000个网络位置(每个网格位置就是一个像素)上显示字符。
每个像素点及其属性都在显示存储器中相应的位置进行存储。
每个字符的ASCII码及其属性共需要两个字节表示,单色屏幕有2000个字符位置,所以单色显示存储器容量为4KB,位于段地址为B000获得区域,偏移地址从0到0F9FH。
在文本方式下彩色显卡和单色显卡类似,只是字符颜色属性更丰富,彩色显示存储器位于段地址为B800H的区域。
实验六双色灯实验
一.实验要求
编写程序,以8255作为输出口,控制4个双色LED灯(可发红,绿,黄光)红绿交替闪亮。
二.实验目的
1.学习单板方式下扩展简单I/O接口的方法以及双色灯的使用。
2.进一步学习微处理器的编程技术。
三.实验电路及连线
将DG1~DG4,DR1~DR4用导线连至8255的PC0~PC7,8255的CS片选接至138译码处的200H~207插孔。
四.实验说明
1.双色led是由一个红色LED管芯和一个绿色LED管芯封装在一起,公用负端。
当红色正端加高电平,绿色正端加低电平时,红灯亮;红色正端加低电平,绿色正端加高电平时,绿灯亮;两端都加高电平时,黄灯亮。
2.本实验要求8255工作于方式0,四个双色灯红绿交替闪亮。
五、示例程序
D1EQU10H
D2EQU200H
DATASEGMENT
PBDB?
DATAENDS
STACKSEGMENTSTACK
STADW50DUP(?
)
TOPEQULENGTHSTA
STACKENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
PUSHCS
POPDS
MOVDX,203H;设置为全输出
MOVAL,80H
OUTDX,AL
MOVDX,202H
MOVAL,00
OUTDX,AL;清LED
MOVDX,202H;全红
MOVAL,0F0H
OUTDX,AL
MOVBX,7fH
CALLDLY
BG:
MOVAL,01101001B;南北绿,东西红
OUTDX,AL
MOVBX,D2
CALLDLY
MOVCX,03H
XH1:
ANDAL,0F6H;绿灭
OUTDX,AL
MOVBX,D1
CALLDLY
ORAL,09H;绿亮
OUTDX,AL
MOVBX,D1
CALLDLY
LOOPXH1
ORAL,90H;南北黄
OUTDX,AL
MOVBX,D1
CALLDLY
MOVBX,D1
CALLDLY
MOVAL,10010110B;南北红,东西绿
OUTDX,AL
MOVBX,D2
CALLDLY
MOVCX,03
XH2:
ANDAL,0F9H
OUTDX,AL
MOVBX,D1
CALLDLY
ORAL,06H
OUTDX,AL
MOVBX,D1
CALLDLY
LOOPXH2
ORAL,60H
OUTDX,AL
MOVBX,D1
CALLDLY
MOVBX,D1
CALLDLY
JMPBG
DLYPROCNEAR
PUSHCX
DDD:
MOVCX,0FFFH
CCC:
LOOPCCC
DECBX
CMPBX,0
JNEDDD
POPCX
RET
DLYENDP
CODEENDS
ENDSTART
实验七开关状态显示实验
一.实验要求
编写程序,设定8255的PA口为开关量输入,PC口为开关量输出,要求能随时将PA口的开关状态通过PC口的发光二极管显示出来。
二.实验目的
学习使用8255各个口的不同工作方式。
三.实验电路及连线
四.实验说明
本实验要求8255工作于方式0,PA口设置为输入,PC口设置为输出,输入量为开关量,通过8255可实时显示在LED灯上。
按下HALT或RST键则返回监控。
五.示例程序
DATASEGMENT
DATAENDS
STACKSEGMENTSTACK
STADW50DUP(?
)
TOPEQULENGTHSTA
STACKENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,ES:
DATA,SS:
STACK
START:
MOVDX,203H;设置为A口输入,B口输出
MOVAL,90H
OUTDX,AL
BG:
MOVDX,200H;将A口状态从B口输出
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
;MOVBL,AL;查表,将键码
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 实验 指导书