电科08级微机原理与接口试验自编教材.docx

上传人:b****6 文档编号:16610215 上传时间:2023-07-15 格式:DOCX 页数:24 大小:47.12KB
下载 相关 举报
电科08级微机原理与接口试验自编教材.docx_第1页
第1页 / 共24页
电科08级微机原理与接口试验自编教材.docx_第2页
第2页 / 共24页
电科08级微机原理与接口试验自编教材.docx_第3页
第3页 / 共24页
电科08级微机原理与接口试验自编教材.docx_第4页
第4页 / 共24页
电科08级微机原理与接口试验自编教材.docx_第5页
第5页 / 共24页
电科08级微机原理与接口试验自编教材.docx_第6页
第6页 / 共24页
电科08级微机原理与接口试验自编教材.docx_第7页
第7页 / 共24页
电科08级微机原理与接口试验自编教材.docx_第8页
第8页 / 共24页
电科08级微机原理与接口试验自编教材.docx_第9页
第9页 / 共24页
电科08级微机原理与接口试验自编教材.docx_第10页
第10页 / 共24页
电科08级微机原理与接口试验自编教材.docx_第11页
第11页 / 共24页
电科08级微机原理与接口试验自编教材.docx_第12页
第12页 / 共24页
电科08级微机原理与接口试验自编教材.docx_第13页
第13页 / 共24页
电科08级微机原理与接口试验自编教材.docx_第14页
第14页 / 共24页
电科08级微机原理与接口试验自编教材.docx_第15页
第15页 / 共24页
电科08级微机原理与接口试验自编教材.docx_第16页
第16页 / 共24页
电科08级微机原理与接口试验自编教材.docx_第17页
第17页 / 共24页
电科08级微机原理与接口试验自编教材.docx_第18页
第18页 / 共24页
电科08级微机原理与接口试验自编教材.docx_第19页
第19页 / 共24页
电科08级微机原理与接口试验自编教材.docx_第20页
第20页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

电科08级微机原理与接口试验自编教材.docx

《电科08级微机原理与接口试验自编教材.docx》由会员分享,可在线阅读,更多相关《电科08级微机原理与接口试验自编教材.docx(24页珍藏版)》请在冰点文库上搜索。

电科08级微机原理与接口试验自编教材.docx

电科08级微机原理与接口试验自编教材

《微机原理与接口技术实验》教学大纲

课程名称:

微机原理与接口技术实验课程编号:

实验学时:

16实验学分:

1

一、本实验课的性质、任务与目的

《微机原理与接口技术实验》是电子信息科学与技术专业必修的专业基础课,是一门重要的实践环节课程。

本实验安排学生上机实践及实验箱的实际动手操作。

将使学生理解汇编语言的基本概念和主要功能,掌握常用的汇编语言程序设计方法,掌握常用的接口的工作原理和编程控制方法,学会利用软硬件方法使用各种常用的可编程接口芯片,为开发不同用途的微型计算机应用系统打下良好的基础。

二、实验项目的设置与内容提要

序号

实验项目

实验学时

实验类型

实验要求

内容提要

1

调试程序debug的使用

2

验证

必做

熟悉debug常用命令的使用方法,利用debug运行简单的汇编程序。

2

汇编语言程序的编辑、汇编、链接、调试、运行

2

验证

必做

熟悉edit编辑程序的方法,利用edit编辑简单的汇编程序。

3

顺序机构程序设计

2

设计

必做

应用顺序结构程序设计方法,上机编程调试汇编语言程序。

4

分支机构程序设计

2

设计

必做

应用分支机构程序设计方法,上机编程调试汇编语言程序。

5

循环结构程序设计

2

设计

必做

应用循环结构程序设计方法,上机编程调试汇编语言程序。

6

系统功能调用

2

设计

必做

应用系统功能调用程序设计方法,上机编程调试汇编语言程序。

7

基于实验箱的硬件实验

2

设计

必做

16×16点阵显示实验、音频驱动实验、控制交通灯实验。

8

上机考试

2

设计

必做

按题目所要求上机编程调试汇编语言程序,程序及答案填在试卷中,运行后,内存中的结果让老师检查后方可离开。

考试时间共90分钟。

三、考核方式与评分办法:

1.每次实验必须有指导教师点名,不得无故缺席或迟到;

2.实验结束后,学生向指导教师上交实验报告;

3.平时成绩占50%,上机考核占50%。

四、本实验课教材或实验指导参考书

[1]李东《微机原理与接口实验自编教材》

