当前位置:文档之家› 《微机原理与接口技术》实验指导书--王成端周建梁(1)

《微机原理与接口技术》实验指导书--王成端周建梁(1)

《微机原理与接口技术》实验指导书--王成端周建梁(1)
《微机原理与接口技术》实验指导书--王成端周建梁(1)

《微机原理与接口技术》实验指导书

王成端周建梁编写

计算机与通信工程学院

2008年6月

目录

实验一汇编语言程序的建立和执行 (1)

实验二DEBUG调试程序实验 (6)

实验三循环与分支程序设计实验 (13)

实验四DOS系统功能调用(字符输入与输出) (16)

实验五存储器读写 (19)

实验六中断控制器8259A应用 (21)

实验七并行口8255A应用 (29)

实验八继电器控制实验 (35)

实验九定时/计数器8253A应用 (38)

实验十D/A转换0832应用 (41)

实验十一A/D转换0809应用 (45)

实验十二步进电机控制实验 (51)

实验十三串行通信实验 (55)

1,3,5,7,9,10

实验一汇编语言程序的建立和执行

一、实验目的

1.掌握实验软件DVCC实验系统的使用方法。

2.掌握DVCC系列单片机仿真实验系统的性能。

3.掌握调用MS-DOS下的屏幕编辑程序EDIT(或其他字处理软件)来建立和修改汇编语言程序的方法。

4.掌握MS-DOS下的宏汇编MASM的使用方法。

5.掌握MS-DOS下的LINK程序连接程序的方法。

二、实验内容

(一)认识实验系统

1.设置系统:

设置为8086/ 8088CPU系统。

对DVCC-5286JH,DVCC-598JH机型,SK1位1-5置OFF,位6、7、10置ON,SK2置OFF,SK3全部OFF,SK4、SK5全部ON,卧式开关KBB置88,立式开关KBB1置51、88位置,短路块DL1—DL4的位2、3相连。然后将88CPU卡插入J6、J9两插座中,卡上的CZ1对应实验台J6,卡上的CZ2对应实验台J9。

2.启动系统:

1

(1)启动电脑。打开直流稳压电源。此时实验系统应显示闪动的“P”,否则按RESET 按钮,若再无显示,立即关掉电源,请指导教师检查处理后再试。

(2)运行windows桌面上的“DVCC实验系统”,在DVCC实验系统显示“P”状态下,按PCDBG键,显示器全暗。上位机菜单上选择“联接”菜单项。联接正常,电脑屏幕显示:寄存器窗口、反汇编窗口。如出现“联接失败”提示,则表明DVCC系统与PC连接不上,请指导检查处理,可检查电源线及PC端口(COM1/COM2)等是否有问题,各种开关是否在正确位置。

3.详细观察实验系统中各个芯片的编号和位置及其所处的模块。

4.学习软件各个菜单的组合及其所能完成的功能。

(1)新建汇编语言文件:在新建窗口下输入汇编语言程序,保存为ASM文件。

(2)编译汇编语言文件:产生OBJ目标文件编译连接:一次产生OBJ和EXE文件。

5.关闭系统:

首先,关闭直流稳压电源,然后在将实验中所用的连接线拔除。

然后,关闭DVCC实验软件。

最后,关闭电脑,开始—关闭系统;然后关闭显示器电源。

6.整理实验台卫生后,按秩序离开实验室。

(二)汇编语言程序建立和编译

1.建立和修改汇编语言程序。保存为ASM文件。

例如:编写汇编语言源程序,实现在屏幕上显示数据段中的一串英文字符“How are

2

you!”。

源程序如下:文件名为disp.asm

DA TA SEGMENT

S1 DB 'HOW ARE YOU!','$'

DA TA ENDS

STACK SEGMENT PARA STACK

DB 64 DUP(?)

STACK ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DA TA

START: MOV AX,DATA

MOV DS,AX

MOV AH,9H

MOV DX,OFFSET S1

INT 21H

MOV AH,4CH

INT 21H

CODE ENDS

END START

2.对源文件进行汇编。

调用在MS-DOS下的宏汇编(MACRO assembler)MASM来实现。

