电气工程与自动化计算机综合实践指南_第1页
电气工程与自动化计算机综合实践指南_第2页
电气工程与自动化计算机综合实践指南_第3页
电气工程与自动化计算机综合实践指南_第4页
电气工程与自动化计算机综合实践指南_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

四川大学网络教育学院

实践课程汇报

实践课程计算机综合实践9002

校外学习中心重庆黔江奥鹏学习中心[20]VIP

专业电气工程及其自动化

层次____________专升本_____________

年级___________W03_______________

学生姓名__________邱晓帆______________

学号aDH1001g1003

2011年8月10日

试验内容:

一、熟悉、使用DEBUG调试工具

[摘要]借助DEBUG调试工具来发现汇编语言程序的错误所在并

加以改正。通过试验,掌握DEBUG的I常用基本命令,学会怎样在

windows的命令模式下启动DEBUG,进而学会怎样使用DEBUG查看CPU

和内存,以及进行程序的跟踪调试等。

1试验目的

1.1学习怎样在WindowsH勺命令模式下启动DEBUGo

1.2掌握DEBUG的常用基本命令。

1.3学习怎样使用DEBUG查看CPU和内存以及进行跟踪调试。

2试验设备及软件环境

装有DOS系统及MASM6.X的微机一台。

3预备知识

3.1什么是DEBUG?

Debug是DOS、Windows都提供的实模式(8086方式)程序的调

试工具。使用它,可以查看CPU多种寄存器日勺内容、内存的状况和在

机器码级跟踪程序的运行。

3.2常用的Debug命令及其含义

表1.1Debug命令及其含义

命令格式功能阐明

R[寄存器名]查看、变化CPU寄存器的内容

D[范围]查看指定范围内的J内存中H勺内容

E起始地址字节值表用值表中日勺值替代从“起始地址”开始日勺内存

单元中的内容

U[范围]反汇编,将内存中日勺机器指令翻译成汇编指令

T[=地址][指令数]执行一条机器指令

A[地址]以汇编指令的格式在内存中写入一条机器指

Q退出Debug,回到DOS状态

4启动DEBUG

4.1打开Windows命令窗口

选择“开始”一“运行”一输入“cmd”命令

4.2启动DEBUG

在命令窗口中启动DEBUG,将显示连接符“一”,这时可输入多

种DEBUG命令。

4.3有关使用命令的几点阐明:

•在提醒符“一”下才能输入命令,在按“回车”键后,该命令

才开始执行;

•命令是单个字母,命令和参数日勺大小写可混合输入;

•可用Fl、F2、F3、Ins、Del.一等编辑键来编辑本行命令;

•当命令出现语法错误时,将在出错位置显示“Error”;

•在DEBUG中使用时数都是以十六进制来表达日勺。

5试验内容

5.1R命令

作用:查看、变化CPU寄存器的内容

(1)显示所有寄存器之中的内容:输入R

我们重点关注AX、BX、CX、DX、CS及IP寄存器的内容,其他

寄存器SP、BP、SLDI、ES、SS及标志寄存器先不予理会。此外,

并列出了CS:IP所指向W、J内存单元处所寄存出J机器码,并将它翻译为

汇编指令。

(2)变化寄存器中的内容:输入RAX

在提醒符后输入1111,即可将AX的值设置为1111。在输入

R命令,查看修改后日勺寄存器值。

5.2D命令

作用:查看指定范围内的内存中的内容

(1)直接输入D命令

DEBUG将输出3部分内容,查看执行成果。

阐明:

•左辿是福行晌起始地址,用“XXXX:YYYY”表达,其中XXXX

