微机原理讲义.docx

上传人:b****7 文档编号:25444904 上传时间:2023-06-08 格式:DOCX 页数:37 大小:28.22KB
下载 相关 举报
微机原理讲义.docx_第1页
第1页 / 共37页
微机原理讲义.docx_第2页
第2页 / 共37页
微机原理讲义.docx_第3页
第3页 / 共37页
微机原理讲义.docx_第4页
第4页 / 共37页
微机原理讲义.docx_第5页
第5页 / 共37页
点击查看更多>>
下载资源
资源描述

微机原理讲义.docx

《微机原理讲义.docx》由会员分享,可在线阅读,更多相关《微机原理讲义.docx(37页珍藏版)》请在冰豆网上搜索。

微机原理讲义.docx

微机原理讲义

微型计算机原理

实验讲义

徐州师范大学物理系

二00三年二月

DEBUG主要命令

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

1、DEBUG程序的调用

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

C:

\DEBUG[d:

][path][filename[.ext]][parm1][parm2]

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

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

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

命令中的d指定驱动器,path为路径,parm1和parm2则为运行被调试文件时所需要的命令参数。

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

2、DEBUG的主要命令

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

-D[address]或

-D[range]

例如,按指定范围显

18E4:

0100示存储单元内容的方法为:

-D100120C70604023801C706-06020002C7060802G...8.G....G...

18E4:

01100202BB0402E80200-CD20505156578B37..;..H..MPOVW.

7

18E4:

01208B

其中0100至于20上DEBUG显示的单元内容。

左边用十六进制表示每个字节,右边用ASCII字符表示每个字节,·表示不可显示的字符。

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

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

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

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

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

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

命令格式为:

-EADDRESS[list]

例如,-EDS:

100F3‘X’‘Y’‘Z’8D,该命令可以用这五个字节来替代存储单元DS:

0100到此为止104的原先的内容。

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

命令格式为:

-Eaddress

例如,-ecs:

100

则可能显示为:

18E4:

010089。

-

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

18E4:

010089.781B.

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

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

-Frangelist

例如:

-FDS:

010001105F3‘XYZ’8D

使04BA:

0100∽0105单元包含指定的六个字节的内容。

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

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

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

-R

例如,-r

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

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

18E4:

0100C70604023801MOVWORDPTR[0204],0138DS:

0204=0000

其中标志位状态的含义见下表

标志名

OF

DF

IF

SF

ZF

AF

PF

CF

标志为1

OV

DN

EI

NG

ZR

AC

PE

CY

标志为0

NV

UP

DI

PL

NZ

NA

PO

NC

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

-Rregistername

例如,键入-rax

系统将响应如下:

AXF1F4

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

-rbx

BX0369

059F

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

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

-RF

系统将响应,如:

OVDNEINGZRACPECY-

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

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

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

-A[address]

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

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

例:

-ACS:

100

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

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

-U[address]

例如:

-U100

18E4:

0100C70604023801MOVWORDPTR[0204],0138

18E4:

0106C70606020002MOVWORDPTR[0206],0200

18E4:

010CC70608020202MOVWORDPTR[0208],0202

18E4:

0112BB0402MOVBX,0204

18E4:

0115E80200CALL011A

18E4:

0118CD20INT20

18E4:

011A50PUSHAX

18E4:

011B51PUSHCX

18E4:

011C56PUSHSI

18E4:

011D57PUSHDI

18E4:

011E8B37MOVSI,[BX]

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

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

-U[ramge]

例如:

-U10010C

18E4:

0100C70604023801MOVWORDPTR[0204],0138

18E4:

0106C70606020002MOVWORDPTR[0206],0200

18E4:

010CC70608020202MOVWORDPTR[0208],0202

-U100112

18E4:

0100C70604023801MOVWORDPTR[0204],0138

18E4:

0106C70606020002MOVWORDPTR[0206],0200

18E4:

010CC70608020202MOVWORDPTR[0208],0202

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

6)运行命令G(G0),其格式为G[=address1][address2[address3...]]

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

IP开始运行。

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

7)跟踪命令T(Trace),有两种格式;

·逐条指令跟踪

-T[=address]

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

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

IP开始执行。

·多条指令跟踪

-T[=address][value]

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

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

-Nfilespecs[filespecs]

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

5CH和CS:

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

filespecS的格式可以是:

[d:

][path]filename[.ext]

例如,

-Nmyprog

-L

-

可把文件myprog装入存储器。

9)装入命令L(Load),有两种功能。

