3316|2

3

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

keil汇编编程出错,解决不了 [复制链接]

程序如下:
                          ORG      0000H
                          LJMP     START
                          ORG      0003H
                          LJMP     EXT0
                          ORG      TIM0
                                                  
START:                    MOV           SP,#70H
                          MOV      TMOD,#00000001B
                          MOV      TH0,#HIGH(65536-10000)
                          MOV      TL0,#LOW(65536-10000)
                          SETB     TR0
                          MOV      IE,#10000011B
                          MOV      IP,#00000001B
                          MOV      R5,#100
                          MOV      R1,#0FEH
                          JMP      $
                                                  
TIM0:                     PUSH     ACC
                          PUSH     PSW
                                 MOV      TH0,#HIGH(65536-10000)
                          MOV      TL0,#LOW(65536-10000)
                          DJNZ     R3,LOOP
                          MOV      R3,#100
                          MOV      A,R1
                          MOV      P2,A
                          RL       A
                          MOV      R1,A

LOOP:                     POP      PSW
                          POP      ACC
                          RETI

EXT0:                     PUSH     ACC
                          PUSH     PSW
                          MOV      A,#00
                          MOV      R2,#10

LOOP3:                    MOV      P2,A
                          CALL     DELAY
                              CPL      A
                          DJNZ     R2,LOOP3
                          POP      PSW
                          POP      ACC
                          RETI

DELAY:                    MOV      R5,#20
D1:                       MOV      R6,#20
D2:                       MOV      R7,#248
                          DJNZ     R7,$
                          DJNZ     R6,D2
                          DJNZ     R5,D1
                          RET
                          END


报警如下:
Build target 'Target 1'
assembling AAAA.asm...
AAAA.asm(7): error A42: PHASE ERROR (PASS-2)
Target not created




关于这个设置堆栈数值为啥会错,求大神解答下,应该是对的啊,
此帖出自51单片机论坛

最新回复

本帖最后由 ywlzh 于 2016-4-7 10:10 编辑 这么简单的问题 ORG是Origin的缩写:起始地址,源。在汇编语言源程序的开始通常都用一条ORG伪指令来实现规定程序的起始地址。如果不用ORG规定则汇编得到的目标程序将从0000H开始。例如:              ORG 2000H        START:MOV  AX,#00H 汇编语言源程序中若没有ORG伪指令,则程序执行时,指令代码被放到自由内存空间的CS:0处;若有ORG伪指令,编译器则把其后的指令代码放到ORG伪指令指定的偏移地址。两个ORG伪指令之间,除了指令代码,若有自由空间,则用0填充。 预处理-->编译-->汇编-->链接,这是高级语言的编译全过程。对于纯汇编,就只有汇编和链接两个步骤。 org指令是链接时使用的,不是汇编那一步使用的。即不是cpu的一条指令,而是给编译器看的伪指令。 在51单片机、x86 dos、win32 exe中实现都有差异。 以最简单的51单片机为例,编译器最终链接生成HEX文件,再烧录到51的rom中去。单片机很简单,没有x86的分段、分页,启动就是从rom的0x0的位置开始执行。同时0x30H位置开始存放中断向量, 所以单片机程序一般开头就是:    ORG 0000H    AJMP MAIN    ORG 0030H 这里的ORG 0000H指令,使得程序链接成HEX文件时,AJMP MAIN这条指令的机器码就在HEX文件的0x0位置。这是链接器的工作。 至于x86 dos和win32 exe,ORG的实现就复杂了,ORG不再是绝对定位,只能在一个段里相对定位。 这个是别人说的 对于初学者,你就记着,ORG后面跟的是地址,不是标号!   详情 回复 发表于 2016-4-7 10:05
点赞 关注
 

回复
举报

1234

帖子

4

TA的资源

纯净的硅(高级)

沙发
 
本帖最后由 ywlzh 于 2016-4-7 10:10 编辑

这么简单的问题


ORG是Origin的缩写:起始地址,源。在汇编语言源程序的开始通常都用一条ORG伪指令来实现规定程序的起始地址。如果不用ORG规定则汇编得到的目标程序将从0000H开始。例如:
             ORG 2000H   
    START:MOV  AX,#00H

汇编语言源程序中若没有ORG伪指令,则程序执行时,指令代码被放到自由内存空间的CS:0处;若有ORG伪指令,编译器则把其后的指令代码放到ORG伪指令指定的偏移地址。两个ORG伪指令之间,除了指令代码,若有自由空间,则用0填充。

预处理-->编译-->汇编-->链接,这是高级语言的编译全过程。对于纯汇编,就只有汇编和链接两个步骤。
org指令是链接时使用的,不是汇编那一步使用的。即不是cpu的一条指令,而是给编译器看的伪指令。
在51单片机、x86 dos、win32 exe中实现都有差异。
以最简单的51单片机为例,编译器最终链接生成HEX文件,再烧录到51的rom中去。单片机很简单,没有x86的分段、分页,启动就是从rom的0x0的位置开始执行。同时0x30H位置开始存放中断向量, 所以单片机程序一般开头就是:
   ORG 0000H
   AJMP MAIN
   ORG 0030H
这里的ORG 0000H指令,使得程序链接成HEX文件时,AJMP MAIN这条指令的机器码就在HEX文件的0x0位置。这是链接器的工作。 至于x86 dos和win32 exe,ORG的实现就复杂了,ORG不再是绝对定位,只能在一个段里相对定位。
这个是别人说的
对于初学者,你就记着,ORG后面跟的是地址,不是标号!
此帖出自51单片机论坛
 
个人签名天地庄周马;江湖范蠡船。
个性签名还是放QQ号吧,2060347305,添加说明EEworld好友
 
 

回复

3

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
ywlzh 发表于 2016-4-7 10:05
这么简单的问题


ORG是Origin的缩写:起始地址,源。在汇编语言源程序的开始通常都用一条ORG伪指令来实 ...

谢谢大神指点,刚入门的菜鸟还是粗心大意了。。。
此帖出自51单片机论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表