3

将汇编语言源程序用宏汇编程序汇编后,可形成三个文件:

(1)目标文件:扩展名为.OBJ。将源程序的操作码部分变为机器码,但地址操作数是可浮动的相对地址,而不是实际地址。需要LINK连接文件才能形成可执行文件。

(2)列表文件:扩展名为.LST。它把源程序(包括注释)和汇编后的目标程序都打印出来,以供检查程序用。

(3)交叉索引文件:扩展名为.CRF。它是对源程序中所用的各种符号进行前后对照。

其中,目标文件是必须产生的。而其他两个文件在需要时给予命令就可产生,对连接和执行程序无直接关系。

3.执行连接程序。

连接程序LINK是把一个或多个独立的目标程序模块装配成一个可重定位的可执行文件,扩展名为.EXE文件。此外,还可以产生一个内存映象文件,扩展名为.MAP。

连接程序执行过程:

4

在DOS状态下,键入LINK,调用LINK程序。

第一行,询问被连接的各目标文件命(默认为.OBJ文件),当键入不止一个文件名时,中间以+相连,最后按回车。

第二行,询问连接产生的可执行文件名,默认为.EXE文件。

第三行,询问连接产生的内存分配图文件名,NUL.MAP表示不要内存分配图文件。内存映象文件(.MAP)它给出了每个段的地址分配情况及长度。可用TYPE命令查看。

第四行,询问欲连接的库文件名,对于连接汇编语言源程序的目标文件,通常是不需要的,因此直接键入回车。

4.执行程序。

5

实验二DEBUG调试程序实验

一、实验目的

熟练掌握调试程序DEBUG的使用方法。

二、实验内容

在操作系统的命令提示符下,可键入命令:

E:\MASM\DEBUG [d:][PATH][filename][.ext]][parm1][parm2]

其中,文件名是被调试文件的名字。如用户键入文件名,则DEBUG将指定的文件装入存储器中,用户可对其进行调试。如果未键入文件名,则用户可以用当前存储器的内容工作,或者用DEBUG命令N和L把需要的文件装入存储器后再进行调试。命令中的d 指定驱动器,PATH为路径,parm1和parm2则为运行被调试文件时所需要的命令参数。

在DEBUG程序调入后,将出现提示符“-”,此时就可用DEBUG命令来调试程序。

1.显示存储单元的命令D(DUMP),格式为:

-D[address]或

-D[range]

例如,按指定范围显示存储单元内容的方法为:

- D100 120

18E4:0100 72 6F 72 20 72 0D 61 64-69 6E 67 20 64 72 69 76 ror r.ading driv

18E4:0110 73 75 24 66 69 63 69 65-6E 74 20 6D 65 6D 6F 72 su.ficient memor

6

其中0100H至011FH是DEBUG显示的单元内容。左边用十六进制表示每个字节,右边用ASCII字符表示每个字节,“.”表示不可显示的字符。这里没有指定段地址,D命令自动显示DS段的内容。如果只指定首地址,则显示从首地址开始的80个字节的内容。如果完全没有指定地址,则显示上一个D命令显示的最后一个单元后的内容。

2.修改存储单元内容的命令E(Enter),有两种格式如下:

第一种格式可以用给定的内容表来替代指定范围的存储单元内容。命令格式为:

-E address [list]

例如,-E ds:100 F5 ?OK? 78

其中F5,?O?,?K?和78各占一个字节,该命令可以用这五个字节来替代存储单元DS :0100到0104的原先的内容。

第二种格式则是采用逐个单元相继修改的方法。命令格式为:

-E adress

例如,-E es:100

则可能显示为:

18E4:0100 89.-

如果需要把该单元的内容修改为78,则用户可以直接键入78,再按“空格”键可接着显示下一个单元的内容,如:

18E4:0100 89.78 1B.-

这样,用户可以不断修改相继单元的内容,直到用Enter键结束该命令为止。

7

3.填充命令F(Fill),其格式为:

-F range list

例如:-F 04BA:0100 5 F5 …XYZ? 8D

