微机原理与系统设计实验6.docx

上传人:b****6 文档编号:4692542 上传时间:2022-12-07 格式:DOCX 页数:18 大小:107.19KB
下载 相关 举报
微机原理与系统设计实验6.docx_第1页
第1页 / 共18页
微机原理与系统设计实验6.docx_第2页
第2页 / 共18页
微机原理与系统设计实验6.docx_第3页
第3页 / 共18页
微机原理与系统设计实验6.docx_第4页
第4页 / 共18页
微机原理与系统设计实验6.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

微机原理与系统设计实验6.docx

《微机原理与系统设计实验6.docx》由会员分享,可在线阅读,更多相关《微机原理与系统设计实验6.docx(18页珍藏版)》请在冰豆网上搜索。

微机原理与系统设计实验6.docx

微机原理与系统设计实验6

 

微机原理与系统设计实验指导书

 

电子科学与技术

福州大学物理与信息工程学院

目录

实验一数据传送程序1

实验二数据运算程序2

实验三键盘、显示器操作程序3

实验四8255接口实验5

实验五8253音频接口实验6

实验六0832小直流机转速实验9

实验七综合实验11

附:

DEBUG主要命令12

实验一数据传送程序

一、实验目的:

1、掌握传送类程序的基本设计框架;

2、掌握程序汇编、连接、调试的全过程;

3、掌握汇编程序Debug的使用及观察方式。

二、实验内容

已知有一个以“$”为标志结束的字符串存于以地址string1开始的内存中,编程将上述字符串存于以地址string2开始的内存中。

三实验步骤

用masm.exe实现正确编译,用link.exe实现正确连接,用debug.exe实现对程序的跟踪、调试、观察。

用debug.exe对程序调试、观察

-NC:

\JK\JK\CAI2000\STR.EXE

-L;调入文件

-T;单步运行

-T30;运行

-DDS:

0000;看结果

-Q;退出

四、编程提示

由于字符串未知不能用计数方式,要使用“$”来控制循环的退出。

参考程序(有部分错误,需要修改)

DATASEGMENT

STRING1DB'MNOPQXYZ$'

