义隆单片机课堂
EM78P447S单片机入门与实作系列讲座

🏠 首页 《无线电》杂志 2002年 🔗 第12期 🔗 第1065353216页 分类:电脑与单片机 🔗

SIM447软硬件模拟器所能够识别的系统命令总共30余条,介绍如下:

1.L——装载命令

命令格式:L [文件名称]

功能说明:向EM78P447的程序存储器中,装载机器码目标程序文件.CDS。

应用举例:假设有一外部源程序文件LXH-LED.ASM,由汇编器MASM78汇编输出,得到目标文件LXH-LED.CDS。就可以用以下命令(也可以省略扩展名.CDS),将目标程序文件读进SIM447系统中模拟调试。

>L LXH-LED.CDS

2.G——连续执行命令

命令格式:G [地址]或[起始地址] [结束地址]

功能说明:连续执行(或称全速执行)。如果命令中给出地址参数,则从指定地址处开始连续执行程序;如果不带地址,首次应用G命令则默认从地址0000H开始(对于刚刚进入SIM447的情况),或者非首次应用G命令则从上一次程序执行被打断之处继续连续执行;如果命令中给出两个分别作为起始点和停止点的地址参数,则自动顺序执行该地址范围内的程序。

应用举例:下面的第一条命令是让程序从0号ROM单元开始执行;第二条命令是让程序从上次被打断的地方继续执行;第三条命令是要求连续执行1号到9号程序存储器单元的程序。

>G0

>G

>G1 9

在程序进入连续执行状态之后,系统给出一条下面的提示信息,提醒您按下9邀Esc9妖键可以停止程序的执行:

Press 'ESC' to stop program...

在程序被连续执行的过程中,用一些SIM447系统本身定义的“功能键”,可以对实验电路板区的模拟电子组件,做动态设定。在程序执行过程中,可以使用的一些功能键如表1所示。比如,若您在执行程序的时候,按动9邀F19妖键,则会看到P5寄存器的bit0值改变;按动9邀F29妖键,则会看到P5寄存器的bit1值改变;9邀F39妖键被按动一次或多次时,则会在命令会话区看到提示信息:Input P5:DipSwitch1或Input P6:DipSwitch2或Input P7:DipSwitch3,之后再按动数字键0~7时,则可以看到组件DIP1或DIP2或DIP3中的单个拨动开关的状态发生变化;9邀F49妖键被按动一次或两次时,则会在命令会话区看到提示信息:INT=>HIGH或TCC=>LOW;9邀F59妖键被按动一次或两次时,则会在命令会话区看到提示信息:TCC=>HIGH或TCC=>LOW;9邀F69妖键被按动一次或两次时,则会在命令会话区看到提示信息:Reset EM78447B Simula-tor O.K.;9邀F79妖键被按动时,则会在命令会话区看到提示信息:Scope Delay Adjust(+,-),之后再按动数学加号键+或-时,则可以看到组件SCOPE之内的波形横向伸缩比例发生变化,这就相当于在调节示波器的时基旋钮;按动9邀F99妖键则进入自动单步执行方式,会在命令会话区看到逐条显示即将被执行的指令,以及每条指令的执行结果,并且执行速度显著降低(大约每隔1s执行一条),这就像看低速动画片一样。此时如果按动“空格键”可以暂停,再次按动“空格键”又会继续,再次按动9邀F99妖键则退出自动单步方式;如果按一下9邀F109妖功能键,则会在寄存器区域出现一个单片机引脚状态图,如下图左侧所示。在该图中可以看到EM78P447单片机的引脚R60~R67,其中7条是黑色、1条是灰色,并且灰色引脚的位置在不停地轮流移动。“白色”表示该脚输出的是高电平(实际操作中为白色);“灰色”表示该脚输出的是低电平。第二次按动9邀F109妖功能键时,会出现一个运行态各功能键用法提示列表,如下图右侧所示。第三次按动9邀F109妖功能键时复原。

图1
图1 🔍原图 (945×461)
图2
图2 🔍原图 (840×372)

3.T——单步执行命令

命令格式:T [地址]

功能说明:单步执行。当程序执行过程中遇到指令CALL时,会进入子程序仍然以单步方式继续执行,其余同于P命令。SIM447系统为该命令定义了一个快捷键9邀F79妖。

