微机原理实验报告Word文件下载.docx

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

微机原理实验报告Word文件下载.docx

《微机原理实验报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《微机原理实验报告Word文件下载.docx(36页珍藏版)》请在冰豆网上搜索。

微机原理实验报告Word文件下载.docx

START:

MOVAX,DATA;

把数据的基地址赋给DS

MOVDS,AX

MOVDX,OFFSETSHOW;

调用DOS显示字符串

MOVAH,09H

INT21H

MOVSI,OFFSETSZ;

数组的偏移地址赋给SI

MOVCX,10;

存进数组的长度给CX

MOVDH,80H;

将数组的第一个数写进DH

NEXT:

MOVBL,[SI];

将数组的第一个数写进BL

CMPDH,BL;

比较DH和BL中数的到校

JAENEXT1;

如果DH中的数大于BL中,将跳转到NEXT1

MOVDH,BL;

如果DH中的数小于BL中,将BL中的数赋给DH

NEXT1:

INCSI;

偏移地址加1

LOOPNEXT;

循环,CX自减一直到0,DH中存数组的最大值

;

接下来的程序是将将最大值DH在屏幕上显示输出

MOVBX,02H

NEXT2:

MOVCL,4

ROLDH,CL;

将DH循环右移四位

MOVAL,DH

ANDAL,0FH;

将AL高位清零,一位一位进行ASCII码转换

CMPAL,09H;

与09H比较大小

JBENEXT3;

若小于,跳转至NEXT3,证明数值在0-9之间

ADDAL,07H;

若大于,则证明为字母,因为字母与数字的ASCII码相差7,所以要加上7

NEXT3:

ADDAL,30H;

因为转换为ASCII码要加30H

MOVDL,AL

MOVAH,2;

DOS中断显示

DECBX

JNZNEXT2

MOVDL,'

H'

MOVAH,2

CODEENDS

ENDSTART

实验结果:

、实验代码

SZDB80H,03H,5AH,0FFH,97H,64H,0BBH,7FH,0FH,0D8H;

JGENEXT1;

此为无符号数与有符号数的唯一差别,JGE是无符号数的跳转

LOOPNEXT;

循环,CX减1,一直到CX减为0,DH中存数组的最大值

接下来的程序是将最大值DH在屏幕上显示输出

ADDAL,07H;

实验结果

2、实验代码

BNUMDW0500H

DNUMDB4DUP()

MESDB'

THEBCDOF'

500H'

IS:

ASSUMECS:

DATA

MOVAX,DATA

MOVDS,AX

MOVDX,OFFSETMES;

将字符串偏移量写入DX

MOVAH,09H

INT21H

MOVAX,BNUM;

将0500H存入AX中

LEABX,DNUM;

取DNUM的偏移量

MOVDL,0

;

计算1000的个数

COUNT1:

SUBAX,03E8H;

AX-1000

JCNEXT1;

不够减,即若CF=1,有借位,转NEXT1

INCDL;

DL+1

JMPCOUNT1;

跳转AGAIN1

ADDAX,03E8H;

AX+1000

MOV[BX],DL;

将DL(即千位数)存入DNUM中

INCBX;

BX+1

MOVDL,0;

DL清零

计算100个数

COUNT2:

SUBAX,0064H;

AX-100

JCNEXT2

INCDL

JMPCOUNT2

ADDAX,0064H

将DL(即百位数)存入DNUM中

INCBX

计算10个数

COUNT3:

SUBAX,000AH;

AX-10

JCNEXT3

JMPCOUNT3

ADDAX,000AH

将DL(十位数)存入DNUM中

INCBX

MOV[BX],AL;

计算个位数

MOVCX,4;

接下来的程序是将数值转化为ASCII并在屏幕上显示

LEASI,DNUM;

取DNUM的地址偏移量

NEXT4:

MOVAL,[SI];

将DNUM中所存的各个数值转换为ASCII码;

在屏幕上输出显示

CMPAL,09H

JBENEXT5

ADDAL,07H

NEXT5:

ADDAL,30H

MOVDL,AL

MOVAH,2