·把磁盘上指定扇区范围的内容装入到存储器从指定地址开始的区域中。

其格式为:

-L[address[drivesectorsector]

·装入指定文件,其格式为:

-L[address]

此命令装入已在CS:

5CH中格式化了的文件控制块所指定的文件。

如未指定地址,则装入CS:

0100开始的存储区中。

10)写命令W(Write),有两种功能。

·把数据写入磁盘的指定扇区。

其格式为:

-Waddressdrivesectorsector

把数据写入指定的文件中。

其格式为:

-W[address]

此命令把指定的存储区中的数据写入由CS:

5CH处的文件控制块所指定的文件中。

如未指定地址则数据从CS:

0100开始。

要写入文件的字节数应先放入BX中。

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

-Q

它退出DEBUG,返回DOS。

本命令并无存盘功能,如需存盘应先使用W命令。

实验一DEBUG调试程序的使用

一、实验目的

掌握DEBUG的调试程序命令的使用方法。

二、实验仪器及系统

微型计算机

三、预习要求

⑴.、阅读DEBUG主要命令一节内容。

⑵、熟悉DOS的基本命令和DEBUG有关命令。

四、实验内容

用DEBUG命令,汇编和调试程序。

下面是“在屏幕上循环显示数字字符0~9”的程序

START:

MOVBL,3OH

FOLLOW:

MOVAL,BL

INCBL

CMPBL,3AH

JASTART

MOVDL,AL

MOVAH,02H

INT2IH

MOVDL,20H

MOVAH,02H

INT21H

MOVCX,0FFFFH

WAITING:

LOOPWAITING

JMPFOLLOW

1、用汇编命令汇编源程序

操作过程如下:

A:

\WJYL>DEBUG↓

-ACS:

100↓

0DC8:

0100MOVBL,30↓

0DC8:

0102MOVAL,BL↓

0DC8:

0104INCBL↓

0DC8:

0106CMPBL,3A↓

0DC8:

0109JA0100

0DC8:

010BMOVDL,AL↓

0DC8:

010DMOVAH,02↓

0DC8:

010FINT21↓

0DC8:

0111MOVDL,20↓

0DC8:

0113MOVAH,02↓

0DC8:

0115INT21↓

0DC8:

0117MOVCX,FFFF↓

0DC8:

011ALOOP011A↓

0DC8:

011CJMP0102↓

0DC8:

011E

-

2、用反汇编命令,验证输入程序是否正确。

操作和DEBUG的回答如下:

-UCS:

100

0DC8:

0100B030MOVBL,30

0DC8:

010288D8MOVAL,BL

0DC8:

0104FEC3INCBL

0DC8:

010680FB3ACMPBL,3A

0DC8:

010977F5JA0100

0DC8:

010B8802MOVDL,AL

0DC8:

010DB402MOVAH,02

0DC8:

010FCD21INT21

0DC8:

0111BZZCMOVDL,20

0DC8:

0113B402MOVAH,02

0DC8:

0115CDZ1INT21

0DC8:

0117B9FFFFMOVCX,FFFF

0DC8:

011AE2FELOOP011A

0DC8:

011CEBE4JMP0102

-

3、验证输入程序正确后,用命名命令和写盘命令,将在内存的调试程序存入磁盘操作过程和DEBUG的回答如下:

-NDSP0_9↓;设置文件标识符

-RBX↓;设置文件长度高位字

BX0000↓

0

-RCX;设置文件长度低位字

CX0000

20

-W;写入磁盘

Writing020bytes

-

4、用运行命令连续运行汇编语言程序

操作过程和运行结果如下:

-G=10011E↓;从汇编起始地址连续执行程序

0,1,2,3,4,5,6,7,8,9,0,……

执行程序后,在屏幕上循环显示数字字符0,……9。

5、重新启动DOS系统,用DEBUG的命名命令和装入命令,将DSPO_9文件装入内存,操作过程如下:

-NDSPO_9↓;设置文件标识符

-L↓;将DISP0_9文件装入内存

-UCS:

100↓;用反汇编检查读入文件

6、退出DEBUG

-Q↓

A:

\WJYL>

7、汇编和运行下列汇编语言源程序。

练习一:

产生定音的音响程序。

CS:

100MOVDX,1F40

INAL,61

ANDAL,FE

XORAL,02

OUT61,AL

MOVCX,0216

LOOP010E

DECDX

JNE0107

INT20

注:

更换CX常数可以产生不同的音调,更换DX常数可以改变不同的持续时间。