应用举例:下面第1条命令将使模拟器执行0号ROM单元中的一条指令后暂停;第2条命令将执行5号单元中的一条指令暂停。

>T0

>T5

4.P——单步跨越执行命令

命令格式:P [地址]

功能说明:单步跨越执行。当程序执行过程中遇到CALL指令,会将子程序以连续方式执行完毕。不仅可以跨越子程序,也会跨越断点。在程序调试过程中,往往需要一条指令接着一条指令地慢慢执行,以便于观察各个寄存器的状况。当程序执行遇到CALL时,如果您不想单步执行这个子程序,例如延时子程序,命令P可将子程序一次执行完。如果命令中带有地址参数,则执行该地址指定程序存储器单元中存放的一条指令;如果命令中不带地址参数,则接着上一次P命令执行停止的地方继续往下执行;如果首次使用P命令则从0开始。SIM447系统为该命令定义了一个快捷键9邀F89妖,即9邀F89妖=P+↓两个键。另外,如果按住9邀F89妖键不放也可以实现自动单步执行的效果,并且执行速度比利用9邀F99妖键要快。

应用举例:下面第1条命令将使模拟器执行6号ROM单元中的一条指令后暂停;第2条命令将顺序执行7号单元中的一条指令暂停。

>P6

>P

5. ESYM——符号查错功能开启命令

命令格式:ESYM

功能说明:在调试过程中开启符号化调试功能。即利用了符号文件中定义的标号与ROM地址的对应关系,以及源文件中定义的寄存器名称与RAM地址的对应关系。

应用举例:当用该命令开启符号化调试功能时,屏幕提示信息为:

Enable Symbol Debug.

>ESYM

之后,如果进行反汇编,则结果中会包含用户所定义的符号(包含代表工作寄存器和ROM地址的标号)。此外,设定断点时,可以直接用符号来指定地址。总之,在利用U、H和SKIP命令时,均可以用标号代替地址。

6.DSYM——符号查错功能关闭命令

命令格式:DSYM

功能说明:在调试过程中关闭符号化调试功能。与命令ESYM的功能恰好相反。

应用举例:当用该命令关闭符号化调试功能时,屏幕提示信息为:

Disable Symbol Debug.

>DSYM

7.H——断点设置或清除命令

命令格式:H0~3 [断点地址]

功能说明:实现程序执行断点的设定或者清除。在调试较长的程序时,往往希望以连续方式运行无问题的段落,而自动暂停在需要仔细观察的某一条指令上。这时H指令将会给调试过程带来方便。其中,H1、H2和H3命令可以分别设定断点1~3,SIM447系统最多允许设置这3个断点;H0命令将清除所有断点。

应用举例:如果您已经(用命令ESYM)开启了符号化调试功能,就可以直接使用程序中您所定义的符号(或称地址标号)来设定断点地址。

>H1 08

>H2 delay

>H0

上面第一条命令完成的功能是,把“断点1”的地址设置在“0008H”处,屏幕提示信息为:Break Point 1:0008;第二条是把“断点2”的地址设置在“delay”出现之处,屏幕提示信息为:Break Point 2:0015;第三条是清除所有断点,屏幕提示信息为:Clear all break point。

在定义了断点之后,再用G命令进行连续执行程序时,遇到断点会自动停止执行,并且会显示断点地址处的汇编指令,以及包含着指明断点序号的提示信息。

8.B——数制转换命令

命令格式:B 数值

功能说明:将2位十六进制数据转换成8位二进制数据,并且显示出来。注意,数据必须以数字开头,如果是以A~F开头的数据,应在前面补一个0。

应用举例:将十六进制数0FH转换成二进制数00001111B。

>B0F

0F:00001111

9.M——特定寄存器修改命令

命令格式:M [特定寄存器名称或工作寄存器地址] [修改值]

功能说明:修改寄存器的内容。在单步执行的过程中,如果要更改某一寄存器的内容,可以用命令“M”。应该注意,作为修改值的数据,SIM447系统均默认是8位十六进制的数,并且必须以阿拉伯数字开头,否则系统提示为:Error Command!。例如08、89、0E、0FA等,都是合法的。

应用举例:下面第1条命令是将端口P5的数据寄存器的内容改为0FFH;第2条命令是将累加器A的内容改写为88H;第3条指令将状态寄存器(有时也叫程序状态字)内容改为FFH。

>M P5 0FF

>M ACC 88

>M PSW 0FF

在修改成功后会得到提示信息,如第3条命令执行后的提示为:PSW=ff。如果修改不成功,也会出现提示,比如寄存器名称不是SIM447系统中定义的特定寄存器(如表2所示),则会提示为:Can't find specific register!

10.ER——工作寄存器内容修改命令

命令格式:ER [工作寄存器地址]

功能说明:修改工作寄存器的内容,并且可以连续修改。在单步执行的过程中,如果要更改某一个或者地址连续的某几个工作寄存器的内容,可以利用该命令实现。如果命令之后不带地址,则自动从00H号单元开始修改工作寄存器空间内的寄存器。

应用举例:如果打算把地址为03H~07H的5个寄存器内容连续修改为5、6、7、8、9,可以按以下方法输入,最后输入回车键即可停止修改:

>er 3

03 FF:5

04 0F:6

05 F0:7

06 EE:8

07 DD:9

08 AA:↓

在会话区可以看到修改之前寄存器的内容,并且在修改的同时,即可在寄存器显示区看到变化。

11.EC——特殊功能寄存器内容修改命令

命令格式:EC [特殊功能寄存器地址]

功能说明:修改特殊功能寄存器的内容,并且可以连续修改。如果要更改某一个或者地址连续的某几个特殊功能寄存器的内容,可以利用该命令实现。如果命令之后不带地址,则自动从00H号单元开始修改特殊功能寄存器空间内的寄存器。

应用举例:如果打算把IOC5、IOC6和IOC7这3个寄存器内容连续修改为0FH、F0H和FFH,可以按一下方法输入,最后输入回车键即可停止修改:

>ec 5

05 22:0f

06 22:f0

07 22:ff

08 22:↓

12.A——程序修改和在线汇编命令

命令格式:A [ROM地址]

功能说明:该命令同时具备汇编指令输入、在线修改和在线汇编的功能。可以通过键盘逐条输入汇编语言指令,在每一条指令输入完毕按下回车键时,在线汇编功能就自动将所输入指令汇编成二进制目标码(即机器码),并填入SIM447系统虚拟的程序存储器的指定单元,将原先的指令码覆盖掉。如果A指令之后不带地址,则会自动把上一次A命令的结束地址作为本次A命令的开始地址。应注意,在线汇编器并没有提供插入程序代码的功能,而一经更改的程序代码将无法恢复,必须小心使用。在线汇编功能要求所输入的地址或数据都默认为是十六进制的数值,且必须以数字开头。

在用SIM447调试程序的过程中,有时需要改动程序的某一条或某几条指令,利用A命令则可以大大简化程序修改过程。此外,如果程序较短,不用文本编辑器和宏汇编器,也可以完成程序的输入、汇编和调试。

应用举例:下面是借助于在线汇编命令A来输入和汇编的一段“流水灯例程”,其实现的功能是,让寄存器R4的内容与进位标志C一起自右向左循环移动。当完成程序输入时,按下回车键即可退出在线编辑和汇编模式。

>A0;在线汇编从第0000H号ROM单元开始

0:MOV A,@01;将常数01H送入累

加器A

01:MOV 4,A;把读到的数据送入寄

存器R4

02:RLC 4;带着进位标志C循环左移

03:JMP 2;跳转回去形成循环移动

04:9邀Enter9妖;按回车键,结束输入

>9邀F79妖;按住9邀F79妖键,从地址0000H快速单步执行

在程序的执行过程中,可以在寄存器区看到R4的内容不停地循环移动。

大海创作室@


本期有奖问答的题目是:

1. 在SIM447系统中,本讲介绍的控制程序执行过程的命令有哪几个?实现修改功能的命令有哪几个?

2.单步执行命令T和单步跨越执行命令P有何异同?

答案请来信至编辑部,或E-mail至computer@radio.com.cn。


本刊第10期“义隆单片机课堂”有奖问答获奖名单


雍巍伟 胡 耀 周海涛 李 亚 陈明骏

兰 宇 唐建业 孔贺虎 姚家恒 冯 烨

以上读者将收到由义隆公司赠送的IC数据资料光盘。欢迎读者继续积极参加我们的有奖活动!