资源描述
MCS51 单片机实验指导书
———————————————————————————————— 作者:
———————————————————————————————— 日期:
2
个人收集整理 勿做商业用途
第一章 实验系统结构和功能
1。1 实验系统结构和组成
整个实验系统是单板结构,由两大部分构成:一部分是以MCS-51系列单片机中的8031为核心器件,扩展64K字节的27512 EPROM芯片作为系统监控程序存储器和32K数据存储器(62256)作为仿真RAM;通过扩展一片8155控制6只8段显示LED数码管作为输出设备和32个按键作为输入设备。另一部分是各种基本的常用外围接口器件:包括用一片8255控制的EPROM编程器、8253定时器/计数器电路、A/D转换器ADC 0809、D/A转换器DAC 0832、由74LS393构成的计数器电路、单脉冲输出电路(可产生正脉冲或负脉冲)、外置8 MHz的振荡器电路、用运放LM386驱动的小扬声器、用74LS138构成的地址译码电路、带有驱动电路的小步进马达、12只带有驱动电路的发光二极管和8只逻辑电平开关等。这些接口器件都有相应插孔可根据需要与核心部分相连。
这是一种开发型的单片机系统,通过RS-232C串行口与DBUG仿真软件通信可以构成一个类似于MICE的仿真开发系统.在仿真软件的支持下,可以提供汇编语言源程序的编辑、汇编、反汇编、加载和在线仿真运行调试程序等功能。
1。2 实验系统功能
实验系统综合了仿真器开发系统与实验学习装置的功能,可以独立利用系统上自带的键盘和LED数码显示器工作,也可以通过RS-232C串行口利用PC机运行DBUG仿真软件进行CPU或EPROM仿真工作,仿真功能基本上与Microtek的MICE仿真器相同。
系统独立工作时有如下基本功能:
1. 丰富的编辑功能
系统具有丰富的程序和数据编辑功能,包括程序和数据代码的输入、检查和修改,片内数据存储器(包括专用寄存器)的检查和修改,片外数据存储器的数据输入、检查和修改,地址加1检查和修改,地址减1检查和修改,插入和删除数据,数据块移动和比较等功能。
2. 具有不同运行方式
可以运行仿真RAM的用户程序,也可以运行用户应用系统中程序存储器中的程序,也可交替运行,给程序调试带来方便.
3. 基本的调试手段和功能
系统提供单步执行、设置断点执行和连续执行等基本调试手段和功能。以单步或断点方式执行程序后,可以对用户程序进行检查、现场修改,对片内RAM、专用寄存器、片外RAM和扩展的I/O口的状态进行检查和修改.
4。 可以提供各种8031单片机原理实验和应用实验用的硬件和软件
可以利用该实验系统进行各种8031汇编语言程序的实验、LED数码管显示器实验、键盘实验、并行接口实验、串行接口实验、定时器/计数器实验、数字控制实验、时间程序控制实验、步进电机控制实验、数据采集和数字测量实验、数字波形发生器实验、数字信号处理(数字滤波、FFT等)实验等.
1。3 键盘和显示器的使用方法
1.3.1 键盘的使用
实验系统自带4×8=32个键盘,其安排如图1。3-1所示。左边16个为16进制的数字键0~F,用于输入地址、程序机器码或数据;也同时作为工作寄存器R0~R7、DPTR、PSW、SP、ACC、B寄存器等以及程序计数器PC的代号.右边16个为功能键。
1. 键盘安排示意图
7/R7
8/DPL
9/DPH
A/ACC
TV/ME
EG/DL
PRT
EXEC
4/R4
5/R5
6/R6
B/B
RG/FS
RW/IS
COMP
SCAL
1/R1
2/R2
3/R3
C/PSW
F1/LS
EV/UN
MOVE
STEP
0/R0
F/PCH
E/PCL
D/SP
F2/NX
EC/EP
DAR
MON
图1。3-1 系统键盘安排示意图
名称
R0
R1
R2
R3
R4
R5
R6
R7
DPL
DPH
A
B
PSW
SP
PCL
PCH
代号
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
图1。3-2 寄存器代码表
2。 功能键作用简介
16个功能键中有7个键是双功能键,这些键的功能与系统的历史状态有关,同一个键在不同状态下就表示不同的功能。
⑴ TV/ME TV是进入CRT显示状态/ME是仿真RAM存储单元检查
⑵ RG/FS RG是片内RAM和寄存器内容检查/FS是偏移量计算
⑶ F1/LS F1是首地址设定/LS是上一个单元检查
⑷ F2/NX F2是末地址设定/NX是下一个单元检查
⑸ EG/DL EG是EPROM编程/DL是删除1个字节
⑹ RW/IS RW是片外数据存储器检查/IS是插入1个字节
⑺ EV/UN EV是把编程区的程序移到仿真RAM区/UN表示未用保留
⑻ EC/EP EC是检查被编程的EPROM是否全空/编程区EPROM程序与仿真RAM内容比较
⑼ PRT TV状态下的打印命令键
⑽ COMP 程序或数据块比较键
⑾ MOVE 程序或数据块移动键
⑿ DAR TV状态下的反汇编命令键
⒀ EXEC 全速执行或断点执行命令键
⒁ SCAL 进入串行通信状态键
⒂ STEP 单步执行命令键
⒃ MON 返回监控命令键
注:其中TV、EG、EC/EP、EV、PRT和DAR命令在本系列实验中不需要用。
3. 系统状态
系统状态有两种:待命状态和操作状态。
⑴ 待命状态
其特征是在显示器的左端显示闪动的“P。”提示符,等待操作。一般在三种情况下会进入待命状态:
① 当系统上电复位后
② 当按RESET复位按钮后
③ 当按MON按键后(如程序不扫描键盘时无效)
在待命状态下,可以进行以下操作之一:
① 按任一个数字键,就进入操作状态,并显示该键入的数字。
② 按EXEC键,就从0000H单元开始执行仿真RAM中的程序.
③ 按STEP键,就从0000h单元开始单步执行仿真RAM中的程序。
④ 按EC键,就检查编程区EPROM芯片是否是全空.
⑤ 按F1键,进入仿真EPROM状态,这时PC值是指向应用系统的外部程序空间,其特性是显示器上显示“H. . 。 。 。 . 。”。
⑥ 按F2键,进入仿真RAM状态,这时PC值是指向实验系统的仿真RAM中的用户程序空间,其特征是显示器上显示“P. . . 。 . 。 。”。
⑦ 按TV键,进入用电视屏幕显示状态(这需要通过系统板上TV CRT接口扩展相应接口板才具有电视屏幕显示功能),这时显示器将不显示任何字符.
⑵ 操作状态
在待命状态输入1位到4位数字键后,便进入操作状态.当输入4位数字后,第一位数字会不断闪烁,表示可以从第一位开始修改输入的数字,随着修改,闪烁的数字位会后移。
在操作状态下,可以进行以下操作之一:
① 按ME键,显示仿真RAM单元中的内容。(按该键前,若输入的数字不足4位,不足位都作0处理.)
② 按RG键,显示片内RAM(包括专用寄存器)单元中的内容。(按该键前,若输入的数字超过2位,后2位都作无效位处理.)
键入1位数字按RG键,按图1。3—2中所示的代号显示相应寄存器中的内容。
键入2位数字按RG键,显示相应片内RAM或专用寄存器单元中的内容。
③ 输入4位地址后,按RW键,显示片外RAM单元或扩展I/O口中的内容。
④ 按EXEC键,就从键入的地址开始连续执行仿真RAM中的程序。
⑤ 按STEP键,就从键入的地址开始单步执行仿真RAM中的程序。
⑥ 按F1键,显示闪烁的“┏ ”提示符,表示输入的首地址已被接受,或表示设置输入的地址为断点地址.
⑦ 按F2键,显示闪烁的“ ┛"提示符,表示输入的末地址已被接受。
⑧ 按MON键,就从操作状态回到待命状态。
4. 功能键用法
⑴ 返回监控(MON)键
在操作过程中按此键,将中止或退出当前的操作状态,停止输入数据和命令,返回待命状态,显示闪烁的“P。”提示符。当执行EXEC命令后,将不能用此键返回待命状态,这时只能用RESET按钮使之返回待命状态.
MON键与RESET按钮的功能相似,不同点是:MON键在返回代码状态时将会保护用户的工作现场的用户存储器和寄存器的内容;而RESET按钮不会改变用户存储区和外部数据存储器的内容,但有可能改变某些寄存器的内容.
⑵ 仿真RAM单元检查(ME)键
在待命状态下,输入4位地址,按此键将显示相应仿真RAM单元的内容(输入的地址中可以省去后面的0).
可以使用LS和NX键检查上一个或下一个单元的内容.
⑶ 片内RAM单元和寄存器检查(RG)键
输入1位地址,按此键将显示相应寄存器的内容.
输入2位地址,按此键将显示相应片内RAM单元或专用寄存器(SFR)的内容。
可以使用LS和NX键检查上一个或下一个单元的内容.
⑷ 片外RAM或扩展接口8155片内RAM单元检查(RW)键
输入片外RAM或扩展接口8155片内RAM单元的4位地址,按此键将显示相应单元的内容。(若用8032芯片,输入2位地址,可以显示8032片内RAM的80H~FFH区的相应单元的内容)
⑸ 片外RAM区数据块移动(MOVE)键
MOVE键的功能是把片外RAM区的数据块从一个区移到(实际上是复制到)另一个区中。但目标RAM区要由仿真的状态决定。
在显示“P.”的待命状态下,将把系统仿真RAM中的程序/数据块复制到仿真RAM的另一个区中.
在显示“P. . . 。 。 。”的仿真RAM状态下,将把系统仿真RAM中的程序/数据块复制到被仿真的应用系统片外RAM数据区中。
操作步骤:
① 输入源程序的首地址,按F1键,这时将显示闪烁的“┏ "提示符,表示输入的首地址已被接受。
② 输入源程序的末地址,按F2键,这时将显示闪烁的“ ┛"提示符,表示输入的末地址已被接受。
③ 输入目标首地址
④ 按MOVE键后,就完成移动(实际上是复制)。
⑹ 片外RAM区数据块比较(COMP)键
COMP键的功能是把片外RAM区的两个数据块进行比较。但目标RAM区要由仿真的状态决定。
在显示“P。”的待命状态下,将把系统仿真RAM中的程序/数据块与仿真RAM的另一个区的数据块进行比较。
在显示“P。 . . 。 。 .”的仿真RAM状态下,将把系统仿真RAM中的程序/数据块与被仿真的应用系统片外RAM数据区中的数据块进行比较。
操作步骤:
① 输入源程序的首地址,按F1键,这时将显示闪烁的“┏ ”提示符,表示输入的首地址已被接受。
② 输入源程序的末地址,按F2键,这时将显示闪烁的“ ┛”提示符,表示输入的末地址已被接受。
③ 输入目标首地址
④ 按COMP键后,就完成比较。若比较完全一样,就回到待命状态显示“P.";若比较不完全相同,就显示比较第一个出错单元的地址和数据。
⑺ 插入(IS)和删除(DL)键
这两个键是具有相反操作功能的键,只有在仿真RAM单元检查状态下才有效.在调试机器码程序时,可以用于插入或删除质量或数据的一个字节,可以根据需要多次使用。这就可以避免许多需要重新输入程序/数据的麻烦。
操作方法:在检查仿真RAM单元状态下,显示现行地址和数据,按IS键,将在现行地址与XFFFH之间,把所有单元的内容依次向下移动一个字节。现行地址单元的内容被清零,供插入指令或数据的一个字节。这时XFFFH单元的内容将被XFFFEH单元的内容取代,XFFFH单元的原内容将丢失.
在显示现行地址和数据的情况下,按DL键,将删除这一地址单元的内容,而把以下单元的内容依次向上移动一个单元,XFFFH单元的内容用0替补.
为了减少插入或删除的影响范围,实验系统把移动范围划分为8个区域:
0000H~1FFFH
2000H~3FFFH
4000H~5FFFH
6000H~7FFFH
8000H~9FFFH
A000H~BFFFH
C000H~DFFFH
E000H~FFFFH
在0000H~1FFFH区内插入或删除,不会影响2000H以上单元的内容.同样在8000H~9FFFH区中操作不会影响其他区的内容。
⑻ 程序执行(EXEC)键
EXEC键有两种运行方式:
① 连续执行程序方式
在输入4位地址后,按此键便从该地址开始连续执行程序,同时显示器显示“┏"提示符;若不输入地址,在待命状态下按此键,便从0000H地址开始连续执行程序;在存储单元改写状态下按此键,将从现行地址处连续执行程序。
需要注意的是,在连续执行之前,必须检查一下在执行程序的末尾是否安排了循环,要防止程序在执行完后可能又继续往下执行后面的随机代码,那就可能会造成不可预测的后果。
② 断点运行程序方式
断点运行方式是程序调试的一种常用有效手段,通过设置仿真RAM中程序的断点逐段运行,可以不断缩小有问题程序的范围。
操作方法:输入4位断点地址(注意,必须设置在指令操作码单元地址上,不能设置在操作数单元地址上),按F1键,这时将显示“┏"提示符,再输入程序执行的起始地址,按EXEC键,就以断点方式运行程序。
当程序遇到设置的断点就会停下来,并把所有的寄存器保护起来,同时显示该断点地址以及该单元的操作码。这时就可以查看相关的寄存器和存储单元的内容.
在回到待命状态的情况下,可以根据需要还可以设置新的断点,在设置新的断点后,若再按EXEC键,将会继续从上一个断点处执行程序,直至遇到新断点时暂停。
该实验系统在独立工作时,每次只能设置一个断点,若设置多个断点,则最后依次设置的断点有效,其他断点都将无效。设置的断点在程序执行后就取消。
需要特别注意的是:若断点设置不正确或用户应用系统不正常,运行后就不会遇到断点,这种情况下,只有复位才能使系统回到监控的待命状态。复位后,原设置断点处将有3个单元的内容被破坏,需要人工恢复。
⑼ 单步执行程序(STEP)键
STEP键在待命状态、操作状态和存储器检查状态下有效。在待命状态下按此键,将执行0000H地址单元的一条指令;在操作状态下按此键,则按显示器上显示的地址单步执行一条指令;在存储器检查状态下按此键,则按现行地址单步执行一条指令。每按一次,执行一条指令,并显示下一条即将执行的指令操作码的地址及其单元内的内容,进入操作状态,等待新的命令。此键命令不会影响设置的断点。
若按STEP键持续1秒以上将进入跟踪执行状态,并以每秒钟500条指令的速度执行程序,同时更新显示程序的执行地址和A累加器内的内容。这个功能可以用来监视程序的运行路线,对检查延时循环程序特别有用。松开按键后,便立即停止跟踪,并显示中止时的PC值和A累加器的内容。
⑽ 相对偏移量计算(FS)键
该键只有在存储器检查状态(即向仿真RAM中输入程序的状态)下有效,用于计算相对转移指令的操作数──偏移量.
操作方法:在需要填入8位相对转移指令偏移量的单元,输入所要转移目标地址的低字节后按此键,就把计算好的偏移量自动送入偏移量单元。这时仍处于仿真RAM读写状态,用户可以继续输入程序和数据。
需要注意的是:转移指令的地址与转移的目标地址之间的差值不能大于8位偏移量所允许的最大范围,否则就要出错.
因课程实验不包括EPROM编程固化操作,所以与其有关的命令键就不在本指导书中介绍。
1。3。2 LED数码管显示器的使用
实验系统板上安排了6只八段LED数码管显示器,一般情况,用左边4只显示地址值,右边2只显示相应单元的数据。监控程序用软件扫描方式在不同的数码管上显示字符。每个数码管对应一个显示缓冲单元,从右到左显示缓冲单元的地址分别为79H、7AH、7BH、7CH、7DH和7EH.这6个LED数码管分别通过扩展8155可编程并行接口芯片对其控制,字位受8155的A口控制,其口地址为FF21H,字形受8155的B口控制,其口地址为FF22H。
第二章 实验指导
实验一 实验系统操作与使用
一、 实验目的
1。 了解实验系统的基本结构和组成及其存储空间的分配。
2. 熟悉键盘各个按键的作用及其操作方法.
3。 掌握程序手工输入、检查和执行的方法,并学会执行程序后检查结果的方法。
4。 初步掌握利用设置断点和单步执行进行调试程序的过程和方法。
二、 实验内容
在实验前预习实验系统结构和基本功能的基础上,按照实验指导书的要求,依次进行键盘操作.通过操作和思考,达到以上4个实验目的。
三、 实验前的预习要求
1. 认真预习第一章的内容,在了解实验系统结构组成和基本功能的基础上,特别要对不同键盘的作用和操作要点熟悉。
2. 看懂本实验中给出的示范程序的意义.
四、 实验步骤
在实验系统已接好 +5V 直流稳压电源的情况下,打开稳压电源,系统的上电复位电路一般会使系统在最左边一个 LED 数码管上将显示一个闪动的"P."提示字符.这表示系统已处于待命状态,可以输入操作.
在任何情况下,按”RESET”复位按钮后,系统应该回到待命状态。
在正常操作过程中,一般按MON键后,也可以使系统回到待命状态。如果不能回到待命状态,说明程序已脱离系统监控程序的控制,这种情况下只有通过按复位按钮使其回到待命状态.
在待命状态(即显示提示字符"P。”)的情况下,可以进行以下操作:
1. 程序输入操作 (使用数字、ME、NX和LS键)
把以下一个给出的例1 程序的机器码通过键盘依次输入到实验系统的数据存储器中。
例1 程序:
ORG 1000H
1000 7840 TEST1: MOV R0,#40H
1002 7941 MOV R1,#41H
1004 7540AA MOV 40H,#0AAH
1007 E6 MOV A,@R0
1008 F7 MOV @R1,A
1009 7655 MOV @R0,#55H
100B 7F05 MOV R7,#05H
100D 04 LOOP: INC A
100E DFFD DJNZ R7,LOOP
1010 902000 MOV DPTR,#2000H
1013 F0 MOVX @DPTR,A
1014 80FE SJMP $ ;= WAIT: SJMP WAIT
⑴ 先用十六进制数字键输入首地址(这里是1000),再按存储器单元检查ME键,这时显示器的后两位将显示十六进制随机数。
⑵ 按数字键 78,在后两位将会用键入的 78 替代原来的随机数,这样就向 1000H 单元输入机器码 78H.若输入数据时输错了数,可以重新输入。但是需要注意,输入数据时一定是成对输入。
⑶ 按NX键,显示的地址值会自动加1,并显示其相应单元中的随机数。
⑷ 按数字键 40,便把 40H 输入到 1001H 存储单元中。
⑸ 这时如果按LS键,显示的地址值会自动减 1,并且在后两位显示上一个单元的数据值(这里将会显示 78).
⑹ 重复⑶、⑷的步骤,依次输入后面的机器码,直至程序输入完为止。
2。 存储单元检查操作 (使用ME、NX和LS键)
在显示提示字符"P.”的情况下,输入相应存储单元的4位十六进制数的地址,再按ME键,相应存储单元的内容就显示在右边两个数码管数据位上。
如果要继续检查下一个存储单元或上一个存储单元的内容时,可以分别通过按NX和LS键完成。
请按上述方法检查已输入的程序机器码是否正确。
3. 程序执行操作 (使用MON、数字和EXEC键)
在确认以上检查无误的情况下,执行以上程序。步骤如下:
⑴ 按MON键,中止存储单元检查操作,回到待命状态。
⑵ 键入以上输入程序的首地址1000H 后,按执行程序EXEC键,从起始地址1000H开始执行该程序,并显示”┏"提示标志.
⑶ 按”RESET"复位按钮,回到待命状态,以备检查相关存储单元和寄存器。
4。 程序调试操作 (使用MON、数字、EXEC、STEP和F1键)
最常用的程序调试手段有两个:一是在需要对程序执行中间结果进行检查的指令操作码处设置断点,让执行的程序在适当的地方暂停;二是通过单步执行,一条指令一条指令跟踪执行。在程序暂停时可以对相关寄存器和存储单元进行检查,并通过多处设置断点和与单步执行配合,不断缩小程序出错的范围,以便最终找到并排除程序的错误所在。
4.1 设置断点检查 (使用MON、数字、EXEC和F1键)
⑴ 在 1008H、100BH、1010H 和 1014H 单元分别依次设置断点。
设置断点的方法是在显示提示字符"P。”的情况下,输入断点地址,按F1键,这时将会显示”┏"提示符,表示断点已经设置好。
⑵ 输入程序首地址.
⑶ 按EXEC键执行程序,当程序执行遇到设置的断点处,程序就会暂停,并保护所有的寄存器,同时显示断点地址和该单元的内容,回到操作状态.
⑷ 检查相关寄存器和存储单元的内容。
⑸ 在遇到断点程序暂停后,再设置下一个断点。
⑹ 重复⑶~⑸的步骤,直至程序执行完为止。
4.2 单步执行 (使用MON、数字和STEP键)
⑴ 在显示提示字符”P。”的情况下,输入程序首地址。
⑵ 按STEP键,将从输入的地址开始执行一条指令,同时显示下一条将要执行指令的 4 位十六进制数地址(即PC的内容)和下一条指令的操作码.
⑶ 可以不断按STEP键,让程序指令一条一条地执行,在认为必要的地方,暂停后可以检查相关寄存器和存储单元的内容,看是否符合预想的执行结果。(单步执行并不影响已设置的断点.)
5。 程序执行结果检查操作 (使用MON、数字、ME、RG、NX和LS键)
程序执行结果检查主要有两方面:一是相关存储单元,二是相关寄存器.
5.1 存储单元的检查 (使用数字、ME 键)
存储单元的检查方法见以上“2。存储单元检查操作"一节.这里需要对 2000H 存储单元进行检查,并记录。
(2000H)=
5。2 片内 RAM 通用单元和寄存器的检查 (使用数字、RG键)
寄存器的检查方法:要对片内 RAM 中的通用单元、工作寄存器、专用寄存器等进行检查,可以先输入由实验系统定义的用1位十六进制数作为代号的寄存器号(见表1-1),或者用2 位十六进制数表示的片内RAM单元和专用寄存器SFR的地址(见表1-2),然后按RG键,即在最右边两位数码管上显示其内容。
表1—1 常用寄存器代号表
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
寄存器代号 0 1 2 3 4 5 6 7 8 9 A B C D E F
──────────────────────────────────────━
寄存器 R0 R1 R2 R3 R4 R5 R6 R7 DPL DPH ACC B PSW SP PCL PCH
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
表1-2 片内RAM单元和SFR地址表(a)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
地 址 00~7F 80 81 82 83 87 88 89 8A 8B 8C 8D
──────────────────────────────────────
片内RAM或SFR 片内RAM P0 SP DPL DPH PCON TCON TMOD TL0 TL1 TH0 TH1
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
表1—2 片内RAM单元和SFR地址表(b)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
地 址 90 98 99 A0 A8 B0 B8 D0 E0 F0
──────────────────────────────────
片内RAM或SFR P1 SCON SBUF P2 IE P3 IP PSW ACC B
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
这里需要对A、R0、R1、R7、40H、41H、PSW和SP先进行预测,然后检查,并记录。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
片内寄存器名 A R0 R1 R7 40H 41H PSW SP
────────────────────────────────────
事先预测数据
────────────────────────────────────
实际检查数据
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
6。 程序/数据块移动和比较操作 (使用数字、F1、F2、MOVE和COMP键)
实验系统还具有程序/数据块复制和比较功能,可以利用MOVE键把一个在仿真RAM区中的程序/数据块复制到另外一个地址空间,并可以利用COMP键对这两个区的程序/数据块进行比较,看是否一致.
要求把从1000H单元(源程序首地址)开始至1015H(源程序的末地址)的例1程序复制到 0000H 单元(目标首地址)开始的 RAM 区。
⑴ 输入源程序的首地址 1000,按F1键,这时将显示”┏”;
⑵ 输入源程序的末地址1015,按F2键,这时将显示"┛”;
⑶ 输入目标首地址 0000,按MOVE键后,就把从 1000H~1015H 存储区中的程序复制到首址为 0000H 的存储区中,然后回到待命状态0,显示"P。” ⑷ 输入源程序的首地址 1000,按F1键,这时将显示"┏";
⑸ 输入源程序的末地址1015,按F2键,这时将显示"┛”;
⑹ 输入目标首地址 0000,按COMP键后,就把从首址为 1000H存储区中的程序与首址为 0000H 存储区中被复制的程序逐条指令进行比较,如果两个存储区的内容完全一样,就回到待命状态 0,显示”P.";如果比较后有不同点,那么就显示被复制区中出错单元的地址和该存储单元的内容。(在比较无错的情况下,可以改变被复制区某一个单元的内容,再进行比较验证.)
7. 插入和删除操作 (使用数字、ME、IS、DL和F2键)
在调试机器码程序时,可能需要在某条指令后面插入一些新的指令,或者删除一些指令,这可以分别利用IS和DL键实现,而不必重新输入整个程序。需要注意这两项操作都只有在存储器检查状态下才有效.例如要求先删除例1程序中的
MOV DPTR,#2000H
MOVX @DPTR,A
两条指令(4个字节),进行查看验证后,再插入这两条指令查看验证。
⑴ 输入第一条指令操作码地址1010H,按ME键后进入存储器检查状态,再按DL键4次,就删除了4个字节。这时查看一下SJMP $指令机器码的存储单元地址是什么?
⑵ 若要在 1010H 单元处插入以上两条指令,可以输入地址 1010H,按ME键后进入存储器检查状态,再按IS键 4 次,就可以从 1010H 单元开始插入 4 个字节的 00H,然后在相应插入单元输入机器码(90H,20H,00H,F0H)即可完成插入这两条指令的操作。
⑶ 若需要对从以下某个地址处开始的程序/数据不受插入或删除的影响,可以在插入和删除之前,先输入该限定地址,再按F2键,这时会显示“┛”提示符,然后再进行插入或删除操作,就可以不影响设置的限定地址以下的单元内容.可以据此验证一下这类操作的效果
8. 相对转移指令中的偏移量计算 (使用数字、ME、NX和FS键)
这个功能可以给实验编程中计算相对转移指令中的偏移量带来方便。方法是当输入相对转移指令的操作码后,下一个字节应该输入偏移量,这时只要先在该单元输入需要转移的目标地址的低字节,再按FS键,该单元的内容就转换成需要输入的偏移量代码。接着可以继续输入下一个单元的机器码。
例如当输入例1程序中DJNZ R7,LOOP指令时,
⑴ 在 100EH 单元先输入其操作码 DFH,当按NX键后,显示地址 100F,其内容可能是随机数。
⑵ 因为需要转移的目标地址是 100DH,所以在 100FH 单元输入其低字节地址 0D,再按FS键,其内容就转换成相应的偏移量。
注意:相对转移指令的下一条指令地址与转移的目标地址之间的插值要满足8位带符号数补码的数值范围,向上转移负值最小不能超过-128(即80H),向下转移正值最大不能超过+127(即7FH)。
五、 实验报告内容
1. 请写出在实验所遇到的问题以及解决的办法,并谈一谈你的体会。
2。 请回答以下问题:
① 试述如何修改2000H存储单元中的内容?
② 在执行程序前,为什么需要向 PC 中输入所需执行程序的首地址?是否可以省去这一步骤? 为什么?
③ 在例1程序中,能否在1005H、1006H、100AH、100CH和1011H存储单元设置断点? 为什么?
实验二 一般程序设计(一):直线程序
一、 实验目的
1。 通过简单的直线程序的设计,熟悉寻址方式、基本指令、内部和外部数据存储器RAM以及程序存储器ROM的特点和使用方法。
2。 掌握人工汇编的方法。
3. 执行所给参考程序和自编程序,学习检查和调试程序的基本方法。
二、 实验前的准备工作
1. 认真复习指令系统以及程序设计等章节.
2。 对给出的源程序进行分析和理解,搞懂其意义;对未给出机器码的参考程序2和3进行人工汇编,并分配好存储单元的地址;根据要求编写好自编源程序,并人工汇编成机器码和分配好存储单元地址。
3。 复习上一次实验的内容,熟悉实验系统的操作方法.
三、 实验内容和步骤
分别手工输入各个给出的参考程序和自编程序的机器码(在实验前已完成人工汇编),通过该实验学会手工输入程序、检查程序和执行程序的方法.当执行结果不对时,学会如何利用设置断点和单步执行进行查错。
1。 该程序通过用不同的寻址方式和指令对片内工作寄存器、片内RAM单元、片外RAM单元和程序存储单元的访问,进一步熟悉不同存储器的特点和用法。
参考程序1:数据的传送程序
ORG 1200H
1200 74AA TRANSF: MOV A,#0AAH
1202 F9 MOV R1,A
1203 7820 MOV R0,#20H
1205 F6 MOV @R0,A
1206 04 INC A
1207 08 INC R0
1208 F6 MOV @R0,A
1209 903000 MOV DPTR,#3000H
120C 04 INC A
120D F0 MOVX @DPTR,A
120E E4 CLR A
120F 93 MOVC A,@A+DPTR
1210 7820 MOV R0,#20H
1212 F6 MOV @R0,A
12
展开阅读全文