使04BA:0100~0104单元包含指定的五个字节的内容。如果list中的字节数超过指定的范围,则忽略超过的项;如果list的字节数小于指定的范围,则重复使用list填入,直到填满指定的所有单元为止。

4.检查和修改寄存器内容的命令R(Register),它有三种格式如下:

(1)显示CPU内所有寄存器内容和标志位状态,其格式为:

-R

例如:

-R

AX=0000 BX=0000 CX=010A DX=0000 SP=FFFE EP=0000 SI=0000 DI=0000

DS=18E4 ES=18E4 SS=18E4 CS=18E4 IP=0100 NV UP DI PL NZ NA PO NC 18E4:0100 C7 0604023801 MOV WORD PTR [0204],0138 DS:0204=0138 其中标志位状态的含义如下:

(2)显示和修改某个寄存器内容,其格式为:

-R register name

例如,键入

-R AX

8

系统将响应如下:

AX FlF4

即AX寄存器的当前内容为F1F4,如不修改则按Enter键,否则,可键入欲修改的内容,如:

-R BX

BX 0369

:059F

则把BX寄存器的内容修改为059FH。

(3)显示和修改标志位状态,命令格式为:

-RF

系统将响应,如:

OV DN EI NG ZR AC PE CY-

此时,如不修改其内容可按Enter键,否则,可键入欲修改的内容,如:

OV DN EI NG ZR AC PE CY- PO NZ DI NV

可见键入的顺序可以是任意的,且标志间也可不用空格。

5.运行命令G(Go),其格式为:

-G[=address1][address2[address3...]]

其中,地址1指定了运行的起始地址,如不指定则从当前的CS:IP开始运行。后面的地址均为断点地址,当指令执行到断点时,就停止执行并显示当前所有寄存器及标志位的内容,和下一条将要执行的指令。

6.跟踪命令T(Trace),有两种格式:

9

(1)逐条指令跟踪

-T[=adress]

从指定地址起执行一条指令后停下来,显示所有寄存器内容及标志位的值。如未指定地址则从当前的CS:IP开始执行。

(2)多条指令跟踪

-T[=address][Value]

从指定地址起执行n条指令后停下来,n由value指定。

7.程序步跟踪命令P(Programming step)

由于T命令在遇到操作系统或BIOS中断时会跟踪到中断服务程序内部,有时出现死机现象,因而可用步跟踪命令P(Programming step)代替T命令,以避免上述现象。P命令的使用格式为:

-P[=address][V alue]

8.汇编命令A(Assemble),其格式为:

-A[address]

该命令允许键入汇编语言语句,并能把它们汇编成机器代码,相继地存放在从指定地址开始的存储区中。必须注意:

DEBUG把键入的数字均看成十六进制数,所以如要键入十进制数,则其后应加以说明,如100D。

9.反汇编命令U(Unassemble),有两种格式。

(1)从指定地址开始,反汇编32个字节,其格式为:

-U[address]

10

例如:

-U100

18E4:0100 C70604023801 MOV WORD RTR[0204],0138

18E4:0106 C70606020002 MOV WORD PTR[0206],0200

18E4:010C C70608020202 M OV WORD PIR[0208],0202

18E4:0112 BB0402 MOV BX,0204

18E4:0115 E80200 CALL 011A

18E4:0118 CD20 INT 20

如果地址被省略,则从上一个U命令的最后一条指令的下一个单元开始显示32个字节。

(2)对指定范围内的存储单元进行反汇编,格式为:

-U[range]

例如:

-U100 10C

18E4:0100 C70604023801 MOV WORD PTR [0204],0138

18E4:0106 C70606020002 MOV WORD PTR [0206],0200

18E4:010C C70608020202 MOV WORD PTR [0208],0202

-U100 112

18E4:0100 C70604023801 MOV WORD PTR[0204],0138

11

18E4:0106 C70606020002 MOV WORD PTR[0206],0200 18E4:010C C70608020202 MOV WORD PTR[0208],0202 10.输入命令I(Input)。其格式为:

-I port address (port address为端口号)

其功能是从指定的端口输入一个字节并显示出来。

例如:-I 2F8