表达内存单元时段地址,YYYY表达内存单元[I勺偏移量;

•中间以十六进制的形式显示从指定地址开始的128个内存单

元的内容,每行显示16个字节的内容;

•右边显示每个内存单元中的数据对应时可显示的ASCII码字

符,若没有对应可显示的ASCII码字符,DEBUG用”来替

代。

(2)执行带参数区JD命令

若执行带参数的命令D,DEBUG将显示指定地址范围口勺内容。带

参数日勺方式有三种。

•方式一:D起始位置

■DEBUG从起始位置开始显示128个字节的内容。

■输入命令:D1AF5:1OO

•方式二:D起始位置结束位置

■DEBUG从起始位置开始一直显示到结束位置。

■输入命令:DDS:10011F

•方式三:D起始位置L长度

■DEBUG命令从起始位置开始显示指定长度内容。

■输入命令:DDS:100L10

使用带参数的D命令后,接着使用D命令,可列出后续的128

个内存单元的内容。

5.3E命令

格式:E起始地址字节值表

或E起始地址

作用:用值表中日勺值替代从“起始地址”开始的内存单元中的内

例1:将内存1000:0-1000:9单元中日勺内容分别写为0、1、2、

3、4、5、6、7、8、9,可用“E起始地址数据数据数据数据数

据……”的格式来进行。

环节:

①用D命令查看1000:0-1000:f单元日勺内容:D1000:0f

②用E命令修改从1000:0开始的10个单元中的内容:E1000:

00123456789

③用D命令查看1000:0〜1000:f单元中内容的变化:D1000:

0f

例2:用E命令向内存中写入字符。从内存1000:0开始写入:

数值1,字符“a",数值2,字符“b",数值3,字符数”。

环节:

①用D命令查看1000:0处口勺内容:D1000:0

②用E命令输入:E1000:01'a'2'b'3'c'

③用D命令查看1000:0〜1000:f单元中内容的变化:D1000:

0f

例3:用E命令向内存中写入字符串。从内存1000:0开始写入:

数值L字符串“a+b”,数值2,字符串“C++”,数值3,字符“IBM”。

环节:

①用D命令查看1000:0处日勺内容:D1000:0

②用E命令输入:E1000:01'a+b'2'c++'3'IBM'

③用D命令查看1000:0-1000:f单元中内容由J变化:D1000:

0

例4用E命令以提问的方式来逐一地修改从某一地址开始的内存单

元中区I内容。

以从1000:10单元开始为例C

环节:

①用D命令查看1000:10处的内容:D1000:10

②用E命令输入:E1000:10,按Enter键

③DEBUG将显示起始地址1000:0010以及第一种单元(即1000:

0010单元)的原始内容:00.,然后光标停在”W、J背面,提

醒输入想要写入的数据,此时有两种选择:其一输入数据,完

后按空格键,即用输入的数据改写且前日勺内存单元;其二不输

入数据,直接按空格键,则表达不对目前内存单元进行改写

④目前单元处理完毕后(不管是改写或者没有改写,只要按了空

格键,就表达处理完毕),DEBUG将显示下一种内存单元的原始

内容,并提醒进行修改,可以用同样的措施进行处理

⑤所有但愿改写的内存单元改写完毕后,按ENTER键,E命令结束

⑥用D命令查看1000:10单元中内容的变化:D1用0:10

6试验任务

C:\>debug

-F10017F00

-A100

0B3E:0100MOVDL,01

0B3E:0102MOVAH,02

0B3E:0104INT21

0B3E:01061NT20

0B3E:0108

-NC:\1ST

-RBX

BX0000

*

-RCX

CX0000

:8

-w100

Writing00008bytes

-Q

C:\>

在dos下执行程序

C:\>dir1st*.*

VolumeindriveCisNTFSCCCC

VolumeSerialNumberisFC03-2958

DirectoryofC:\

2010-8-1818:5181ST

1File(s)8bytes

0Dir(s)1,080,619,008bytesfree

C:\>lst

©

C:\>

措施一:

C:\>DEBUG1ST

-G=100

Programterminatednormally

措施二:

C:\>DEBUG

-NC:\1ST

-L100

-G=100

©

Programterminatednormally

借助DEBUG调试工具来发现汇编语言程序的错误所在并加以改

正。

7体会

这次试验,由于要自己去设计整个过程,因此就去理解学习自己

本来并没有真正弄懂W、J东西。例如某些程序日勺代码的J意思,汇编语言

的逻辑。使我对前面所做出J试验有了原理性KJ理解,回头看某些试验,

也知其然其因此然了。同步对书本上讲出J某些内容,不再像此前那样

觉得抽象,通过这次设计,有了详细rJ理解。

二、设计汇编语言程序

1试验目的

进行程序设计试验,掌握汇编语言程序。试验包括对字符串记录

程序进行设计;设计双字乘法程序设计;设计字符串记录程序设计双

字乘法程序设计。掌握宏汇编中的标号时使用

学会使用msam编写简朴的I程序

2预备知识

汇编语言程序设计是一门实践性很强口勺课程。编写程序、上机调

试、运行程序是深入学习和掌握汇编语言程序设计的必要手段。在编

译汇编程序后,需要进行调试,DEBUG.EXE是DOS提供时用于调试可

执行程序日勺工具软件,是汇编语程序设计中常用日勺调试工具。在DEBUG

环境下,不仅可以调试经汇编、连接生成日勺可执行程序,也可以编写

简朴的程序。调试汇编语言程序,能使顾客接触到计算机内部,容许

顾客直接观测和修改CPU日勺寄存器;能观测、修改内存单元;容许直

接输入机器指令并单步执行;能反汇编程序。可以说,debug是观测

和理解计算机内部运行状况日勺有利助手。

3汇编语言源程序上机操作过程

3.1源程序上机过程流程图

调LINK程序,连接目的文献?

连接有错?

EXE文献存盘

用DELBUG杳错

N

3.2试验环节

1)编写一段代码(m.asm)功能是:显示字符串

