微机原理与接口技术实验报告参考.docx

上传人:b****5 文档编号:3343400 上传时间:2022-11-21 格式:DOCX 页数:58 大小:702.36KB
下载 相关 举报
微机原理与接口技术实验报告参考.docx_第1页
第1页 / 共58页
微机原理与接口技术实验报告参考.docx_第2页
第2页 / 共58页
微机原理与接口技术实验报告参考.docx_第3页
第3页 / 共58页
微机原理与接口技术实验报告参考.docx_第4页
第4页 / 共58页
微机原理与接口技术实验报告参考.docx_第5页
第5页 / 共58页
点击查看更多>>
下载资源
资源描述

微机原理与接口技术实验报告参考.docx

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

微机原理与接口技术实验报告参考.docx

微机原理与接口技术实验报告参考

 

 

 

实验一显示程序实验

一、实验目的

1.掌握在PC机上以十六进制形式显示数据的方法;

2.掌握部分DOS功能调用使用方法;

3.熟悉Tddebug调试环境和TurboDebugger的使用。

二、实验所用设备

1.PC微机一台。

三、实验内容

一般来说,程序需要显示输出提示运行的状况和结果,有的还需要将数据区中的内容显示在屏幕上。

本实验要求将指定数据区的数据以十六进制数形式显示在屏幕上,并通过DOS功能调用完成一些提示信息的显示。

实验中可使用DOS功能调用(INT21H)。

(1)显示单个字符输出

入口:

AH=02H

调用参数:

DL=输出字符

(2)显示字符串

入口:

AH=09H

调用参数:

DS:

DX=串地址,’$’为结束字符

(3)键盘输入并回显

入口:

AH=01H

返回参数:

AL=输出字符

(4)返回DOS系统

入口:

AH=4CH

调用参数:

AL=返回码

四、实验步骤

1.运行Tddebug软件,选择Edit菜单,根据实验内容的描述编写实验程序,本实验显示部分参考实验流程如图1-1示;

2.使用Compile菜单中的Compile和Link对实验程序进行汇编、连接;

3.使用Rmrun菜单中的Run,运行程序,观察运行结果;

4.使用Rmrun菜单中的Debug,调试程序,观察调试过程中,数据传输指令执行后,各寄存器及数据区的内容;

5.更改数据区中的数据,考察程序的正确性。

 

图1-1显示程序实验流程图

五、程序清单

DATASEGMENT

MESDB'laoshihao:

',0AH,0DH,'$'

SDDB'b'

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVDX,OFFSETMES

MOVAH,09H

INT21H

MOVDI,OFFSETSD

MOVAL,DS:

[DI]

ANDAL,0F0H

SHRAL,4

CMPAL,0AH

JBL1

ADDAL,07H

L1:

ADDAL,30H

MOVDL,AL

MOVAH,02H

INT21H

MOVAL,DS:

[DI]

ANDAL,0FH

CMPAL,0AH

JBL2

ADDAL,07H

L2:

ADDAL,30H

MOVDL,AL

MOVAH,02H

INT21H

MOVAX,4C00H

INT21H

CODEENDS

ENDSTART

六、实验调试过程

调试过程中出现警告,显示没有使用堆栈段。

但是程序编写本身没有使用,因此程序运行相对正常。

第一个实验熟悉了轻松汇编软件的操作,为之后的实验打下了基础。

 

七、实验运行结果

 

实验二数据传送实验

一、实验目的

1.熟悉Tddebug调试环境和TurboDebugger的使用;

2.掌握与数据有关的不同寻址方式。

二、实验所用设备

1.PC微机一台。

三、实验内容

将数据段中的一个字符串传送到附加段中,并输出附加段中的目标字符串到屏幕上。

实验程序:

DDATASEGMENT

MSRDB"LAOSHIXINKULE!

$"

LENEQU$-MSR

DDATAENDS

EXDASEGMENT

MSDDBLENDUP(?

EXDAENDS

MYSTACKSEGMENTSTACK

DW20DUP(?

MYSTACKENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DDATA,ES:

EXDA

START:

MOVAX,DDATA

MOVDS,AX

MOVAX,EXDA

MOVES,AX

MOVSI,OFFSETMSR

MOVDI,OFFSETMSD

MOVBX,0

MOVCX,LEN

NEXT:

MOVAL,MSR[BX]

MOVES:

MSD[BX],AL

INCBX

LOOPNEXT

PUSHES

POPDS

MOVDX,OFFSETMSD

MOVAH,9

INT21H

MOVAX,4C00H

INT21H

CODEENDS

ENDSTART

四、实验步骤

1.运行Tddebug软件,选择Edit菜单编写实验程序;

2.使用Compile菜单中的Compile和Link对实验程序进行汇编、连接;

3.使用Rmrun菜单中的Run,运行程序,观察运行结果;

4.使用Rmrun菜单中的Debug,调试程序,观察调试过程中,数据传输指令执行后,各寄存器及数据区的内容;

5.更改数据区中的数据,考察程序的正确性。

五、实验调试过程

程序中使用了寄存器相对寻址的方式。

编译、连接、运行后程序运行正常。

输入的字符显示在屏幕上。

六、实验运行结果

 

实验三数码转换程序实验

一、实验目的

掌握不同进制数及编码相互转换的程序设计方法。

二、实验所用设备

PC微机一台。

三、实验步骤

1.运行Tddebug软件,选择Edit菜单编写实验程序;

2.使用Compile菜单中的Compile和Link对实验程序进行汇编、连接;

3.使用Rmrun菜单中的Run,运行程序,观察运行结果;

4.使用Rmrun菜单中的Debug,调试程序,观察调试过程中,数据传输指令执行后,各寄存器及数据区的内容;

5.更改数据区中的数据,考察程序的正确性。

四、实验内容

计算机输入设备输入的信息一般是由ASCII码或BCD码表示的数据或字符,CPU用二进制数进行计算或其它信息处理,处理结果的输出又必须依照外设的要求变为ASCII码、BCD码或七段显示码等。

因此,在应用软件中,各类数制的转换和代码的转换是必不可少的。

计算机与外设间的数码转换关系如图3-1所示,数码对应关系如表3-1所示。

图3-1计算机与外设间的数码转换关系

1.将ASCII码表示的十进制数转换为二进制数

十进制数可以表示为:

Dn×10n+Dn-1×10n-1+…+D0×100

=Di×10i其中Di代表十进制数1、2、3…9、0。

上式可以转换为:

ΣDi×10i=((…(Dn×10+Dn-1)×10)+Dn-2)×10+…+D1)×10+D0

由上式可归纳十进制数转换为二进制的方法:

从十进制数的最高位Dn开始作乘10加次位的操作,依次类推,则可求出二进制数结果。

本实验要求将缓冲区中的一个五位十进制数00012的ASCII码转换成二进制数,并将转换结果按位显示在屏幕上。

转换过程的参考流程如图3-2所示。

 

(1)实验流程图

图3-2十进制ASCII转换为

二进制数参考流程

(2)实验程序

DATASEGMENT

MSRDB"00012"

LENEQU$-MSR

DATAENDS

CODESEGMENT;

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVSI,OFFSETMSR

MOVCX,LEN-1

MOVAL,DS:

[SI]

MOVAH,0

SUBAX,30H

A1:

MOVBX,0AH

MULBX

INCSI

MOVDL,DS:

[SI]

MOVDH,0

SUBDX,30H

ADDAX,DX

DECCX

JNZA1

MOVCL,16

MOVBX,AX

A2:

ROLBX,1

MOVDL,BL

ANDDL,01H

ADDDL,30H

MOVAH,2H

INT21H

DECCL

JNZA2

MOVAX,4C00H

INT21H

CODEENDS

ENDSTART

(3)调试过程

调试过程正常没有出现问题。

(4)实验结果

2.将十进制数的ASCII码转换为BCD码

本实验要求将键盘输入的一个五位十进制数54321的ASCII码存放入数据区中,转换为BCD码后,并将转换结果按位分别显示于屏幕上。

若输入的不是十进制数的ASCII码,则输出“FF”。

提示:

一字节ASCII码取其低四位即变为BCD码。

转换部分的实验流程参见3-3。

(1)实验流程

图3-3十进制ASCII转换为

BCD码参考流程

(2)实验程序

DATASEGMENT

STRINGDB'INPUT:

','$'

STRING1DB'OUTPUT:

','$'

MSRDB6,?

6DUP(?

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

LEADX,STRING

MOVAH,09H

INT21H

MOVDX,OFFSETMSR

MOVAH,0AH

INT21H

MOVDL,0AH

MOVAH,02H

INT21H

MOVDL,0DH

MOVAH,02H

INT21H

LEADX,STRING1

MOVAH,09H

INT21H

MOVCL,[MSR+1]

MOVSI,0002H

MOVBX,OFFSETMSR

A1:

MOVAL,[BX+SI]

CMPAL,40H

JNCB1

SUBAL,30H

MOVCH,0

PUSHCX

MOVCL,4

MOVDH,AL

SHLDH,CL

A2:

ROLDH,1

MOVDL,DH

ANDDL,01H

ADDDL,30H

MOVAH,02H

INT21H

DECCL

JNZA2

POPCX

INCSI

DECCL

JNZA1

B1:

JZB2

MOVDL,46H

MOVAH,02H

INT21H

INCSI

DECCL

JNZA1

B2:

MOVAX,4C00H

INT21H

CODEENDS

ENDSTART

(3)调试过程

调试过程中在换行显示时遇到了问题,无法换行显示。

经过检查发现在显示过程中的换行代码写错了,改正之后程序显示正常。

(4)实验结果

 

3.将十六进制数的ASCII码转换为十进制数

十六位二进制数的值域为0-65535,最大可转换为五位十进制数。

五位十进制数可表示为:

ND=D4×104+D3×103+D2×102+D1×10+D0

因此,将十六位二进制数转换为五位ASCII码表示的十进制数,就是求D1-D4,并将它们转化为ASCII码。

本实验要求将缓冲区中存放的000CH的ASCII码转换成十进制数,并将转换结果显示在屏幕上。

(1)实验流程

图3-4将十六进制数的ASCII码转换为十进制数

(2)实验程序

DATASEGMENT

MSRDW000CH

MDRDB5DUP(?

),'$'

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVBX,OFFSETMDR

MOVSI,5

MOVAX,[MSR]

A1:

DECSI

MOVDX,0

MOVCX,0AH

DIVCX

ADDDL,30H

MOV[BX+SI],DL

CMPAX,0

JNEA1

JEA3

A2:

DECSI

MOVAL,30H

MOV[BX+SI],AL

CMPSI,0

JNEA2

A3:

MOVDX,OFFSETMDR

MOVAH,09H

INT21H

MOVAX,4C00H

INT21H

CODEENDS

ENDSTART

(3)调试过程

调试过程中在显示时遇到了问题,无法逐个显示。

改为直接显示之后程序显示正常。

(4)实验结果

 

 

4.BCD码转换为二进制码

本实验要求将四个二位十进制数的BCD码存放在某一内存单元中,转换出的二进制数码存入其后的内存单元中,转换结束,送屏幕显示。

 

(1)实验流程

 

图3-5BCD码转换为二进制码

参考流程

(2)实验程序

DATASEGMENT

MSRDB03H,02H,03H,05H,07H,06H,07H,08H,4DUP(?

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVBX,OFFSETMSR

MOVDI,8

MOVCX,4

MOVDH,0AH

A1:

MOVSI,1

MOVAL,[BX+SI]

MULDH

DECSI

ADDAL,[BX+SI]

MOV[BX+DI],AL

PUSHCX

MOVCH,AL

MOVCL,8

A2:

ROLCH,1

MOVDL,CH

ANDDL,01H

ADDDL,30H

MOVAH,02H

INT21H

DECCL

JNZA2

POPCX

MOVDL,42H

MOVAH,02H

INT21H

MOVAH,2

MOVDL,13

INT21H

MOVAH,2

MOVDL,10

INT21H

ADDBX,2

INCDI

DECCX

JNZA1

MOVAX,4C00H

INT21H

CODEENDS

ENDSTART

(3)调试过程

调试过程中没有出现问题程序显示正常。

(4)实验结果

 

实验四运算类程序实验

一、实验目的

1.掌握运算类指令编程及调试方法;

2.掌握运算类指令对各状态标志位的影响及测试方法。

二、实验所用设备

1.PC微机一台。

三、实验步骤

1.运行Tddebug软件,选择Edit菜单编写实验程序;

2.使用Compile菜单中的Compile和Link对实验程序进行汇编、连接;

3.使用Rmrun菜单中的Run,运行程序,观察运行结果;

4.使用Rmrun菜单中的Debug,调试程序,观察调试过程中,数据传输指令执行后,各寄存器及数据区的内容;

5.更改数据区中的数据,考察程序的正确性。

四、实验内容

80x86指令系统提供了实现加、减、乘、除运算的基本指令,可对表4-1所示的数据类型进行算术运算。

表4-1数据类型算术运算表

1.二进制双精度加法运算

本实验要求计算X+Y=Z,将结果Z输出到屏幕,其中X=001565A0H,Y=0021B79EH。

实验利用累加器AX,先求低十六位和,并存入低址存储单元,后求高16位和,再存入高址存储单元。

由于低位和可能向高位有进位,因而高位字相加语句需用ADC指令,则低位相加有进位时,CF=1,高位字相加时,同时加上CF中的1。

在80386以上微机中可以直接使用32位寄存器和32位加法指令完成本实验的功能。

(1)实验程序

DATASEGMENT

XDW065A0H,0015H

YDW0B79EH,0021H

ZDW2DUP(?

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVCX,2

CLC

MOVSI,0

L1:

MOVAX,X[SI]

ADCAX,Y[SI]

MOVZ[SI],AX

INCSI

INCSI

LOOPL1

MOVBX,Z[2]

CALLLIST_BX

MOVBX,Z

CALLLIST_BX

MOVAH,4CH

INT21H

LIST_BXPROC

MOVCH,4

MOVCL,4

NEXT:

ROLBX,CL

MOVDL,BL

ANDDL,0FH

ADDDL,30H

CMPDL,39H

JLEPRINT

ADDDL,7

PRINT:

MOVAH,2

INT21H

DECCH

JNZNEXT

RET

LIST_BXENDP

CODEENDS

ENDSTART

(2)调试过程

调试过程中一开始将X、Y的高低位弄反了,结果输出结果错误改正后没有出现问题程序显示正常。

(4)实验结果

 

实验五分支程序设计实验

一、实验目的

1.掌握分支程序的设计方法。

二、实验所用设备

1.PC微机一台。

三、实验内容

程序有顺序、循环、分支和子程序四种结构形式,分支结构的示意图如图5-1所示。

本实验要求通过求无符号字节序列中的最大值和最小值来反映分支程序的结构形式。

图5-1分支结构示意图

实验可以使用BH,BL作为暂存现行的最大值和最小值,且在程序的初始,将BH和BL初始化为首字节的内容,然后进入循环操作。

在循环操作中,依次从字节序列中逐个取出一个字节的内容与BH,BL进行比较,若取出的字节内容比BH的内容大或比BL中的内容小,则修改之。

当循环结束操作时,将BH,BL分别送屏幕显示。

参考实验流程如图5-2所示。

四、实验步骤

1.运行Tddebug软件,选择Edit菜单编写实验程序,提供8字节的数据:

0D9H,07H,8BH,0C5H,0EBH,04H,9DH,0F9H;

2.使用Compile菜单中的Compile和Link对实验程序进行汇编、连接;

3.使用Rmrun菜单中的Run,运行程序,观察运行结果;

4.更改数据区中的数据,考察程序的正确性。

五、实验流程

根据实验要求编写程序并调试,写出程序调试过程及运行情况。

图5-2分支程序实验流程图

六、实验程序

DATASEGMENT

D1DB0D9H,07H,8BH,0C5H,0EBH,04H,9DH,0F9H

C1EQU$-D1

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVCX,C1-1

MOVSI,0

MOVBL,D1[SI]

MOVBH,D1[SI]

L1:

INCSI

MOVAL,D1[SI]

CMPAL,BL

JNBL2

MOVBL,AL

L2:

CMPAL,BH

JNAL3

MOVBH,AL

L3:

LOOPL1

CALLDISP

MOVDL,0AH

MOVAH,2

INT21H

MOVDL,0DH

MOVAH,2

INT21H

MOVBL,BH

CALLDISP

MOVAH,4CH

INT21H

DISPPROC

MOVCH,2

MOVCL,4

NEXT:

ROLBL,CL

MOVDL,BL

ANDDL,0FH

ADDDL,30H

CMPDL,39H

JLEPRINT

ADDDL,7

PRINT:

MOVAH,2

INT21H

DECCH

JNZNEXT

RET

DISPENDP

CODEENDS

ENDSTART

七、实验调试过程

调试过程没有出现问题程序显示正常。

八、实验结果

 

实验六循环程序设计实验

一、实验目的

1.掌握循环程序的设计方法。

二、实验所用设备

1.PC微机一台。

三、实验内容

本实验要求通过求某数据区内负数的个数来表现循环程序的结构形式。

要求实验程序在数据区中存放一组数据,为统计负数的个数,逐个判断区内的数据,然后将所有数据中凡是符号位为1的数据的个数累加起来,即得到区内所包含负数的个数。

循环程序的结构示意如图6-1所示。

图6-1循环结构示意图

四、实验步骤

1.运行Tddebug软件,选择Edit菜单编写实验程序,提供10字节的数据:

12H,88H,82H,89H,33H,90H,01H,10H,0BDH,01H;

2.使用Compile菜单中的Compile和Link对实验程序进行汇编、连接;

3.使用Rmrun菜单中的Run,运行程序,观察运行结果;

4.更改数据区中的数据,考察程序的正确性。

五、实验程序

DATASEGMENT

D1DB12H,88H,82H,89H,33H,90H,01H,10H,0BDH,01H

C1EQU$-D1

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVCX,C1

MOVBL,0

MOVSI,0

L1:

MOVAL,D1[SI]

CMPAL,0

JNSL2

INCBL

L2:

INCSI

LOOPL1

MOVCH,2

MOVCL,4

NEXT:

ROLBL,CL

MOVDL,BL

ANDDL,0FH

ADDDL,30H

CMPDL,39H

JLEPRINT

ADDDL,7

PRINT:

MOVAH,2

INT21H

DECCH

JNZNEXT

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

六、实验调试过程

调试过程没有出现问题程序显示正常。

 

七、实验结果

 

汇编实验实验心得:

汇编语言是本学期新学习的一门语言,在刚开始学习的时候确实遇到了很大的困难,他完全不同于C语言,但是老师上课讲解的非常细心,做实验的时候遇到的一些问题老师也会非常耐心的回答。

因此经过老师的指点和自己的努力,我完成了汇编实验的要求内容。

基本掌握了汇编语言的编写方法。

为以后的学习打下了坚实的基础。

 

实验十一8259中断控制器应用实验

一、实验目的

1.学习中断控制器8259的工作原理;

2.掌握可编程控制器8259的应用编程方法。

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

当前位置:首页 > 小学教育 > 学科竞赛

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

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