FF

它表示从02F8H端口读出的内容值为0FFH。

11.输出命令O(Output)。其格式为:

-O port address byte(port address为端口号)

其功能是向指定的端口输出一个字节。

例如:-O 2F9 B7

它表示将字节值0B7H输出到端口2F9H中。

12.退出DEBUG命令Q(Quit),其格式为:

-Q

退出DEBUG,返回操作系统。

12

实验三循环与分支程序设计实验一、实验目的

1.熟悉8086/8088常用指令;

2.熟悉使用汇编语言进行分支与循环程序设计的方法;

3.熟悉DEBUG常用命令。

二、实验内容

1.编程为符号函数

赋值;

2.编程求前20个自然数的和,并放到内存中DS:0300H开始的地方。

三、实验要求

1.编程并上机调试运行,使用DEBUG查看结果;

2.写出实验报告。

参考程序一:

DA TA SEGMENT

13

X DB -5

Y DB ?

DA TA ENDS

CODE SEGMENT

ASSUME CS: CODE, DS: DATA

START: MOV AX, DATA

MOV DS, AX

MOV AL, X

CMP AL, 0

JGE BIGR

MOV AL, 0FFH

MOV Y, AL

JMP NEXT

BIGR: JE EQUL

MOV AL, 1

MOV Y, AL

JMP NEXT

EQUL: MOV AL, 0

MOV Y, AL

NEXT: MOV AH, 4CH

INT 21H

CODE ENDS

END START

参考程序二:

DATA SEGMENT

ARRAY DB 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20 COUNT EQU $-ARRAY

ORG 0300H

SUM DW ?

14

DA TA ENDS

STACK SEGMENT PARA STACK 'STACK' STAK DB 10 DUP (?)

TOP EQU LENGTH STAK

STACK ENDS

CODE SEGMENT

ASSUME CS: CODE, DS: DA TA, SS: STACK START: MOV AX, DATA

MOV DS, AX

MOV AX, 0

MOV DI, OFFSET SUM

MOV BX, OFFSET ARRAY

MOV CX, COUNT

LOP: ADD AL, [BX]

ADC AH, 0

INC BX

LOOP LOP

MOV [DI],AX

MOV AH, 4CH

INT 21H

CODE ENDS

END START

15

实验四DOS系统功能调用(字符输入与输出)

一、实验目的

1.熟悉DOS系统功能调用(字符输入与输出)的功能及使用场合。

2.掌握DOS系统功能调用的编程方法。

二、实验内容

1.编写一程序,要求当程序运行时先在屏幕上显示如下的信息:”please enter any key when ready!”,然后在键盘上按下任意一个键,程序能将该键对应的ASCII码以8位二进制数的形式在屏幕上显示出来。

三、实验要求

1.使用MASM汇编程序、使用LINK连接程序,最后生成DOS下的可执行文件,并调试运行通过。

2.实验前熟悉汇编语言软件的开发步骤。

参考程序:

DA TA SEGMENT

MESS DB 'PLEASE ENTER ANY KEY WHEN READY!',0DH,0AH,'$' DA TA ENDS

STACK SEGMENT STACK

DB 200 DUP(0)

16

STACK ENDS

CODE SEGMENT

ASSUME CS: CODE, SS: STACK, DS: DA TA BEGIN: MOV AX, DATA

MOV DS, AX

MOV AH, 09H

MOV DX, OFFSET MESS

INT 21H

MOV AH, 01H

INT 21H

MOV DL, 0AH

CALL DISP

MOV DL, 0DH

CALL DISP

MOV CX, 8

CLC

L1: SHL AL, 1

RCL DL, 1

AND DL, 01H

OR DL, 30H

CALL DISP

LOOP L1

MOV AH, 4CH

INT 21H

DISP PROC NEAR

PUSH CX

PUSH AX

MOV AH, 02H

INT 21H

POP AX

17

POP CX

RET

DISP ENDP

CODE ENDS

END BEGIN

执行完本程序,屏幕将显示:

please enter any key when ready!

3

00110011

A

01000001

18

相关主题
文本预览
相关文档 最新文档