好好学习,天天向上,一流范文网欢迎您!
当前位置:首页 >> 最新范文 内容页

微机原理实验报告-两个多位十进制数相加的实验等

微机原理实验报告-两个多位十进制数相加的实验等 本文关键词:实验,相加,微机,多位,原理

微机原理实验报告-两个多位十进制数相加的实验等 本文简介:微机原理实验报告班级:学号:姓名:实验一两个多位十进制数相加的实验一、实验目的学习数据传送和算术运算指令的用法熟悉在PC机上建立、汇编、链接、调试和运行汇编语言程序的过程。二、实验内容将两个多位十进制数相加,要求被加数和加数均以ASCII码形式各自顺序存放在以DATA1、DATA2为首的5个内存单元

微机原理实验报告-两个多位十进制数相加的实验等 本文内容:

微机原理实验报告

班级:

学号:

姓名:

实验一

两个多位十进制数相加的实验

一、实验目的

学习数据传送和算术运算指令的用法

熟悉在PC机上建立、汇编、链接、调试和运行汇编语言程序的过程。

二、实验内容

将两个多位十进制数相加,要求被加数和加数均以ASCII码形式各自顺序存放在以DATA1、DATA2为首的5个内存单元中(低位在前),结果送回DATA1处。

三、程序流程图

3-1

四、参考程序清单

DATA

SEGMENT

DATA1

DB

33H,39H,31H,37H,34H;被加数

DATA1END

EQU

$-1

DATA2

DB

34H,35H,30H,38H,32H;加数

DATA2ENDEQU

$-1

SUM

DB

5

DUP(?)

DATA

ENDS

STACK

SEGMENT

STA

DB

20

DUP(?)

TOP

EQU

LENGTH

STA

STACK

ENDS

CODE

SEGMENT

ASSUME

CS:CODE,DS:DATA,SS:STACK,ES:DATA

START:

MOV

AX,DATA

MOV

DS,AX

MOV

AX,STACK

MOV

SS,AX

MOV

AX,TOP

MOV

SP,AX

MOVSI,OFFSET

DATA1END

MOVDI,OFFSET

DATA2END

CALLADDA

MOVAX,4C00H

INT21H

ADDAPROCNEAR

MOVDX,SI

MOVBP,DI

MOVBX,05H

AD1:

SUBBYTE

PTR

[SI],30H

SUBBYTE

PTR

[DI],30H

DECSI

DECDI

DECBX

JNZAD1

MOVSI,DX

MOVDI,BP

MOVCX,05H

CLC

AD2:MOVAL,[SI]

MOVBL,[DI]

ADCAL,BL

AAA

MOV[SI],AL

DECSI

DECDI

LOOPAD2

MOVSI,DX

MOV

DI,BP

MOVBX,05H

AD3:

ADDBYTE

PTR

[SI],30H

ADDBYTE

PTR

[DI],30H

DECSI

DECDI

DECBX

JNZAD3

RET

ADDAENDP

CODEENDS

ENDSTART

五、实验结果分析

我们计算的结果是:84256

他们结果是一样的。

六、实验心得

通过这次课程使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。

实验二

排序实验

一、实验目的

掌握用汇编语言编写排序程序的思路和方法。

巩固在PC机上建立、汇编、链接、调试和运行汇编语言程序的过程。

二、实验内容

将指定内存出开始的数据(最多为4位数)按从大到小的顺序排列。第一个数字表示数据的个数(不是要比较的数值!!!)。

三、程序流程图

3-2

四、程序清单

DATA

SEGMENT

ADDR

DW

8,234,35,67,876,54,39,765,237

DATA

ENDS

STACK

SEGMENT

STA

DW

32

DUP(?)

TOP

DW

?

STACK

ENDS

CODE

SEGMENT

ASSUME

CS:CODE,DS:DATA,ES:DATA,SS:STACK

START:

MOV

AX,DATA

MOV

DS,AX

MOV

ES,AX

MOVAX,STACK

MOVSS,AX

MOV

SP,TOP

MOVCX,WORD

PTR

ADDR[0]

DEC

CX

LOOP1:

MOVDI,CX