datasegmentmovax,num

numdw8072horax,ax

dataendsjnsdone

codesegmentnegax

assumecs:code,ds:datamovnum,aX

startprocfardone:rte

pushdsstartendp

xorax,axcodeends

pushaxendstart

movax,data

movds,ax

2)在DOS提醒符下键入:对名为m.asmd的文献进行编译,连接

生产.obj和.exe文献:-cd..

_cd..

-cd\masm

-msam

-m

-linkt

-debugm.exe得到可执行文献后就可以直接调用可执行文献名,

从盘上调到内存中运行。

程序及运行成果(或试验数据记录及分析)

Microsoft(R)OverlayLinkerVersion3.60

Copyright(C)MicrosoftCorp1983-1987.Allrightsreserved.

RunFileIN.EXE):

ListFileINULNAPJ:

LibrariesI.LIBJ:

LINK:warningL4021:segNent

C:MO$M>debugH.CXG

-u

RICmeIEAX

1A1C33C0os

141Ceee3sofix,14

141COeeiB81B14AX

fl附x

141Ceee?8ED8(O

141CnieeeeAX

141COBCOos.5

7905

»ieF7D8fix,

»12A30000flx

1015C8ooi

附16FF362A2112124J

MIAB8E005AflXx.05ED

MDtbW

»1F90

Proaraaternindtednoran1Iv

ix=eeeeBX^OOOOCX=OO26DXOOOOSP-OOOOS

is-ueeES=140BSS=141BCS=U1CIP-0000%IJL°MO

41C:08OOIEPUSHDS

dds:eeeeu

4邮:ee幽CD20FF升

3)编写一段代码(m.asm)功能是:显示字符串

datasegmentip3:cmpax,64hmovdl,[bx+si]

sdb4dup(?)movds,axadddl,30h

xdb?jblp4int21h

dataendsincdlincsi

codesegmentsubax,64hlooplp7

assumecs:code,ds:datajmplp3movah,1

start:movax,datelp4:movs+1,dlint21h

movds,axmovdl,0movah,4ch

movbx,1lp5:empax,Oahint21h

movax,0jblp6codeends

movex,100incdlendstart

lop:addax,bxsubax,Oah

incbxjmplp5

loop1op1p6:movs+2,dl

movdl,0movs+3,al

Ipl:cmpax,3e8hmovbx,offsets

jblp2movsi,0

incdlmovah,2

subax,3e8hmovcl,4

jmpIpllp7:movdi,[bx+si]

1p2:movs,dlordi,30h