INT21H

INCSI

DECCX

JNZNEXT4

ENDSTART

3、实验代码

DATASEGMENT

OUPDB'

THEASCIIOF7963IS:

'

A1DB07H,09H,06H,03H

DATAENDS

CODESEGMENT

ASSUMECS:

MOVAX,DATA

MOVDS,AX

MOVDX,OFFSETOUP

MOVAH,09H

INT21H

MOVCL,4

MOVSI,0

MOVAL,A1[SI];

将A1的第SI个数据传给AL

MOVBL,AL

ORAL,30H;

加30转换为ASCII码值

SHRAL,4

将右移后的高位清零

因为ASCII码与值之间相差30

MOVDL,AL

输出对应的ASCII码

MOVAL,BL

ANDAL,0FH

ADDAL,30H

MOVAH,02H

MOVDL,'

LOOPNEXT

EXIT:

MOVAH,4CH

CODEENDS

4、实验代码

YIDB100DUP(88H)

ERDB100DUP(00H);

定义数组

THENUMBEROFCOUNTERIS:

MAINPROCFAR

MOVAX,DATA

MOVCL,100;

计数器初值

MOVCH,00H;

转移次数统计,初值

LEASI,YI;

将内存块1的偏移量给SI

LEADI,ER;

将内存块2的偏移量给DI

MOVAL,[SI]

MOV[DI],AL;

将YI中的数据复制到ER中

INCSI

INCDI

INCCH

显示字符串

MOVAH,9

CALLCOUNT;

调用子程序

DECCL;

计数减1

JNZNEXT;

计数不为零,跳转执行

HLT

MAINENDP;

主程序结束

下面是子程序,实现屏幕显示转移次数功能

COUNTPROCNEAR;

定义子程序属性

PUSHCX;

CX进栈

MOVDH,CH

将AL高位清零

若小于,跳转至NEXT3

ADDAL,07H

加30H

显示H

MOVDL,0AH;

回车

MOVDL,0DH;

换行

POPCX;

CX出栈

RET

COUNTENDP

子程序结束

5、实验代码

INPDB'

PLEASEINPUT(a~z):

设置字符串

OUPDB'

THETRANSFORMATION(A~Z)IS:

DATAENDS

MOVDX,OFFSETINP;

显示字符串,提示输入

MOVAH,1;

DOS中断调用,从键盘中读取一个字符

PUSHAX;

AX入栈

PUSHDX

中断调用,回车

中断调用,换行

MOVDX,OFFSETOUP;

显示字符串,输出提示

INT21H

POPDX;

DX出栈

POPAX;

AX出栈

SUBAL,32;

AL减去32,使大写转化为小写

大小写之间的ASCII码值相差32

MOVDL,AL;

DOS中断显示结果

MAINENDP

6、实验代码

YIDB44H,33H,22H,99H,00H

ERDB44H,33H,22H,99H,00H;

装载数据,必须有后面00H

SUMDB5DUP()

H+H='

LEABP,YI;

在BP中装入YI的地址偏移量

LEASI,ER;

在SI中装入ER的地址偏移量

LEADI,SUM;

在DI中装入SUM的地址偏移量

MOVCX,05;

计数初值

CLC;

进位位清零

MOVAL,[BP];

将YI中的数据赋给AL

MOVAH,[SI];

将ER中的数据赋给BL

ADCAL,AH;

YI和ER中的数据带进位的相加

将相加的结果保存在SUM中

INCSI

INCBP

DECCX

结果不为零,跳转到NEXT

上面的程序已经将相加的结果存在了SUM中,下面的程序是将SUM中的结果转化为ASCII显示

MOVCH,05;

MOVDH,[DI-1];

将所得结果最高位赋给DH

DECDI

DECCH

JNZNEXT1;

循环显示SUM中的值

ENDSTART

五、分析与总结

通过实验熟练了8086的指令系统和基本的程序设计格式,实验中出现的各种

问题通过一步步的分析自行解决的过程,提高了对于各种语句、指令的运用熟练程

实验二8255可编程并行接口实验

1、掌握8255芯片结构及工作方式;

2、熟悉8255并行口扩展的编程。

1、Lab6000p实验教学系统;

2、IBM-PC机

三、系统中8255模块

Lab6000p实验箱中的8255模块连线如图所示:

AD0~AD7、A0、A1、RESET、/WR、/RD已分别连至系统总线DB0~DB7、AB0、AB1、RESET、/IOW、/IOR;

8255_CS、PA口、PB口、PC口引出留给用户连接。

四、实验内容和实验步骤

1、8255基本输入输出方式――开关控制LED显示

1)实验要求

开关拨上LED亮,开关拨下LED灭。

2)电路连接

8255_CS连至地址译码/CS0,PA口连至LED电平显示模块,PB口连至开关电路。

3)程序框图

4)程序代码

modeequ082h;

方式0,PA,PC输出,PB输入

PortAequ8000h;

PortA

PortBequ8001h;

PortB

PortCequ8002h;

PortC

CAddrequ8003h;

控制字地址

codesegment

assumecs:

code

Start:

moval,mode

movdx,CAddr

outdx,al;

输出控制字

loop1:

movdx,PortB

inal,dx

movdx,PortA

outdx,al

jmploop1

codeends

endstart

5)实验步骤

[1]在Lab6000p实验箱上完成连接电路;

[2]开启计算机电源,开启Lab6000p实验箱电源;

[3]启动WAVE6000软件;

[4]确认WAVE6000与Lab6000p连接;

[5]输入源代码;

[6]编译源代码(F9);

[7]单步运行源代码(F8),观察每条指令执行结果;

[8]连续运行程序(Ctrl+F9),上下拨动开关观察LED显示情况。

6)问题思考

[1]若8255_CS连至地址译码/CS4,程序该如何修改。

答:

只要将8255四个端口A、B、C、控制口端口号依次更改为:

0C000H,0C001H,0C002H,0C003H

[2]若PB口连至LED电平显示模块,PA口连至开关电路,程序该如何修改。

只要更改8255的方式控制字为:

H;

方式0PA输入PB、PC输出

2、8255选通输入方式――开关控制LED显示

开关上的逻辑信号在选通信号有效时读入微处理器,并送到LED显示。

2)提示

选通信号由单脉冲产生。

3)程序代码

MODEEQUB

PORTAEQU8000H

PORTBEQU8001H

PORTCEQU8002H

CADDREQU8003H

ASSUMECS:

CODE

STARTPROCNEAR

MOVDX,CADDR

MOVAL,MODE

OUTDX,AL

SCAN:

MOVDX,PORTB

INAL,DX

MOVDX,PORTA

JMPSCAN

STARTENDP

CODEENDS

ENDSTART

实验三8253可编程定时/计数器实验

1、掌握8253芯片结构及工作方式;

2、熟悉8253可编程定时/计数器的编程。

三、系统中8253模块

Lab6000p实验箱中的8253模块连线如图所示:

AD0~AD7、A0、A1、/WR、/RD已分别连至系统总线DB0~DB7、AB0、AB1、/IOW、/IOR;

三个通道的OUT、GATE、CLK以及CS引出留给用户连接。

四、实验内容和实验步骤

1、8253计数实验

5个脉冲后LED0亮。

CONTROLequ08003h

COUNT0equ08000h

COUNT1equ08001h

COUNT2equ08002h

startprocnear

moval,30h;

通道0,方式0

movdx,CONTROL

moval,4;

计数器初始值。

movdx,COUNT0

低八位

moval,0

高八位

jmp$

startendp

4)实验步骤

[7]连续运行程序(Ctrl+F9),按动单脉冲按键观察LED显示情况。

5)问题思考

[1]若CS连至地址译码/CS3,程序该如何修改。

[2]为什么定时/计数器初值赋4,5个脉冲后LED才亮。

2、8253定时实验

在LED上实现1秒钟亮/1秒钟灭。

对标准脉冲信号计数,若一个计数器位数不够2个计数器(2个通道)级连(串连)。

3)程序代码

moval,35h;

mov

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

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

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

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