MOV

BX,2

LOOP2:

MOV

AX,WORD

PTR

ADDR[BX]

CMP

AX,WORD

PTR

ADDR[BX+2]

JGE

CCC

XCHG

AX,WORD

PTR

ADDR[BX+2]

MOV

WORD

PTR

ADDR[BX],AX

CCC:

ADD

BX,2

LOOP

LOOP2

MOV

CX,DI

LOOP

LOOP1

EXIT:

MOV

AX,4C00H

INT

21H

CODE

ENDS

END

START

五、实验结果分析

六、实验心得

通过这次的实验,对于微机实验我渐入佳境,开始逐步了解了他的结构和调试的方法。但是对于它中间的过程还是不太熟悉,还需要自己努力的学习,增加自己的知识含量,也希望自己越来越好。

实验三

自编程序上机调试一

一、实验目的

掌握用汇编语言编写程序的思路和方法。

巩固在PC机上建立、汇编、链接、调试和运行汇编语言程序的过程。

二、实验内容

选课本或作业题中题目上机调试。

用乘法指令实现32位二进制数与16位二进制数相乘。

首先把被乘数第八位和高八位分别与乘数相乘,高八位乘得结果左移16位与第八位乘得结果相加即为结果。

三、程序框图

程序入口

低16位相乘

高16位相乘

对应项相加

程序出口

四、程序源代码

DATA

SEGMENT

DATAX

DW

1001H,2001H

DATAY

DW

2001H

DATA

ENDS

CODE

SEGMENT

ASSUME

CS:CODE,DS:DATA

START:

MOV

AX,DATA

MOV

DS,AX

MOV

BX,1000H

MOV

SI,OFFSET

DATAX

MOV

DI,DATAY

MOV

AX,[SI]

MUL

DI

MOV

[BX],AX

MOV

[BX+2],DX

MOV

AX,[SI+2]

MUL

DI

ADD

[BX+2],AX

]

ADD

[BX+4],DX

MOV

AH,4CH

INT

21H

CODE

ENDS

END

START

五、实验结果

运行:结果在DS:1000中

六、实验心得

这是自己第一次写,开始写不出来,只能去翻阅课本或上网查阅资料,希望能从中获得一些帮助,最后看到了这个题目,于是自己就编了一个自己尝试,可惜程序缺点很多,最后去网上仔细的研究,才敲定了这个实验。

实验四

自编程序上机调试二

一、实验目的

掌握用汇编语言编写程序的思路和方法。

巩固在PC机上建立、汇编、链接、调试和运行汇编语言程序的过程。

二、实验内容

选课本或作业题中题目上机调试。

设有两个8个字节长的BCD码数据BCD1及BCD2。BCD1数以1000H为首地址在内存中顺序存放;BCD2数以2000H为首地址在内存中顺序存放。要求相加后结果顺序存放在以2000H为首地址的内存区中(设结果BCD数仍不超过8个字节长)。

三、程序流程图

四、程序源代码

DATAS

SEGMENT

ORG

1000H

BCD1

DB

01H,02H,03H,04H,05H,06H,07H,88H

BCD2

DB

11H,12H,13H,14H,15H,16H,17H,18H

DATAS

ENDS

CODES

SEGMENT

ASSUME

CS:CODES,DS:DATAS

START:

MOV

AX,DATAS

MOV

DS,AX

MOV

BX,0

MOV

CX,8

CLC

AGAIN:MOV

AL,[BX+1000H]

ADC

[BX+2000H],AL

DAA

INC

BX

LOOP

AGAIN

MOV

AH,4CH

INT

21H

CODES

ENDS

END

START

五、实验结果

运行:

BCD1

DB

01H,02H,03H,04H,05H,06H,07H,88H

BCD2

DB

11H,12H,13H,14H,15H,16H,17H,18H

结果如上:DS:2000H为首地址的连续八个字节单元中

六、实验心得

考虑两个8个字节长的BCD码相加,首先根据地址要求将数据放在对应的地址单元中,然后做加法,BCD码相加要用到调整指令,结果才为正确的BCD数。实验中要有全局观念,这样才能更好地做好这件事。