movdl,0

4)在DOS提醒符下键入:对名为m.asmd日勺文献进行编译,连接

生产.obj和.exe文献:-cd..

-cd..-msam-linkt

-cd\masm-m-debugm.exe

程序及运行成果(或试验数据记录及分析)

Microsoft(R)OverlayLinkerVersion3.60

Copyright(C)MicrosoftCorp1983-1987.Allrightsreserved.

RunFileIN.EXE):

ListFile(NUL.HAP):

Libraries(.LIBI:

LINK:warningL4021:nostocksegnent

I::MOSH)<M3OU9R.«xo

IEAX

U1C:MK)133C0os

U1C:AW350fix,14

1410:0064B81B14AX

fl附x

uic:eee7SEDS(O

filOOOOAX

OBCOos.5

7905fix,

10F/08

12A30000flx

15CBooi

16FF362A2112124J

1AB8ED05AflXx.05ED

10EB880027

IF90

ProyraatcmindtednorHalIv

几*0BX=0000CX=0026DX0OOOSP-0000眸8W8SI^OOOODI0000

畛=1406ES=140BSS=141BCS=U1CIP-0000NVUPEIPLNZNfiP0NC

141C:08OOIEPUSHDS

-dds:oeeou

uw:eeeeco20FF卯...

4体会

编写好一种程序后,要想在计算机中调试、运行,必须要有一种

程序来支持程序口勺编辑、修改等操作。这种支援程序叫编辑程序,编

辑程序有诸多种,但按功能划分,重要有两大类。一类是行编辑程序,

如EDIT编辑程序;另一类是全屏幕编辑程序如QuickEdit(QE)。行

编辑程序功能较弱,不如全屏幕编辑程序以便、灵活。在编辑汇编语

言的源程序时,可以使用已熟悉的。

三、8253定期器/计数器接口与数字电子琴

[摘要]选择运用试验仪扬声器/PC机内8253驱动内扬声器变化

定期器2的计数值来变化声音频率,通过编程来获得声调(频率)和

节奏(延时长短),运用键盘1、2、3、4、5、6、7、8设计一种电子

琴,通过按数字键响对应的乐符1、2、3、4、5、6、7、i,使能演

奏简朴的乐曲。使计算机演奏出乐曲来。

1试验目的

检查和提高我在原理与接口综合应用方面分析问题与处理问题的能

力,同步也给我提供更多、更好的训练机会。根据设计规定,尽量完毕

设计规定的功能,选择最合适的器件,构成最有效日勺硬件电路来完毕。

2试验规定

选择运用试验仪扬声器/PC机内8253驱动内扬声器与键盘1、2、3、

4、5、6、7、8设计一种电子琴,通过按数字键响对应的乐符1、2、3、

4、5、6、7、i,使能演奏简朴的乐曲。

3程序流程和程序实现

3.1流程图

开始

读出音阶值保留

赋对应频率

延时

3.2程序

segsegment

freqdw262,294,330,349,392,440,494,523

;扬声器发声各频率值

msgdb'Pressl,2,3,4,5,6,7,8,ESC:',0dh,0ah;$,

timdw400

numdb?

dsegends

ssegsegmentstack

dw256dup(?)

ssegends

csegsegment

assumecs:cseg,ds:dseg

start:movax,dseg

movds,ax

movdx,offsetmsg

movah,9

int21h;显示提醒信息

sss:movah,7

int21h

;等待从键盘接受字符,不回显al=asc码

cmpal,lbh

jeexit;若为ESC键,则转EXIT退出

cmpal,3lh

jlsss;不不小于31h

cmpal,38h;不小于38h

jgsss;不在之间转sss

subal,31h

movnum,al;num求出对应日勺时间常数H勺序号

jinei:moval,num

addal,al

movah,()()h

movsi,ax

again:movdi,freq[si]

movbx,tim

callgen

jmpsss

exit:movah,4ch

int21h

genprocnear

moval,0b6h;设置8253通道2方式3二进制计数

out43h,al

movdx,12h

movax,12928

;DXAX=896*533h=18*65536+12928=1.19M

divdi

out42h,al;8253通道2口设置初值

moval,ah

out42h,al

inal,61h;读8255PB口

movah,al

oral,3

out61h,al

waitl:movex,Oh

delay3:movax,1();延时子程序

delay2:nop

decax

jn7delay2

loopdelay3

decbx

jnzwaitl

moval,ah

out61h,al

ret

genendp

csegends

endstart

3.3试验仪电子琴流程图

主程序延时于程序

3.4试验电路:

82538255DAC0832

3.5程序

datasegment

ioportequ0d4()0h-0280h

io8253aequioport+280h

io8253bequioport+283h

io8255aequioport+288h

io8255bequioport+28bh

io0832aequioport+290h

dataldb80h,96h,0aeh,0c5h,0d8h,0e9h,0f5h,0fdh

db0ffh,0fdh,0f5h,0e9h,0d8h,0c5h,0aeh,96h

db80h,66h,4eh,38h,25h,15h,09h,04h

db00h,04h,09h,15h,25h,38h,4eh,66h;正弦波数据

timedb120,106,94,89,79,70,63,59;发不•样音口寸8253口勺计数器

初值

msgdb'Pressl,2,3,4,5,6,7,8,ESC:',0dh,0ah,$

numdb?;num为8253计数器初值日勺序号

dataends

codesegment

assumecs:code.ds:data

start:movax,data

movds,ax

movdx,offsetmsg

movah,9

int21h;显示提醒信息

sss:movah,7

int21h;从键盘接受字符,不回显

cmpal,lbh

jeexit;若为ESC键,则转EXIT

cmpal,3lh

jlsss

cmpal,38h

jgSSS;若不在之间转sss

subal,31h

movnum,al;求出对应[f、j时间常数ff、j序号

movex,60;取60次32个正弦波数据

ddd:movsi,()

111:moval,data1[si];取正弦波数据

movdx,io0832a

outdx,al;放音

calldelay;调延时子程序

incsi

cmpsi,32;与否取完32个数据

jllll;若没有,则继续

loopddd;总循环次数60与否完,没有,则继续

jnipsss

exit:movah,4ch

int21h

delayprocnear;延时子程序

ccc:movbx,offsettime

movdx,io8253b;置8253通道0为方式0工作

moval,l()h

outdx,al

movdx,io8255b;设8255A口输入

moval,9bh

outdx,al

movaLnum;取对应的时间常数

xlat

movdx,io8253a

outdx,al;向8253通道。输出

kkk:movdx,io8255a

inal,dx;从8255A口读一字节

testal,01^IJPAO口与否为1

jzkkk;若不为1,则转KKK

ret;子程序返回

delayendp

codeends

endstart

4测试方案和测试成果

测试方案测试成果

启动程序,出现按继提醒,按下机内/试验仪发出对应的音阶

1〜8键

变化开关状态(可随时任意变对应发出对应口勺音阶

化),按1〜8键

“弹琴”发出优美旋律

按下ESC键退出程序

5体会

通过这次微机试验课程设计,使我对微机软硬件结合有了深入

W、J理解。本来并不太清晰是什么意思,一直都很模糊,听书本也是很

迷茫;而之前的那些单元试验,也没有都做好。之前做日勺试验,由于

大部分是验证性日勺,因此就很被动地去做,甚至并没有想为何要那样

连电路,内部的代码更没有认真看。这次课程设计,要自己去设计整

个过程,理解学习自己本来并没有真正弄懂日勺东西。例如某些程序的

代码日勺意思,汇编语言日勺逻辑,例如某些芯片的用途。使我对前面所

做日勺试验有了原理性的理解,回头看某些试验,也知其然其因此然了。

同步对书本上讲H勺某些内容,不再像此前那样觉得抽象,通过这次设

计,有了详细日勺理解。

同步,我也懂得了设计一种项目,应当怎样下手。应当先对项目

规定有个全面日勺理解,懂得要做什么,然后根据规定所要波及到日勺知

识我们要积极去摄取,结合自己已学过日勺,再对整体框架有个感知,

心里有数后,进行设计。设计时用流程图,这很重要,这样整个思绪

就很清晰,并且是按照软硬件语言H勺逻辑次序进行,就很以便。设计

过程可以分模块,不要一开始就想把所有的功能都实现了,应当一种

模块一种模块地实现,再总的连起来,实现最终的总模块。在每个模

块设计时,尽量想到比较简朴的设计,简化编程和电路,也可少出错。

对微机是这样,对其他的像数字系统设计:也是同样的。

因此,我也觉得微机试验的这种形式的课程设计是很好也很有必

要的,对我们对微机试验的理解有很大协助口

四、实时时钟试验

1试验目的

1.1理解RTC实时时钟特性、功能、构造

1.2理解RTC实时时钟寄存器描述

L3理解RTC中断

2试验过程

2.1运用RTC口勺增量功能进行1s口勺定期,当定期时间到,取反LED

控制

#include"config.h〃

SdefineLEDICON0x00000400APO.10口为LED1

控制器*/

/*定义Fpclk值,用于设置串口波特率*/

ttdefineFPCLK3686250L

2.2初始化实时时钟

voidRTCIni(void)

{PREINT=FPCLK/32768-l;〃设置预分频器

PREFRAC=FPCLK-(FPCLK/32768)*32768;

YEAR=2023;〃初始化年

M0NTH=6;〃初始化月

D0M=10;〃初始化日

CIIR=OxOl;〃设置秒值的增量

产生一次中断

CCR=OxOl;〃启动RTC

)

2.3使用RTC的秒增量中断功能控制LED闪动

intmain(void)

{PINSELO=OxOOOOOOOO;〃引脚连接设置

PINSELl=OxOOOOOOOO;

IODIR=LEDICON;

RTCIni();〃初始化RTC

while(1)

{IOSET=LED1CON;〃熄灭LED1

while(O=(TLR&OxO1));〃等待RTC增量中

断标志

ILR=0x01;〃清除中断标志

IOCLR=LED1CON;〃点亮LED1

while(0==(ILR&0x01));

TLR=OxOl;

)

return(0);

U1

S3.3V

XTAL1P0.0.H-xD0:PWM1

XTAL2P0.1/RxDaPWM3

P0.2/SCUCAP0.0遑

P0.3/SDA/MAT0.0

P0.4/SCK/OAP0.1

D

P0.5/MISO/MAT0.1遑

P0.6/MOSI/CAP0.2

P0.7/SSEUPWM2

P0.aaxD1,PWM4璞

P0.9/RxDVPWM6

P0.10/RTS1/CAP1.0

P0.11/CTS1/CAP1.1a

P0.12/DSR1XMAT1.0

P0.13/DTR1/MAT1.1

DBGSELP0.14/DCD1/EINT1H

P0.15/RI1/EINT2

P0.16/EINT0/MAT0.2

RTCKP0.17/CAP1.2/TRST

PO.IS/CAPl.a^TMS2

P0.19/MAT1.2/TCK-

RSTP0.20/MAT1.3/TDI3

P0.21/PWM50TDO-

0P0.22H-RACECLKH

1.8VP0.23/PIPESTAT0

H8i

P0.24/PIPESTAT1

9一

P0.25/PIPESTAT2

H一

V18P0.26/TRACESYNC

SsPO.Sy.Q-RACEPKTO/TRST

SsP0.28/TRACEPKT0/IMS

SsP0.29/TRACEPKT2/TCK

SSP0.30/TRACEPKT3/TDI

IP0.31/EXTIN0/TDO

2.4运行rtc进行计时,并将所计时间值不停地通过串口向上位机发

#include"config.h〃

SdefineLEDICON0x00000400/*P0.10口为LED1控

制端*/

/*定义Fpclk值,用于设置串口波特率*/

SdefineFPCLK2764800L

/*定义串口模式设置数据构造*/

typcdefstructUartMode

{uint8datab;〃字长度,5/6/7/8

uint8stopb;〃停止位,1/2

uint8parity;〃奇偶校验位,0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论