微机原理与接口技术实验程序.docx

上传人:b****8 文档编号:9677868 上传时间:2023-02-05 格式:DOCX 页数:22 大小:20.46KB
下载 相关 举报
微机原理与接口技术实验程序.docx_第1页
第1页 / 共22页
微机原理与接口技术实验程序.docx_第2页
第2页 / 共22页
微机原理与接口技术实验程序.docx_第3页
第3页 / 共22页
微机原理与接口技术实验程序.docx_第4页
第4页 / 共22页
微机原理与接口技术实验程序.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

微机原理与接口技术实验程序.docx

《微机原理与接口技术实验程序.docx》由会员分享,可在线阅读,更多相关《微机原理与接口技术实验程序.docx(22页珍藏版)》请在冰豆网上搜索。

微机原理与接口技术实验程序.docx

微机原理与接口技术实验程序

微机原理与接口技术实验程序:

实验一:

数据传送实验,采用相对寻找方式

DDATA SEGMENT;定义源数据段

MSR   DB"HELLO,WORLD!

$"

LENEQU$-MSR

DDATA ENDS

EXDASEGMENT;定义附加数据段

MSD  DBLENDUP(?

EXDAENDS

MYSTACK SEGMENTSTACK;定义堆栈段

DW20DUP(?

MYSTACK  ENDS 

CODESEGMENT;定义代码段

ASSUMECS:

CODE,DS:

DDATA,ES:

EXDA

START:

 MOVAX,DDATA

MOV DS,AX   ;装载数据段寄存器

MOV AX,EXDA

MOV ES,AX ;装载附加数据段寄存器

MOV SI,OFFSETMSR

MOVDI,OFFSETMSD

MOV CX,LEN

MOVBX,0

NEXT:

MOVAL,MSR[BX] ;开始传输数据

MOVES:

MSD[BX],AL

INCBX

LOOP NEXT

 PUSH ES

POP  DS   ;将附加段寄存器指向的段值赋给数据段寄存器

MOV  DX,OFFSETMSD

MOV  AH,9

INT21H;显示字符串

MOV AH,4CH

INT21H;返回DOS状态

CODE  ENDS

ENDSTART

实验二:

最大值程序

DATASEGMENT

BUFFERDW200,-12,45,500,-1000

COUNTEQU($-BUFFER)/2

MAXDW?

;用于存放最大值

MES1DB‘200,-12,45,78,500,-1000’,0AH,0DH,’$’

DATAENDS

STACKSEGMENT

DB64DUP(?

TOPEQU$-STACK;计算出堆栈指针数值

STACKENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACK

BEGIN:

MOVAX,SEGDATA

MOVDS,AX

MOVAX,SEGSTACK

MOVSS,AX

MOVSP,TOP

MOVCX,COUNT

LEABX,BUFFER

MOVAX,[BX]

INCBX

INCBX

DECCX

AGAIN:

CMPAX,[BX]

JGENEXT

MOVAX,[BX]

NEXT:

INCBX

INCBX

LOOPAGAIN

MOVMAX,AX

MOVAH,9

LEADX,MES1

INT21H

QQ1:

MOVAH,1

INT16H

JZQQ1

MOVAH,4C

INT21H

CODEENDS

ENDBEGIN

字符串程序:

DATASEGMENT

STRINGDB‘abcduvwxyz’,0DH

L1DB?

CREQU0DH

DATAENDS

STACKSEGMENTPARASTACK‘STACK’

S1DB100DUP(?

STACKENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,ES:

DATA,SS:

STACK

BEGIN:

MOVEAX,DATA

MOVDS,AX

MOVES,AX

LEADI,STRING;设串的地址指针

MOVDL,0;置串长度的初值为0

MOVAL,CR;串标志送入AL

CLD;清DF=0,使地址自动增量

AGAIN:

SCASB;搜索串

JEDONE;找到结束标志,停止

INCDL;串长度加1

JMPAGAIN

DONE:

LEABX,L1

MOV[BX],DL;存串长度

MOVDH,DL;串长暂存

MOVCL,4

SHRDL,CL;取串长高4位

MOVAL,DL

CALLCHANGE;将高4位转换成ASCII码放入AL

MOVDL,AL

MOVAH,2

INT21H;显示高4位

MOVAL,DH;取暂存串长

ANDAL,0FH;取串长低4位

CALLCHANGE

MOVDL,AL

MOVAH,2

INT21H;显示串长低位

MOVDL,’H’

MOVAH,2

INT21H;显示H

MOVAH,4CH

INT21H

CHANGEPROC;过程或子程序

CMPAL,10

JLADD30;小于转

ADDAL,37H

JMPP1

ADD30:

ADDAL,30H

P1:

RET

CHANGEENDP

CODEENDS

ENDBEGIN

实验三:

1.在实验箱上设计并连接单脉冲KK1+到8254的CLK0端,8254的OUT0连接IRQ3,定义8254的计数器0为方式0,计数值为5,每当KK1+按动5次后产生中断请求,实现在屏幕上显示字符“5”。

要求:

主机按任意键停止显示返回DOS。

(必做)

IOY1EQU280H

MY8254_COUNT0EQUIOY1+00H;8254计数器0端口地址

MY8254_COUNT1EQUIOY1+01H;8254计数器1端口地址

MY8254_COUNT2EQUIOY1+02H;8254计数器2端口地址

MY8254_MODEEQUIOY1+03H;8254控制寄存器端口地址

DATASEGMENT

STR1DB'COUNT:

$';显示的字符串

DATAENDS

STACK1SEGMENTSTACK

DW256DUP(?

STACK1ENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,CS

MOVDS,AX

MOVDX,OFFSETMYISR

MOVAX,250BH

INT21H

INAL,21H

ANDAL,0f7H

OUT21H,AL

MOVAX,DATA

MOVDS,AX

MOVDX,OFFSETSTR1;显示字符串

MOVAH,9

INT21H

MOVDX,MY8254_MODE;初始化8254工作方式

MOVAL,10H;计数器0,方式0,计数值为十进制

OUTDX,AL

MOVDX,MY8254_COUNT0;装入计数初值

MOVAL,4

OUTDX,AL

STI

WAIT1:

MOVAH,1;判断是否有按键按下

INT16H

JZWAIT1;无按键则跳回继续等待,有则退出

QUIT:

INAL,21H

ORAL,08H

OUT21H,AL

MOVAX,4C00H;返回到DOS

INT21H

MYISRPROCNEAR;中断处理程序MYISR

MOVAL,35H

MOVAH,0EH

INT10H

MOVAL,20H

INT10H

MOVDX,MY8254_COUNT0;重装计数初值

MOVAL,4

OUTDX,AL

OVER:

MOVAL,20H

OUT20H,AL

IRET

MYISRENDP

CODEENDS

ENDSTART

实验四:

1.1.在实验箱上设计并连接8255,将8255的PB口和PA口分别与数码管显示电路的段选端和位选段相接,使其显示3000H、3001H、3002H和3003H单元中的数据。

要求:

主机按任意键停止显示返回DOS。

(必做)

IOY0EQU0280H;片选IOY0对应的端口始地址

MY8255_AEQUIOY0+00H;8255的A口地址

MY8255_BEQUIOY0+01H;8255的B口地址

MY8255_CEQUIOY0+02H;8255的C口地址

MY8255_MODEEQUIOY0+03H;8255的控制寄存器地址

DATASEGMENT

BUFFDB99H

DTABLEDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H

DATAENDS;键值表,0~F对应的7段数码管的段位值

STACK1SEGMENTSTACK

DW256DUP(?

STACK1ENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVSI,3000H;建立缓冲区,存放要显示的键值

MOVAL,00H;先初始化键值为0

MOV[SI],AL

MOV[SI+1],AL

MOV[SI+2],AL

MOV[SI+3],AL

MOVDX,MY8255_MODE;初始化8255工作方式

MOVAL,81H;方式0,A口、B口输出,C口低4位输入

OUTDX,AL

BEGIN:

CALLPUTBUF

CALLDISPLAY

MOVAH,1;判断PC键盘是否有按键按下

INT16H

JZBEGIN

QUIT:

MOVAX,4C00H;返回到DOS

INT21H

PUTBUFPROCNEAR;保存显示数据到缓冲区子程序

MOVSI,3003H

MOVAX,BUFF

MOVAH,AL

ANDAL,0FH

MOV[SI],AL

DECSI

MOVAL,AH

ANDAL,0F0H

MOVCL,4

SARAL,CL

MOV[SI],AL

RET

PUTBUFENDP

DISPLAYPROCNEAR;显示子程序

PUSHAX

MOVSI,3000H

MOVDL,08H

MOVAL,DL

AGAIN:

PUSHDX

MOVDX,MY8255_A

OUTDX,AL;设置X1~X4,选通一个数码管

MOVAL,[SI];取出缓冲区中存放键值

MOVBX,OFFSETDTABLE

XLAT

MOVDX,MY8255_B

OUTDX,AL;写入数码管A~Dp

CALLDALLY

INCSI;取下一个键值

POPDX

MOVAL,DL

TESTAL,01H

JNZOUT1;显示完,返回

RORAL,1

MOVDL,AL

JMPAGAIN;未显示完,跳回继续

OUT1:

POPAX

RET

DISPLAYENDP

DALLYPROCNEAR;软件延时子程序

PUSHCX

MOVCX,00FFH

D1:

MOVAX,00FFH

D2:

DECAX

JNZD2

LOOPD1

POPCX

RET

DALLYENDP

CODEENDS

ENDSTART

2.在实验箱上设计并连接,使用8255扫描4*4键盘,并将识别出的键值依次显示在4位数码管上。

要求:

主机按任意键停止显示返回DOS。

IOY0EQU288H;片选IOY0对应的端口始地址

MY8255_AEQUIOY0+00H;8255的A口地址

MY8255_BEQUIOY0+01H;8255的B口地址

MY8255_CEQUIOY0+02H;8255的C口地址

MY8255_MODEEQUIOY0+03H;8255的控制寄存器地址

DATASEGMENT

DTABLEDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,

7FH,6FH,77H,7CH,39H,5EH,79H,71H

DATAENDS;键值表,0~F对应的7段数码管的段位值

STACK1SEGMENTSTACK

DW256DUP(?

STACK1ENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVSI,3000H;建立缓冲区,存放要显示的键值

MOVAL,00H;先初始化键值为0

MOV[SI],AL

MOV[SI+1],AL

MOV[SI+2],AL

MOV[SI+3],AL

MOVDI,3003H

MOVDX,MY8255_MODE;初始化8255工作方式

MOVAL,81H;方式0,A口、B口输出,C口低4位输入

OUTDX,AL

BEGIN:

CALLDISPLAY

CALLKSCAN;扫描按键

CMPAL,0Fh

JZNKY;未发现有键按下则转

CALLKEYSET

NKY:

MOVAH,1;判断PC键盘是否有按键按下

INT16H

JZBEGIN

QUIT:

MOVAX,4C00H;返回到DOS

INT21H

DISPLAYPROCNEAR;显示子程序

PUSHAX;以缓冲区存放的键值为键值表偏移找到键值并显示

MOVSI,3000H

MOVDL,08H

MOVAL,DL

AGAIN:

PUSHDX

MOVDX,MY8255_A

OUTDX,AL;设置X1~X4,选通一个数码管

MOVAL,[SI];取出缓冲区中存放键值

MOVBX,OFFSETDTABLE

XLAT

MOVDX,MY8255_B

OUTDX,AL;写入数码管A~Dp

CALLDALLY

INCSI;取下一个键值

POPDX

MOVAL,DL

TESTAL,01H

JNZOUT1;显示完,返回

RORAL,1

MOVDL,AL

JMPAGAIN;未显示完,跳回继续

OUT1:

POPAX

RET

DISPLAYENDP

KSCANPROCNEAR;扫描是否有按键闭合子程序

MOVAL,0FH

MOVDX,MY8255_C;将4列全选通,X1~X4置0

OUTDX,AL

INAL,DX;读Y1~Y4

ANDAL,0FH;取出Y1~Y4的值

RET

KSCANENDP

KEYSETPROC

MOVAH,AL

MOVDX,MY8255_MODE

MOVAL,88h

OUTDX,AL

MOVDX,MY8255_C

MOVAL,AH

ORAL,0F0H

OUTDX,AL

INAL,DX;读列扫描值

ANDAL,0F0H

CMPAL,0F0H

JZKERR;未发现有键按下则转

MOVCL,04

SHRAL,CL

TESTAL,01H

JNZL2

MOVCL,00H

JMPR0

L2:

TESTAL,02H

JNZL3

MOVCL,04H

JMPR0

L3:

TESTAL,04H

JNZL4

MOVCL,08H

JMPR0

L4:

TESTAL,08H

JNZKERR

MOVCL,0CH

R0:

MOVAL,AH

TESTAL,01H

JNZR2

MOVAL,00H

JMPKCODE

R2:

TESTAL,02H

JNZR3

MOVAL,01H

JMPKCODE

R3:

TESTAL,04H

JNZR4

MOVAL,02H

JMPKCODE

R4:

TESTAL,08H

JNZKERR

MOVAL,03H

KCODE:

ADDAL,CL;将行的值加上当前列数,确定按键值

CALLPUTBUF;保存按键值

KON:

MOVDX,MY8255_MODE

MOVAL,81h

OUTAX,AL

MOVDX,MY8255_C

MOVAL,0FH

OUTDX,AL

INAL,DX;读行扫描值

ANDAL,0FH

CMPAL,0FH

JNZKON;按键未抬起转

KERR:

RET

KEYSETENDP

PUTBUFPROCNEAR;保存键值子程序

MOVSI,DI

MOV[SI],AL

DECDI

CMPDI,2FFFH

JNZGOBACK

MOVDI,3003H

GOBACK:

RET

PUTBUFENDP

DALLYPROCNEAR;软件延时子程序

PUSHCX

MOVCX,00FFH

D1:

MOVAX,00FFH

D2:

DECAX

JNZD2

LOOPD1

POPCX

RET

DALLYENDP

CODEENDS

ENDSTART

实验五:

1.在实验箱上设计并连接ADC0809芯片的接线,按延时方式对单通道模拟量进行A/D转换。

A/D转换结果送入PC机后,再由PC机送至DAC0832进行D/A转换,结果送至示波器,与原信号进行对比观察。

模拟信号源:

由电位器中心抽头可以得到一个可调节的直流电压0~5V。

电位器一端接地,另一端接+5V。

IOY0EQU290H

AD0809EQUIOY0;AD0809的端口地址

IOY1EQU298H

DA0832EQUIOY1;DA0832的端口地址

STACK1SEGMENTSTACK

DW256DUP(?

STACK1ENDS

DATASEGMENT

STR1DB‘AD0809:

IN0$’;定义显示的字符串

BUFFDB?

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVDX,OFFSETSTR1;显示字符串

MOVAH,9H

INT21H

LOOP1:

CALLADCON

CALLDACON

MOVAH,1;判断是否有按键按下

INT16H

JZLOOP1;无按键则跳回继续循环,有则退出

QUIT:

MOVAX,4C00H;返回到DOS

INT21H

ADCONPROC

MOVDX,AD0809;启动A/D转换

OUTDX,AL

CALLDALLY

MOVDX,AD0809;读出转换结果

INAL,DX

MOVBUFF,AL

CALLTOASCII

RET

ADCONENDP

TOASCIIPROC

MOVCH,AL;分析结果进行显示

ANDAL,0F0H

MOVCL,04H

SHRAL,CL;取出数据的十位

CMPAL,09H

JGA1

ADDAL,30H

JMPA2

A1:

ADDAL,37H;对A~F的处理

A2:

MOVDL,AL;对0~9的处理

MOVAH,02H

INT21H

MOVAL,CH

ANDAL,0FH;取出数据的各位

CMPAL,09H

JGA3 

ADDAL,30H

JMPA4

A3:

ADDAL,37H;对A~F的处理

A4:

MOVDL,AL;对0~9的处理

MOVAH,02H

INT21H

MOVDL,0DH;回车,置光标到行首

MOVAH,02H

INT21H

RET

TOASCIIENDP

DACONPROC

MOVDX,DA0832

MOVAL,BUFF

OUTDX,AL

CALLDALLY

RET

DACONEDNP

DALLYPROCNEAR;软件延时子程序

MOVCX,4000H

D1:

MOVAX,0600H

D2:

DECAX

JNZD2

LOOPD1

RET

DALLYENDP

CODEENDS

ENDSTART

 

 

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

当前位置:首页 > 高中教育 > 初中教育

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

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