实验五

8255并行I/O口实验

一、实验要求

利用8255可编程并行口芯片,实现输入/输出实验,实验中用8255PA口作输入,PB口作输出。

二、实验目的

1、了解8255芯片结构及编程方法。

2、了解8255输入/输出实验方法。

三、预备知识

8255是Intel公司生产的与Intel8080/8085系列的MPU配套的可编程外围接口电路,简称PPI。它有A、B、C三个八位端口寄存器,通过24位端口线与外部设备相连,基中C口可分为上半部和下半部。这24根端口线全部为双向三态。三个端口可分二组来使用,可分别工作于三种不同的工作方式。

四、实验原理图及连线

1、本实验主要用到的模块:8255模块、开关量输出模块、0-1指示模块、实验译码单元等;

2、PA0-PA7分别接开关量输出模块S0-S7对应的插座;

3、PB0-PB7分别接0-1指示模块DO71-DO78对应的插座;

4、8255A的片选/CS接地址译码单元的2A0-2A7;

5、数据线XD0—XD7接系统数据线区的任一插座。

3-3

五、实验内容

将实验的线路连接好后,编程,将8255的A口作为输入,输入信号由8个逻辑电平开关提供,B口作为输出,其内容由发光二极管来显示。

六、程序清单

L8255_CMD

EQU

2A3H

L8255_PA

EQU

2A0H

L8255_PB

EQU

2A1H

L8255_PC

EQU

2A2H

CODE

SEGMENT

ASSUME

CS:CODE,DS:CODE

BEGIN:

MOV

CX,0FFH

AA:

LOOP

AA

MOV

DX,L8255_CMD

MOV

AL,9CH

;10011000

OUT

DX,AL

NOP

NOP

NOP

NOP

NOP

BB:

MOV

DX,L8255_PA

IN

AL,DX

XOR

AL,0FFH

MOV

DX,L8255_PB

OUT

DX,AL

JMP

BB

CODE

ENDS

END

BEGIN

七、程序框图

开始

延时

置8255工作方式

读8255PA口

置8255PB口

见图3-4。

3-4

八、实验步骤

1、参照图中的内容连好线;

2、运行上位机软件,装载并运行相应程序即可(联机请参考程序8255.asm)。

注意:同学们自己编写程序时,8255的/CS连线可以接地址译码单元的其他信号,其它连线相同。如果用的端口与本实验不一样,也可以改变IO口的连线。

九、仪器配置

ZY15MicInt12BB微机原理及接口实验箱

一台。

十、实验现象

当读到某个开关处于高电平时,对应的发光二极管就会亮。

十一、思考题

根据程序列出实验中8255的各个端口的地址,如果8255的/CS改接译码信号280H,其它信号不变,那么对应的端口地址又是多少?

回答:8255命令口—2A3H,PA口—2A0H,PB口—2A1H,PC口—2A2H;

8255的/CS改接译码信号280H后,对应的端口地址为:

8255命令口—283H,PA口—280H,PB口—281H,PC口—282H。

十一、实验结果分析

按照实验指导连接电路之后将所有的开关都置于低电平,然后就所有的指示灯都没有亮了,观察开关置高电平这个动作所代表的代码进入AL,然后跟ff进行异或运算,运算后低电平时指示灯亮。所以开关需要置高电平,如果置低电平的话,指示灯熄灭。

12、

实验心得体会

本次实验是第一次把编程应用到实践中。首先,我们必须要了解硬件工作方式,包括芯片的各引脚的作用,还有他与CPU的链接方式,只有我们搞懂这些东西我才可以对它编程。在电路链接前,应该关掉硬件电源,然后再打开电源等准备好了后,在链接程序,编译,调试等,但是我们第一次做这次实验不知什么原因,就是程序装载不进去,最后无功而返,到了第二次来做下个实验成功后,这实验也随之而做出来了,我们仔细的考虑了一下,应该是我们上次的试验箱存在某些问题,但以我们现在的水平也检测不出来,只能等我们将来看是否有机会来修复这些试验箱。

实验六

ADC0809A/D转换实验

一、实验目的

1、加深理解逐次逼近法模数转换器的特征和工作原理;