STRING2DB50DUP(?

DATAENDS

COEGSEGMENT

ASSUMEDS:

DATA,CS:

COEG

START:

MOVAX,DATA

MOVDS.AX

LEASI,STRING1

LEADI.STRING2

NEXT:

CMPBYTEPTR[SI],'$'

JZJSP

MOVAL,[SI]

MOV[DI],AL

INCSI

INCDI

JMPNEXT

JSP:

MOVAH,4CH

INT21H

COEGENDS

ENDSTART

五思考问题

1单步运行的结果如何查看。

2Debug各常用指令T,D,Q,G,L,N的用法。

3各段寄存器的内容及指针的内容如何看。

4内存的查看及表示含义,字符串查看的方法。

5结果正确与否,如何验证?

6每一指令的具体用途?

实验二数据运算程序

一、实验目的:

1、掌握运算类程序的基本设计框架;

2、掌握汇编程序调试和验证方法;

3、掌握Debug的使用及观察方式。

二、实验内容

从内存num开始的单元中存放8个同学的某门课的考试成绩,试编写程序求出该门课的总成绩及平均成绩。

三、实验步骤:

用debug.exe对程序调试、观察。

-NC:

\JK\JK\CAI2000\STR.EXE

-L;调入文件

-T

-T30(G00000030);运行

-DDS:

0000H;看结果

-Q;退出

四、编程提示

由于循环次数已知,可用movcx,08h;loopsum方式循环。

注意:

除法运算、移位运算、累加和的进位等.

参考程序

DATASEGMENT

numDw1,2,3,4,5,6,7,8

sumdw?

avedw?

DATAENDS

STACKSEGENT

STACKENDS

COEGSEGMENT

ASSUMEDS:

DATA,SS:

STACK,CS:

COEG

START:

MOVAX,DATA

MOVDS.AX

LEASI,NUM

MOVCX,08H

MOVAX,0H

LOP:

ADDAX,[SI]

INCSI

INCSI

LOOPLOP

MOVSUM,AX

SHRAX.1

SHRAX,1

SHRAX,1

MOVAVE,AX

MOVAH,4CH

INT21H

COSEGENDS

ENDSTART

五思考要求

1如何验证结果的正确及运行过程中的错误。

2比较字节与字的存储。

3修改程序,求出最大值,放入内存。

4内存的查看及表示含义,数的查看。

实验三键盘、显示器操作程序

一、实验目的:

1、掌握EXE文件的执行;

2、掌握汇编程序的DOS功能调用;

3、掌握汇编程序的键盘和显示器的使用。

二、实验内容

从键盘上输入5个字符如ABCDE,每组中间用空格分割后加括号输出

三、实验步骤:

执行exe程序,直接观察结果。

四、编程提示

验证结果的正确(通读程序,对程序修改,需要增加指令后,才能看到结果,然后再按要求修改程序)

DATASEGMENT

NUMDB'<',13DUP(?

),'>','$'

DATAENDS

STACKSEGMENT

STACKENDS

COSEGSEGMENT

ASSUMEDS:

DATA,SS:

STACK,CS:

COSEG

START:

MOVAX,DATA

MOVDS,AX

LEASI,NUM

INCSI

MOVCX,05H

LOP:

MOVAH,01H

INT21H

MOV[SI],AL

INCSI

MOV[SI],20H

INCSI

LOOPLOP

DECSI

MOV[SI],'>'

LEADX,NUM

MOVAH,4CH

INT21H

COSEGENDS

ENDSTART

五问题思考

1比较前两次程序运行如何看结果。

2理解程序中内存分配的意思。

3结果正确与否?

实验四8255接口实验

一、实验目的:

1、掌握汇编程序的接口8255原理及使用方法

2、掌握接口实验箱的使用方法。

3、掌握实验平台对外部接口的控制观察方式。

二、实验内容

通过实验箱外接8255芯片用键盘控制小灯,让小灯显示,设定8255的PA口为开关量输入,PB口为开关量输出,要求能随时将PA口的开关状态通过PB口的发光二极管显示出来。

三、实验步骤:

1、查看实验箱的内的组成部件,连线实验箱电路,理解外接电路。

2、程序跟踪,观察每步结果,理解过程。

3、修改程序,达到要求。

四实验电路及连线

将K1-K8用连线连至8255的PA0-PA7,将DL1-DL8用连线连至8255的PB0-PB7,8255CS用连线连至译码处的200H-207H这个插孔。

五编程提示

1在Debug下使用IN,OUT指令对外部接口操作,验证硬件的连接。

.-O200,39

-O201,FF

2注意8255的各个端口的地址及初始化操作

3编程验证结果的正确。

参考程序(部分有错,地址错误)

DATASEGMENT

DATAENDS

STACKSEGMENTSTACK

STADW50DUP(?

TOPEQULENGTHSTA

STACKENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,ES:

DATA,SS:

STACK

START:

MOVDX,209H;设置为A口输入,B口输出

MOVAL,90H

OUTDX,AL

BG:

MOVDX,208H;将A口状态从B口输出

INAL,DX

MOVDX,202H

OUTDX,AL

JMPBG

CODEENDS

六问题思考

1理解程序的意思及调试方法

2修改程序,使K1-K8中的K1键合上时,其余键打开时,退出程序。

3输入使小灯循环亮的程序。

注意延时子程序的调用。

实验五8253音频接口实验

一、实验目的:

1、掌握了解定时器8253的硬件连接方法及时序关系。

掌握8253的各种模式编程及原理

2、了解如何利用PC机内部电路产生音乐的方法.

3、了解音乐产生的基本原理。

二、实验内容

通过计算机的内部电路的8253定时芯片时芯片及8255芯片,编程使计算机的数字键1,2,3,8等作为电子琴按键产生相应的音阶。

三、实验原理

1、对于音乐的每个音阶都有确定的频率,能产生不同的音符。

2、利用PC机内部的8253定时芯片产生一个方波的数据,就可以发出不同的声音。

利用PC机内部的8255芯片可以控制8253是否工作。

不同频率的区别,可通过调节8253转换器输出数据的时间间隔,例如:

发"1"频率为261.1HZ,周期为1/261.1=3.83ms,输出数据的时间间隔为3.83ms/32=0.12ms。

按下某键后发音时间的长短可以由发出的方波的个数多少来控制

四、实验步骤:

1、看懂电路,理解电路连接原理。

2、理解程序,了解不同按键的代码

3、修改程序,使键盘控制音乐达到要求。

五、实验电路

六编程提示

datasegment

Freqdw131,147,165,175,196,220,247,262

dw262,294,330,349,392,440,492,524

dw524,588,660,698,784,880,988,1048

dataends

codesegment

assumecs:

code,ds:

data

stgo:

movax,data

movds,ax

loop0:

movsi,0

loop1:

movah,0

int16h

cmpal,1bh

jedone

cmpal,2ch

jeloop0

cmpal,2eh

jnenext1

movsi,16

jmploop1

next1:

cmpal,2fh

jnenext2

movsi,32

jmploop1

next2:

subal,30h

jznext3

decal

cmpal,8

jaeloop1

movbl,al

movbh,0

shlbx,1

movcx,freq[bx][si]

moval,0b6h

out43h,al;PC8253地址

movdx,12h

movax,3280h

divcx

out42h,al;PC8253地址

moval,ah

out42h,al;

inal,61h

oral,3

out61h,al;PC8255地址

jmploop1

next3:

inal,61h;PC8255地址

andal,0fch

out61h,al

jmploop1

done:

movah,4ch

int21h

codeends

endstgo

七问题

1哪些按键能影响音乐,如何影响。

2对照硬件,理解整个软件过程。

3修改程序,使ASD等按键发出1,2,3的声音。

实验六0832小直流机转速实验

一、实验目的:

1、掌握0832性能及编程方法

2、掌握接口实验箱的使用方法。

3、掌握直流电机的控制方法。

二、实验内容

通过实验箱外接0832芯片及直流电机,利用0832输出一串脉冲,经放大后驱动小直流电机,利用开关K1-K5控制改变脉冲的电平及持续时间,达到使电机加速减速的目的。

三、实验原理

小直流电机的转速是由输出脉冲的占空比决定,正向占空比越大,转速越快,反之越慢。

再本实验中模拟量的输出为双级性,当输出数字输出数字为0H时,输出为0,当输出数字大于0H时,输出为正,本实验的输入数字量只有2个(0H,FFH),通过不同的延迟时间,达到改变小电机转速目的。

四实验步骤:

1、按要求连接实验箱电路,理解外接电路。

2、测试不同输出电压时直流电机的转速,达到要求。

五实验电路及连线

用导线将0832片选信号CS接至138译码200H-207H,将Aout接直流电机的输入端.将8255的片选信号CS接至208H-20FH,将PA0-PA5接K0-K5.

六、编程提示

Port1equ290h

Port2equ28bh

port3equ28ah

datasegment

buf1dw?

buf2dw?

dataends

codesegment

assumecs:

code

start:

movdx,port2

moval,8bh

outda,al

moval,80h

movdx,port1

outdx,al

movah,1

int16h

jeintk

movah,4ch

int21h

intk:

movdx,port3

inal,dx

testal,01h

jnzk0

testal,02h

jnzk1

testal,04h

jnzk2

testal,08h

jnzk3

testal,10h

jnzk4

testal,20h

jnzk5

jmplll

k0:

movbuf1,0400h

movbuf2,0330h

delay:

movcx,buf1

delay1:

loopdelay1

moval,0ffh

movdx,port1

outda,al

movcx,buf2

delay2:

loopdelay2

jmplll

k1:

movbuf1,0400h

movbuf2,0400h

jmpdelay

k2:

movbuf1,0400h

movbuf2,0500h

jmpdelay

k3:

movbuf1,0400h

movbuf2,0600h

jmpdelay

k4:

movbuf1,0400h

movbuf2,0700h

jmpdelay

k5movbuf1,0400h

movbuf2,0800h

jmpdelay

codeends

endstart

七提问题

1,理解程序的意思及调试方法

2,修改程序,使转速加快或减速.

实验七综合实验

一、实验目的:

1、灵活利用所学的知识,编写出具有一定功能的程序

2、深入利用接口实验箱的各种器件设计程序。

3、应用计算机的键盘、显示器和声音交互的功能。

二、实验内容

通过实验箱及计算机的键盘或显示器,利用所学的程序,编写出具有一定功能的综合实验的内容。

实验内容必须包含硬件控制。

三、实验要求

(1)设计具体的实验内容

(2)硬件连接

(3)软件实现

(4)结果验证

(5)书写设计报告(包括目的,内容,硬件,软件,结果,使用器件等)

附:

DEBUG主要命令

  

  DEBUG是为汇编语言设计的一种高度工具,它通过单步、设置断点等方式为汇编语言程序员提供了非常有效的调试手段。

  一、DEBUG程序的调用

  在DOS的提示符下,可键入命令:

  C:

\DEBUG[D:

][PATH][FILENAME[.EXT>[PARM1][PARM2]

  其中,文件名是被调试文件的名字。

如用户键入文件,则DEBUG将指定的文件装入存储器中,用户可对其进行调试。

如果未键入文件名,则用户可以用当前存储器的内容工作,或者用DEBUG命令N和L把需要的文件装入存储器后再进行调试。

命令中的D指定驱动器PATH为路径,PARM1和PARM2则为运行被调试文件时所需要的命令参数。

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

  二、DEBUG的主要命令

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

  _D[address]或_D[range]

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

  -d100120

  18E4:

0100c70604023801c706-06020002c7060802G...8.G.....G...

  18E$:

01100202bb0402e80200-CD20505156578B37..;..h..MPQVW.

  18E4:

01208B

  其中0100至0120是DEBUG显示的单元内容,左边用十六进制表示每个字节,右边用ASCII字符表示每个字节,·表示不可显示的字符。

这里没有指定段地址,D命令自动显示DS段的内容。

如果只指定首地址,则显示从首地址开始的80个字节的内容。

如果完全没有指定地址,则显示上一个D命令显示的最后一个单元后的内容。

  2、修改存储单元内容的命令有两种。

  ·输入命令E(ENTER),有两种格式如下:

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

命令格式为:

  -Eaddress[list]

  例如,-EDS:

100F3'XYZ'8D

  其中F3,'X','Y','Z'和各占一个字节,该命令可以用这五个字节来替代存储单元DS:

0100到0104的原先的内容。

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

命令格式为:

  -Eaddress

  例如,-EDS:

100

  则可能显示为:

  18E4:

010089.-

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

  18E4:

010089.781B.-

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

  ·填写命令F(FILL),其格式为:

  -Frangelist

  例如:

-F4BA:

01005F3'XYZ'8D

  使04BA:

0100~0104单元包含指定的五个字节的内容。

如果list中的字节数超过指定的范围,则忽略超过的项;如果list的字节数小于指定的范围,则重复使用list填入,直到填满指定的所有单元为止。

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

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

  -R

  例如,-r

  AX=0000BX=0000CX=010ADX=0000SP=FFFEBP=0000SI=0000DI=0000

  DS=18E4ES=18E4SS=18E4CS=18E4IP=0100NVUPDIPLNZNAPONC

  18E4:

0100C70604023801MOVWORDPTR[0204],0138DS:

0204=0000

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

  -Rregistername

  例如,键入

  -RAX

  系统将响应如下:

  AXF1F4:

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

 

  -Rbx

  BX0369:

059F

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

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

  -RF系统将响应,如:

  OVDNEINGZRACPECY-

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

  OVDNEINGZRACPECY-PONZDINV

  即可,可见键入的顺序可以是任意的。

  4)运行命令G,其格式为:

  -G[=address1][address2[address3…>

  其中,地址1指定了运行的起始地址,如不指定则从当前的CS:

IP开始运行。

后面的地址均为断点地址,当指令执行到断点时,就停止执行并显示当前所有寄存器及标志位的内容,和下一条将要执行的指令。

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

  ·逐条指令跟踪

  -T[=address]

  从指定地址起执行一条指令后停下来,显示所有寄存器内容及标志位的值。

如未指定地址则从当前的CS:

IP开始执行。

  ·多条指令跟踪

  -T[=address][value]

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

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

  -A[address]

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

必须注意:

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

  7)反汇编命令U(Unassemble)有两种格式。

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

  -U[address]

  例如:

  -u100

  18E4:

0100C70604023801MOVWORDPTR[0204],0138

  18E4:

0106C70606020002MOVWORDPTR[0206],0200

  18E4:

010CC70606020202MOVWORDPTR[0208],0202

  18E4:

0112BBO4O2MOVBX,0204

  18E4:

0115E80200CALL011A

  18E4:

0118CD20INT20

  18E4:

011A50PUSHAX

  18E4:

011B51PUSHCX

  18E4:

011C56PUSHSI

  18E4:

011D57PUSHDI

  18E4:

011E8B37MOVSI,[BX]

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

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

  -U[range]

  例如:

  -u10010c

  18E4:

0100C70604023801MOVWORDPTR[0204],0138

  18E4:

0106C70606020002MOVWORDPTR[0206],0200

  18E4:

010CC70606020202MOVWORDPTR[0208],0202

  或

  -u100112

  18E4:

0100C70604023801MOVWORDPTR[0204],0138

  18E4:

0106C70606020002MOVWORDPTR[0206],0200

  18E4:

010CC70606020202MOVWORDPTR[0208],0202

  

  可见这两种格式是等效的。

  8)命名命令N(Name),其格式为:

  -Nfilespecs[filespecs]

  命令把两个文件标识符格式化在CS:

5CH和CS:

6CH的两个文件控制块中,以便在其后用L或W命令把文件装入存盘。

filespecs的格式可以是:

  [d:

][path]filename[.ext]

  例如,

  -Nmyprog

  -L

  -

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

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

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

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