[2]《微机接口实验系统8086/8088实验指导书》启东达爱思计算机有限公司出品

[3]王智文、蔡启先等《微机原理及汇编语言程序设计》2005年10月

《微机原理与接口实验自编教材》

信息与计算科学系电科教研室李东

前言:

汇编语言程序设计是电子信息科学与技术专业的一门重要的计算机技术基础课程和必修的专业基础课,是操作系统、计算机接口技术、计算机系统结构、单片机原理、计算机控制技术等课程的先修课。

在众多的程序设计语言中,汇编语言是面向机器的低级语言。

由于汇编语言可以直接对硬件资源进行编程,因而汇编语言具有更高的执行效率。

与高级与语言相比,它更适合于对执行速度和代码长度要求较高的场合。

可见,汇编语言一方面可以帮助学生理解计算机工作原理,为后续课程的学习打下基础,同时也可以直接应用于实时控制及与硬件资源京密结合的其它领域。

汇编语言程序设计是一门实践性很强的课程,程序设计如何,是否达到要求,必须通过上机运行和调试。

在具体学习实践中,很多人普遍感到汇编语言程序改错、上机调试使学生操作上的难点,应此,我们编写了本实验教材,具有通俗易懂的特点,希望对大家的学习有所帮助。

 

《微机原理与接口技术实验》实验报告

系:

;班级:

;姓名:

学号:

;指导教师:

李东;

实验时间:

;实验成绩:

实验一调试程序DEBUG的使用

DEBUG.EXE是DOS提供的用于调试可执行程序的工具软件,是汇编语言程序设计中常用的调试工具。

在DEBUG环境下,不但可以调试经汇编、连接后生成的可执行程序,也可以编写简单的程序。

一、实验目的

1.熟悉debug常用命令的使用方法

2.了解上机操作环境

二、实验内容

1.按照提供的《debug》电子版补充教材进行学习训练

2.用汇编语言编写一个计算“3+5”的加法程序

3.利用debug运行简单的汇编程序。

4.熟悉debug常用命令的使用方法

三、实验实现的程序及上机操作步骤

MOVAL,33H;将3的ASCII码送入AL寄存器中

MOVDL,35H;将5的ASCII码送入DL寄存器中

ADDDL,AL;做“3+5”,结果送DL寄存器

SUBDL,30H;将“3+5”的结果进行调整,得到8的ASCII码,送DL寄存器

MOVAH,2;

INT21H;输出DL寄存器中的字符

INT20H;中断当前执行的程序

该程序是将两个十进制数3和5的ASCII码送入寄存器AL和DL,当ASCII码进行相加时必须通过条调整后才能得到其结果。

如例中,33H+35H等于68H,68H-30H=38H,38H才是十进制8的ASCII码,再将结果在显示器上显示DL寄存器中的字符,该字符应该是将字符的ASCII码放在DL寄存器中。

INT20H是中断正常结束程序。

运行步骤如下:

1.进入DEBUG状态

点击“开始”→“程序”→“附件”→“命令提示符”,进入DOS操作环境。

然后运行DEBUG程序:

(说明:

本课程实验假设是在c盘上建立了masm子目录,且masm.exe、link.exe、debug.exe、cref.exe、lib.exe都在该目录中。

C:

\﹍\﹍>CD\↙

C:

\>CDMASM↙

C:

\>MASM>DEBUG↙

屏幕显示:

_

“_”为已进入DEBUG状态,在该提示符下可键入DEBUG命令。

(下划线部分表示用户键入的字符或命令,↙为回车符号)

2.键入程序并汇编

用DEBUG的A命令送入程序:

_A100↙

0A47:

0100MOVAL,33↙

0A47:

0102MOVDL,35↙

0A47:

0104ADDDL,AL↙

0A47:

0106SUBDL,30↙

0A47:

0109MOVAH,2↙

0A47:

010BINT21↙

0A47:

010DINT20↙

0A47:

010F↙

_

当键入A命令时,自动产生程序所送内存单元的段地址和偏移地址。

通过偏移地址可以看到每条指令占内存单元多少字节。

如“MOVAL,33”占两个字节,···当程序送完时,只键入回车键↙,就退出汇编状态(A状态)回到DEBUG状态“-”。

其中送入的数据为十六进制数,DEBUG状态下程序中的数据均按十六进制处理,不需要键入H来表示数据为十六进制数。

3.执行程序

用DEBUG的G命令执行刚刚汇编的程序:

-G↙

8

programterminatednormally

4.反汇编

可以用反汇编U命令将键入的程序调出,并且可以得到每条汇编指令的机器码。

-U10010D↙

0A47:

0100BO33MOVAL,33

0A47:

0102B235MOVDL,35

0A47:

010400C2ADDDL,AL

0A47:

010680EA30SUBDL,30

0A47:

0109B402MOVAH,2

0A47:

010BCD21INT21

0A47:

010DCD20INT20

四、熟悉:

E、D、R等其它debug常用命令

例:

利用DEBUG的E命令向内存中写入机器码,D命令察看内存中的数据,用U命令查看内存中机器码的含义,用T命令执行内存中的机器码。

如何向内存中写入机器码呢?

我们知道,机器码也是数据,当然也可以用E命令将机器码写入内存。

比如要从内存1000:

0单元开始写入这样一段机器码:

机器码对应的汇编指令

b80100movax,0001

b90200movcx,0002

01c2addax,cx

可以用下述的方法进行实验:

C:

\>DEBUG↙

-E1000:

0B80100B9020001C8↙

-

如何查看我们写入的或内存中原有的汇编指令呢?

我们用D命令察看1000:

0~1000:

1F中的数据(从数据的角度看一下我们写入的内容);最后用U命令查看从1000:

0开始的内存单元中的机器指令和他们所对应的汇编指令。

-D1000:

01F↙

1000:

0000B80100MOVAX,0001

1000:

0003B90200MOVCX,0002

1000:

000601C8ADDAX,CX

1000:

0008···

由此,我们可以再一次看到内存中的数据和代码没有任何区别,关键在于如何解释。

如何执行我们写入的机器指令呢?

使用DEBUG的T命令可以执行一条或多条指令,简单的使用T命令,可以执行CS:

IP指向的指令:

接前面实验:

-R↙

···

-RCS↙

CSXXXX

:

1000↙

-RIP↙

IPXXXX

:

0↙

-R↙

-T↙

···

-P↙

这个例子中,我们先用E命令向1000:

0开始的内存单元中写入了8个字节的机器码,然后用R命令查看CPU中寄存器的状态,可以看到,CS=XXXX,IP=YYYY,指向内存XXXX:

YYYY;若要用T命令控制CPU执行我们写到1000:

0的指令,必须先让CS:

IP指向1000:

0;接着用R命令修改CS、IP中的内容,使CS:

IP指向1000:

0

完成上面的步骤后,我们就可以使用T命令来执行我们写入的指令了(此时CS:

IP指向我们的指令所在的内存单元)。

执行T命令后,CPU执行CS:

IP指向的指令,则1000:

0处的指令B80100(MOVAX,0001)得到执行。

指令执行后,DEBUG显示输出CPU中寄存器的状态。

注意:

指令执行后,AX中的内容改写为1,IP改写为IP+3(因为(MOVAX,0001的指令长度为3个字节),CS:

IP指向下一条指令。

接着我们可以继续使用T命令执行下面的指令,注意每条指令执行后,CPU相关寄存器内容的变化。

五、实验运行结果及实验后的心得体会

实验二汇编语言程序的编辑、汇编、链接、调试、运行

一、实验目的

1.了解上机操作环境;

2.了解上机操作流程;

3.熟悉EDIT编辑程序的使用方法,利用EDIT编辑简单的汇编程序;

4.熟悉汇编语言程序的编辑、汇编、链接、调试、运行

二、本实验上机操作环境:

这里列出了本实验的上机操作环境。

包括:

操作系统:

Window9x的MS-DOS方式,MSDOS6.22、MSDOS7.0,Window2000及以上“命令提示符”的运行等。

文本编辑器:

记事本,EDIT.COM等

汇编程序:

MASM.EXE、ASM.EXE等

连接程序:

LINK.EXE

调试程序:

DEBUG.EXE

此外还有:

索引程序:

CREF.EXE

库管理程序:

LIB.EXE

假定在C盘上建立了MASM子目录,且上述程序都在该目录中。

三、上机操作流程

整个上机过程包括:

①建立与编辑源程序;②原程序汇编产生目标文件;③连接目标程序产生可执行程序;④调试运行可执行程序这么四个步骤。

①进入MS-DOS,建立与编辑源程序

点击“开始”→“程序”→“附件”→“命令提示符”,进入DOS操作环境:

C:

\﹍\﹍>CD\MASM↙

C:

\>MASM>DIR↙

C:

\>MASM的目录

200X-XX-XXXX-XX

200X-XX-XXXX-XX

···

200X-XX-XXXX-XX39,100MASM.EXE

200X-XX-XXXX-XX39,100LINK.EXE

200X-XX-XXXX-XX39,100CREF.EXE

200X-XX-XXXX-XX39,100LIB.EXE

200X-XX-XXXX-XX39,100DEBUG.EXE

XX个文件XXX,XXX字节

X个目录X,XXX,XXX,XXX可用字节

现在我们利用EDIT编辑程序:

C:

\>MASM>EDIT↙

进入EDIT编辑状态,在EDIT文本编辑器中输入源程序:

DATASEGMENT

XDB0E5H;定义变量X、Y、W

YDB34H

WDW?

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA;装填DS端地址

MOVDS,AX

XORAH,AH;AH清零,为高字节加作准备

MOVAL,X;AX=X+Y

ADDAL,Y

ADCAH,0

MOVW,AX;送结果

MOVAH,4CH;返回DOS

INT21H

CODEENDS

ENDSTART

程序输入完毕,要给输入的程序起一个文件名,其扩展名必须为.ASM。

按下ALT健,在file菜单中用方向健选择“save”,再出现的对话框中的“filename:

[--------]”中输入“test1.asm”并即点击ok或按回车。

按下ALT健,在file菜单中用方向健选择“Exit”并退出EDIT回到DOS状态。

②原程序汇编产生目标文件

C:

\MASM>MASMTEST1.ASM↙

Microsost(R)MacroAssemblerVersion5.00

Copyright(C)MicrosostCorp1981-1985,1987

Sourcefilename[.ASM]:

TEST1↙

Objectfilename[TEST1.ASM]:

Sourcelisting[NUL.LST]:

50722+410046Bytesymbolspacefree

0WarningErrors

0SevereErrors

汇编成功,形成TEST1.OBJ文件。

若不需要列表文件和交叉索引文件可直接回车跳过。

③连接目标程序产生可执行程序

C:

\MASM>LINKTEST1↙

IBMPersonalComputerLinker

Version2.00(C)CopyrightIBMCorp1985、1986、2000

ObjectModules[.OBJ]:

TEST1↙

RunFile[TEST1.EXE]:

ListFile[NUL.MAP]:

Libraries[.LIB]:

Warning:

NoStsckSegment

(表明用户程序没有设置堆栈,将由系统自动设置,此警告错误一般不会影响可执行程序的产生和运行。

)下面我们进行程序的运行与结果检查:

④.调试运行可执行程序

C:

\MASM>TEST1.EXE↙;执行该程序

C:

\MASM>

由于程序执行的结果存放在内存单元中,因而屏幕看不到任何结果。

因此,必须启动DEBUG调试程序,来了解运行的结果。

C:

\>MASM>DEBUG↙

屏幕显示“-”号是DEBUG系统提示符。

-NTEST1.EXE↙;用N命令来指定要调试的文件名

-L↙;用L命令装入该文件到内存中

-U↙;用U命令反汇编该文件

1407:

0000B80614MOVAX,1406

1407:

0000B80614MOVDS,AX

···

-D1406:

0,F↙

1406:

0000E534000000000000-0000000000000000

说明按照程序的DATA数据段的要求它排了变量X的数据E5H和Y的数据34H,接下来使用G命令执行程序:

-G=1407:

0↙;该命令表示要执行地址为1407:

0开始的程序

Programterminatednormally

-D1406:

0,F↙;查看结果

1406:

0000E534190100000000-0000000000000000

(可见W的值为0119H,结果是正确的)

-Q↙;退出DEBUG

下面介绍DEBUG另一种启动方法:

C:

\>MASM5.0>DEBUGTEST1.EXE↙;将指定文件装入内存

-U↙

13C8:

0000B8C713MOVAX,13C7

13C8:

00008ED8MOVDS,AX

···

-D13C7:

0000,F↙

13C7:

0000E534000000000000-0000000000000000

下面用单步调试来运行调试程序:

所谓单步调试,是指逐条执行程序指令,每执行完当前一条指令后,系统会暂停,此时用户可以用D命令来查看内存,或用R命令查看寄存器内容,从而了解程序是否按设计要求正常运行,再用DEBUG将.EXE程序装入并用U命令反汇编了解有关信息后,执行程序时不用G命令而用T命令。

下面以TEST1.EXE程序为例:

-T=13C7:

0↙

此时屏幕显示各个寄存器内容及下一条要执行的指令,依次使用T命令就可以观察每一条指令执行后的寄存器,内存的具体情况:

AX=13C3BX=XXDX=XX···

···

13C4:

00038ED8MOVDS,AX

- T↙

···

- T↙

···

13C4:

0014B44CMOVAH,4C

说明遇到子程序、中断程序、循环程序时,没有必要跟踪下去。

下面用P命令来避免(把它当作一条指令来执行)

- P↙

···

或者用G命令一直运行到程序结束(或断点处)

- G↙

Programterminatednormally

四、实验后的心得体会

 

实验三顺序结构程序设计

一、实验目的

掌握8086/8088汇编语言程序设计和调试方法。

本实验应用顺序结构程序设计方法,上机编程调试汇编语言程序。

二、实验内容

设A、B、C、均为无符号字节数据,编程求Y=(A+B)×C的值。

(A+B)×C

三、程序流程

分析:

由题意知,A、B、C均为无符号字节数据,其值在0~255范围内,A+B的值有可能超过8位的字节范围,即在字范围之内。

因此,产生的和与C相乘时,应选择16位相乘指令。

按A、B、C、均为最大数(255)分析,乘积有可能超过16位,在双字的范围内。

从题意可分析应按“顺序结构”设计程序。

 

四、实验步骤

用连续或单步方式运行程序,检查Y变量地址中的结果是否正确。

五、实验思考

六、实验参考程序

方法1:

DATASEGMENT

ADB201

BDB174

CDB240

YDW?

?

DATAENDS

;-----------------------------------------------------

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX;为数据段寄存器装入值

MOVAH,0

MOVAL,A;取变量A的值

ADDAL,B;求变量A与B的8位之和

ADCAH,0;产生的进位送入AH,16位的和在AX中

MOVBL,C

MOVBH,0;变量C的值取入BX寄存器

MULBX;DX,AX←和×C

MOVY,AX;送32位积的低字位

MOVY+2,DX;送32位积的高字位

MOVAH,4CH

INT21H;返回DOS状态

CODEENDS

ENDSTART

方法2:

DATASEGMENT

NUMDB201,174,240

YDW?

?

DATAENDS

;-----------------------------------------------------

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX;为数据段寄存器装入值

MOVSI,OFFSETNUM;设地址指针

MOVAH,0

MOVBH,AH;AX和BX的高8位清零

MOVAL,[SI];数据A、B、C都是DB定义的字节数据

MOVBL,[SI+1];因此它们的值只能取入8位寄存器

ADDAX,BX;AL←A+B,AH←若有进位

MOVBL,[SI+2];取数据C的值到BL

MULBX;DX,AX←和×C

MOVY,AX;送32位积的低字位

MOVY+2,DX;送32位积的高字位

MOVAH,4CH

INT21H;返回DOS状态

CODEENDS

ENDSTART

实验四 分支机构程序设计

一、实验目的

掌握8086/8088汇编语言程序设计和调试方法。

本实验应用分支结构程序设计方法,上机编程调试汇编语言程序。

二、实验内容

设X为字节变量,其值在DS:

0400H单元存放,Y的值存于0041H单元中,编程求下面的函数值,并画出程序流程图:

1(X>0)

Y=0(X=0)

-1(X<0)

三、程序流程

分析:

依题意知这是三分支程序,因此在程序中应判断两次,根据变量X值的大小,决定函数Y的值。

程序流程图如下所示:

 

四、实验步骤

 

五、实验思考

 

六、实验程序

编程:

数据段程序中为字节变量X定义一个-128~+127范围内的任一值,为函数Y保留一个字节单元,存放Y的值。

参考程序如下:

DATASEGMENT

ORG0040H

ADB-27

BDB?

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX;为数据段寄存器装入值

MOVAL,A;取字节变量X的值

ANDAL,AL;影响出SF和ZF标志位的状态

JSM1

JZM2

MOVB,1;若结果为正,Y值取+1

JMPDONE

M1:

MOVB,-1;若结果为负,Y值取-

JMPDONE

M2:

MOVB,0;若结果为0,Y值取0

DONE:

MOVAH,4CH

INT21H;返回DOS状态

CODEENDS

ENDSTART

 

实验五循环结构程序设计

一、实验目的

掌握8086/8088汇编语言程序设计和调试方法。

本实验应用循环结构程序设计方法,上机编程调试汇编语言程序。

二、实验内容

已知内存DS:

0010H~0031H单元中存放的是带符号的字节数据

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

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2