2、掌握A/D转换芯片与8088/86的接口方法;

3、了解A/D芯片ADC0809转换性能及编程方法。

二、预备知识

A/D转换器大致有三类:一是双积分A/D转换器,优点是精度高,抗干扰性好;价格便宜,但速度慢;二是逐次逼近A/D转换器,精度,速度,价格适中;三是并行A/D转换器,速度快,价格也昂贵。

实验用的ADC0809属第二类,是八位A/D转换器。每采集一次一般需100us。本程序是用延时查询方式读入A/D转换结果,也可以用中断方式读入结果,在中断方式下,A/D转换结束后会自动产生EOC信号,做为转换完成的信号。

三、实验原理说明及连线

1、本实验的位置在实验箱的“ADC0809模块”;

2、本实验用芯片ADC0809的片选地址为2B8H,实验箱上已固定好,不需要再连线;

3、将该实验模块的CLOCK和“信号源模块”的1MHz信号连接起来;

4、用排线将“系统数据总线输出单元”中的任意一组数据线和本实验模块的“ADC0809:XD0-XD7”连接起来;

5、将通道0模拟量输入端IN0接模拟信号产生电路模块中的电位器R093的中心抽头,然后将R093的两端一端接地,另一端接VCC(+5V)。

3-8

四、实验内容

利用电位器输出一个幅值可调的直流电压信号,送入ADC0809的通道0,将转换后的结果在屏幕上显示出来,并验证它与输入电压的关系。

五、实验步骤

1、确认连接好线路;

2、装载运行程序。

六、实验框图

3-9

七、仪器配置

ZY15MicInt12BB微机原理及接口实验箱

一台

八、实验现象

当用户扭动电阻器时,屏幕将显示相应的数值。

九、思考题

按图中的连接线路,输入一个3V的模拟信号,输出的数字信号的理论值是多少,在实验箱上验证该值的正确性。

回答:理论值是99H。

实验中用的ADC0809的IN0的地址是什么?

回答:地址是2B8H。

十、程序清单

CODE

SEGMENT

ASSUME

CS:CODE

START:

MOV

DX,2B8H

;2B0H-2B7H

MOV

AL,00H

OUT

DX,AL

CALL

DELAY

IN

AL,DX

CALL

SHOW

CALL

DELAY

JMP

START

SHOW

PROC

NEAR

PUSH

DX

PUSH

AX

MOV

CL,4

SHR

AL,CL

AND

AL,0FH

CALL

H2C

JC

SHOW_OUT

MOV

DX,88H

OUT

DX,AL

POP

AX

AND

AL,0FH

CALL

H2C

JC

SHOW_OUT

MOV

DX,88H

OUT

DX,AL

MOV

CX,0FFH

DELA:

LOOP

DELA

SHOW_OUT:

POP

DX

RET

SHOW

ENDP

H2C

PROC

NEAR

CMP

AL,0

JAE

N0_9

JMP

H2C_ERR

N0_9:

CMP

AL,9

JBE

N0_9_OK

CMP

AL,0AH

JAE

HEX_CMP

JMP

H2C_ERR

HEX_CMP:

CMP

AL,0FH

JBE

HEX_CMP_OK

JMP

H2C_ERR

HEX_CMP_OK:

CLC

ADD

AL,37H

JMP

CMP_OUT

N0_9_OK:

CLC

ADD

AL,30H

JMP

CMP_OUT

H2C_ERR:

STC

CMP_OUT:

RET

H2C

ENDP

DELAY

PROC

NEAR

MOV

CX,0FFH

DELEA:

LOOP

DELEA

RET

DELAY

ENDP

CODE

ENDS

END

START

十一、实验结果分析

接好电路后,微调电位器,然后就会发现显示屏上的数字从00到FF在变化,这是将模拟电转换为数字信号。

十二、实验心得体会

这次实验不知怎么,异常的顺利,我们按照电路图链接好后,装入程序,直接就出现了结果,有了这样的信心,我们将上次没做完的一起给做完了,做完之后拍完照,成就感一下子就抹去了上一次没做出来的黯然情绪。

TAG标签: