在keil中调试汇编程序(MCS51)

转自:http://blog.163.com/wangshuian_1987@126/blog/static/107687168200943326103/

    1.打开软件,菜单栏中选择“project------new project”,弹出“Create New Project”对话窗口,选择目标路径,输入项目名,保存。

    2.上一步保存时会弹出“Select Device for Target”对话窗,在此选择cpu类型,确定。

在keil中调试汇编程序(MCS51)_第1张图片

      3.在菜单栏选择“File-------New”新建文档,再“File---Save”保存,写上文件名及扩展名“.asm"先保存在写的好处是Keil会自动识别汇编语言的关键字,并以不同的颜色显示,减少输入代码的语法错误。

     4.程序写完后,保存。在Keil中"Project Workspace"子窗口中双击“Target 1”,展开此目录。在“Source Group 1”文件夹上单击鼠标右键,选择“Add File to Group Source 1”,弹出“Add File to Group”对话窗口

选择文件类型“Asm Source File”并找到刚才写的.asm文件,添加到Source Group 中。

在keil中调试汇编程序(MCS51)_第2张图片

    5.在“Project Workspace”窗口中的“Target 1”文件夹上单击鼠标右键,选择“Option for Target”,则会弹出“Option for Target”对话窗口,选择“Output”选项卡,选择"Create HEX File"选项。 【这步是使用Proteus软件仿真时使用,Proteus软件要HEX文件】

在keil中调试汇编程序(MCS51)_第3张图片

    6.在Keil菜单栏选择“Project-------Build  Target”命令,编译汇编源文件。Build窗口显示 0 Error(s)即可。

在菜单栏中选择“Debug-------Start/Stop Debug Session”选项。这时,系统进入程序调试环境。按F11键,程序单步执行。在“Project Workspace”窗口中能看到累加器,通用寄存器及功能寄存器的变化。在memory窗口中可看到每执行一步语句后存储体的变化。【假如发现keil c51 出现 error 56 :cant open file,请确认在start debug session 前,按下build target(快捷键F7)点击工具栏上的图标时,可能会点错】


no 'execute/read' permission  错误的处理方案:

在keil中调试汇编程序(MCS51)_第4张图片

你的Debug选项没有设置好,如图,把我画箭头的地方选项去掉,不要勾选.

另外,你的这个程序,DB指令是不可以放置到Main后面的,正常的做法,是放到整个程序的最后面.

追问
我试过把勾去掉了,去掉就跑不进这个程序了。我把DB放到后面不去掉那个勾,程序是能运行了,但是没有实现想要的功能。这段程序是要实现将地址30H到39H所存的数据进行排序放入这片单元,是一次考试时让我们读指令判定其实现的功能的,所有程序应该没问题。不过原题没有DB指令。我想看下程序跑的过程,所以自己加了BD指令,想请教一下是不是不能这么赋值啊?
回答
DB是定义常量伪指令,在在ROM里定义一段常量,记住,是在ROM里,而程序也是在ROM里存放的,所以,如果你把DB放在程序执行过程中,那么你所定义的DB就会被当作指令来执行了,而这个时候,就会出错误.
 
如果你要使用DB,第一,给这段常数加个标号,第二,放到程序最后面去,这样比较保险.
比如:
 
MOV DPTR,#TAB
MOV A,#01H
MOVC A @A+DPTR

你的代码 入口点 指定了吗》?在启动文件里!startUp.s 文件里,如果没有的话,程序只能从0x0开始执行啊!而在0x0都是NOP! 

你的 ORG 30H 说明第一条指令在 0x30处,但是你执行是从0x0开始的,故执行不到你的程序那里去! 

你把你的代码 改成
ORG  0H
试试



你可能感兴趣的:(在keil中调试汇编程序(MCS51))