练习二、响铃程序。

CS:

100MOVBX,0010

MOVAH,02

MOVDL,07

INT21

MOVCX,6000

LOOP0100

DECBX

JNZ0103

INT20

注:

更换BX的常数可以改变响铃次数,更换CX的常数可以改变响铃间隔时间。

五、实验注意事项

汇编语言主要是在DEBUG下使用,要熟悉debug的操作命令,实验过程中程序调试以程序分析为基础。

六、思考题

程序运行的结束地址是否可以任意定,练习二中如何改变cx的大小可以延长响铃时间间隔。

七、实验总结

列出练习一和练习二汇编指令序列清单。

 

 

实验二程序调试方法

一、实验目的

1、进一步熟悉DEBUG调试程序主要命令的用法。

2、熟悉8088指令系统中主要命令的功能及用法。

二、实验仪器及系统

微型计算机

三、预习要求

⑴.、再次熟悉DEBUG主要命令和DOS的基本命令。

⑵、分析讲义中的汇编语言程序。

四、实验内容

(一).

1、用DEBUG中A命令输入下列程序段(从CS:

100开始):

MOVSI,1000

MOVAL,[SI]

MOVBL,5[SI]

MOV5[SI],AL

MOV[SI],BL

HLT

2、用反汇编命令U检查输入是否正确。

3、为DS:

1000单元和DS:

1005单元赋初始值8E和E8。

4、用跟踪命令单步执行上面程序,逐条检查执行结果并作记录:

单步执行步数

单步执行结果

1

2

3

4

5

5、分析执行过程及结果,说明该程序的功能。

6、用键断点方式再运行该程序段,并记录执行结果:

执行前

执行后

(二)、按上面步骤及要求调试下列程序段。

MOVSP,CFE0

MOVAX,1234

MOVBX,5678

PUSHAX

PUSHBX

POPAX

POPBX

HLT

(三)、按上面步骤及要求调试下列程序段。

MOVAX,3536

ANDAH,0F

MOVCL,04

SHLAH,CL

ANDAL,0F

ORAL,AE

HLT

说明:

记录单步执行结果中包括有关寄存器和状态标志情况。

(四)、用键断点方式调试下列程序段。

MOVAX,[1000]

ADDAX,[1004]

MOV[100B],AX

MOVAX,[1002]

ADCAX,[1006]

MOV[100A],AX

HLT

附:

DS:

1000~100B内存单元内容初值如下:

EF,CD,AB,B9,21,43,65,87,00,00,00,00

要求:

1、用键断点方式两次运行该程序段(自行选择合适的断点位置)。

2、分别记录每次运行结果(有关寄存器、存储单元内容)。

3、指出该段程序的功能。

执行命令

执行结果

1:

2:

五、实验注意事项

汇编语言主要是在DEBUG下使用,要熟悉debug的操作命令,实验过程中程序调试以程序分析为基础。

程序的起始地址是码段的100。

六、思考题

根据程序调试的结果验证堆栈指令push和pop的执行过程。

七、实验报告要求:

1、实验目的明确。

2、详尽记录每个实验内容的步骤及结果。

3、总结本实验收获。

实验三汇编语言程序的编辑、汇编、

连接、调试及运行

一、实验目的

4、掌握汇编语言源程序的基本结构。

5、学习汇编程序及连接程序的使用方法。

6、学习用DEBUG调试汇编语言程序的方法。

二、预习要求

把本次实验的程序段补充成完整的汇编语言源程序,复习DEBUG主要命令用法。

三、实验仪器及系统

微型计算机

四、实验内容

1、补充修改下列程序段,使之成为结构完整的汇编语言源程序。

在内存中BUFF开始区域有10个字节带符号数,要求把其中正负数分开,分别存入PLUS开始和MINUS开始的内存区域,程序如下:

START:

MOVSI,OFFSETBUFF

MOVDI,OFFSETPLUS

MOVBX,OFFSETMINUS

MOVCX,COUNT

GOON:

LODSBUFF

TESTAL,80H

JNZMINU

STOSB

JMPAGAIN

MINU:

XCHGBX,DI

STOSB

XCHGBX,DI

AGAIN:

DECCX

JNZGOON

HLT

2、用编辑软件Q.EXE将补充修改后的源程序输入计算机,并存入磁盘。

注:

文件名要以.ASM为扩展名。

例:

A:

\WJYL>Qabc.asm↓

3、用汇编程序MASM.EXE对源程序进行汇编,检查并修改其中的语法错误,直到生成目标文件(.0BJ文件)。

