单片机汇编语言中,加了指令地址,为何不能通过编译呢,如下程序,在Keil中不能通过编译
ORG1000H1000H:MOV57H,#34H1003H:LJMP2000H而不加指令地址却能通过编译。我不是钻牛角尖,只是做一个研究而已。教材上说汇编语言指令格式中...
ORG 1000H
1000H: MOV 57H,#34H
1003H: LJMP 2000H
而不加指令地址却能通过编译。
我不是钻牛角尖,只是做一个研究而已。教材上说汇编语言指令格式中,“指令地址:语句助记符,操作数”,这才是完整的语句指令。当然将其中的指令地址改为标号,如下语句能通过编译。
START: MOV 57H,#34H
问题是标号不就是指令地址吗,为什么不一样呢? 展开
1000H: MOV 57H,#34H
1003H: LJMP 2000H
而不加指令地址却能通过编译。
我不是钻牛角尖,只是做一个研究而已。教材上说汇编语言指令格式中,“指令地址:语句助记符,操作数”,这才是完整的语句指令。当然将其中的指令地址改为标号,如下语句能通过编译。
START: MOV 57H,#34H
问题是标号不就是指令地址吗,为什么不一样呢? 展开
展开全部
教材上是说:
[标号域:] 操作码域 [,操作数域] [;注释域]
括号里面可以没有的。
标号域就是标明了操作码的地址而已。
ORG 是指定程序或者数据起始地址。
org 1000h,表示下面的程序存储在1000H开始,,1000H: MOV 57H,#34H
,这个前面可写可不写。不管你写START 还是1000H,都不会错的,多看看书吧。
[标号域:] 操作码域 [,操作数域] [;注释域]
括号里面可以没有的。
标号域就是标明了操作码的地址而已。
ORG 是指定程序或者数据起始地址。
org 1000h,表示下面的程序存储在1000H开始,,1000H: MOV 57H,#34H
,这个前面可写可不写。不管你写START 还是1000H,都不会错的,多看看书吧。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
指令前面,可以使用标号。
标号,必须用符号开头,还要加上冒号。
指令前面,不能使用数字形式的地址。
两者形式上的区别,还是很明显的。
标号,必须用符号开头,还要加上冒号。
指令前面,不能使用数字形式的地址。
两者形式上的区别,还是很明显的。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不需要加地址的,ORG就是定位伪指令,写了这条指令,会把下面的指令自动放在你所指定的空间
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
其实是重复定义了地址 如 这样试试 在 Keil uVision3 上可以编译
; ORG 1000H
1000H: MOV 57H,#34H
1003H: LJMP 2000H
; ORG 1000H
1000H: MOV 57H,#34H
1003H: LJMP 2000H
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询