命令格式:

MASM源文件名↓

例:

A:

\WJYL>MASMabc.asm↓

4、用连接程序LINK.EXE对目标程序(.OBJ文件)进行连接,以产生可执行文件,即.EXE文件。

命令格式:

LINK目标文件名↓

例:

A:

\WJYL>LINKabc↓

5、用调试程序DEBUG将.EXE文件调入内存进行调试。

命令格式:

DEBUG主文件名.EXE↓

例:

A:

\WJYL>debugabc.exe↓

-u0↓

-G=0××↓

-DDS:

0000↓

6、调试完毕后,退出DEBUG.在DOS下运行程序,观察现象。

-Q↓

A:

\WJYL>abc.exe↓

五、实验注意事项

本次实验是一个完整的汇编语言源程序的编辑和调试过程,和前面程序段的debug调试有所不同。

六、思考题

完整的汇编语言源程序的编辑和调试过程,和前面程序段的debug调试有何相同之处以及有何不同之处。

七、实验要求

1、操作要求:

正确输入自己的源程序并存盘,正确使用MASM.EXE和LINK.EXE文件以生成可执行文件,熟练使用DEBUG命令对可执行程序进行调试,记录调试情况。

2、报告要求:

写明实验步骤,每步操作中遇到问题及解决办法,记录调试情况,打印调试好并修改过的源程序。

 

实验四汇编语言程序设计与调试

一、实验目的

1、学习汇编语言程序的设计方法。

2、学习DOS功能调用的使用方法。

3、进一步掌握源程序的汇编、连接及运行方法。

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

二、实验仪器及系统

微型计算机

三、预习要求

按程序设计步骤,编写符合功能要求的源程序,并考虑实验步骤。

四、实验内容

1、编写一完整的汇编语言源程序,要求完成如下功能:

(1)、先在屏幕上显示“Whatdayistoday?

(2)、等待输入1~7某数字并回车,如果输入正确,则换行显示:

Todayisxxx!

其中xxx是星期数的英文缩写;如果输入错误,则换行显示:

Wrong!

INPUTAGAIN并重新显示“Whatdayistoday?

”等待输入。

(3)、输入正确并正确显示后退回DOS状态。

2、将编好的源程序用编辑软件输入计算机并存盘。

3、将源程序进行汇编、连接,生成可执行的程序并进行调试。

4、在DOS环境下,运行调试好的程序,观察运行结果。

五、实验注意事项

本次实验要求编写一个完整的汇编语言源程序并且机调试,所以编写程序是本次实验的关键。

字符输入和显示器的字符输出均有dos功能号可以直接调用。

六、思考题

要是要求输入正确并正确显示后不退回DOS状态而再次提问“Whatdayistoday?

”等待输入,程序应如何修改。

七、实验要求

1、操作要求:

正确输入源程序,并对其中进行汇编、连接和调试,记录调试过程,打印调试正确的源程序和运行结果。

2、报告要求:

提供程序流程图,源程序清单及运行结果,总结调试程序的经验和体会。

附:

1、推荐数段定义格式:

datasegmemt

buffdb0ah,0dh,‘whatdayistoday?

$’

dis1db0ah,0dh,‘todayis’

dis2db3dup(?

),‘!

$’

dis3db0ah,0dh,‘wrong!

Inputagain!

$’

tabdb‘mun’,‘tue’,‘wed’,‘thu’,‘fri’,‘sat’,‘sun’

dataends

2、DOS功能调用方法

(1)O9H号功能调用——向显示器送一字符串

方法:

MOVah,09h

MOVDX,OFFSETBUFF

INT21H

(2)01H号功能调用——从键盘接收一字符送AL,并在显示器上显示该字符。

MOVAH,01H

INT21H

实验五使用8253输出方波

一、实验目的

掌握8253的使用方法

二、实验仪器及系统

微型计算机,微机原理实验箱

三、实验内容

以1MHz的信号为时钟信号,利用8253产生一个周期为1ms的方波和一个周期为1ms,占空比为1:

10的波形。

四、预习要求

熟悉8253的使用方法,分析参考程序

五、实验连线

1、8MHz晶振输出(J22-1)接分频电路J60-1;

2、8253的CLK0(J37-4)接8MHz晶振8分频输出J60-5(1MHz);

3、8253GATE0(J37-3),GATE1(J37-6)连+5V;

4、8253的/CS(J37-1)接I/O译码输出J40-1;

5、8253的CLK1(J37-7)

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

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

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

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