导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→初学者:请教高手两个问题[gjsh691219]

 *第7036篇: 初学者:请教高手两个问题

  
楼 主:gjsh691219 2002年12月18日16:50
 初学者:请教高手两个问题
请教高手问题:
1、很多程序中的开头都有 “ORG 30H ”这条语句,但它并不是中断,那么为什么要在程序
中写上这一句呢?不要这一句可不可以?
例:
ORG 0000H 
AJMP START 
ORG 30H 
START: 
MOV SP,#5FH 
...

2、象下面的语句:
AB EQU 1234H

AB在程序中就等于是1234H,那么用到AB的时候,它是代表数据地址还是代码地址还是立即
数?在编程时怎么区分?

3、以下语句正确吗?
H_VAC EQU  #65H
 
                     2002.12.18

  
2楼:dalenliu 2002年12月18日17:11
  也许
1,许多单片机运行时都是从地址0000h取指令运行的。
org 0000h
ajmp start
表示单片机一开始运行就跳转到start处开始执行。

而start在哪里呢?就是org 0030h指定的地址。
即转而运行MOV SP,#5FH指令

我想org应该是为其后面的程序指定(或者定义)开始的地址。

2,3  equ有点类似于c语言中的define。具体看书吧。
见笑了。

  
3楼:gjsh691219 2002年12月19日09:27
 再请教
1、那么不要 ORG 0030H 应该可以吧
2、EQU 的问题是否可以这样理解:(用代码说明)
设0034H中存放的是值23H

AB EQU 0034H
MOV A,AB   ;A中的值是23H
MOV A #AB  ;A中的值是34H
AJMP AB    ;转到代码23H处

  
4楼:dalenliu 2002年12月19日16:21
 看看教材吧
  
5楼:meiguiyu 2002年12月19日09:18
 详细回复!!!!
1、如果整个程序未用到中断,那么你完全可以不要,这这是为后面的程序模式打基础
2、具体使用的时候看具体情况,如果你用的是8位的单片机,那么这里的AB肯定代表地址
3、不正确。H_VAC    EQU     65H
   用的时候你要将它做为立即数用的话就应该是  MOV   A,#H_VAV
  
6楼:gjsh691219 2002年12月19日09:29
 谢谢 meiguiyu,谢谢 dalenliu.
  
7楼:hyhmh 2002年12月19日09:30
 补充一下
1.采用汇编编程应该养成习惯,最好不要省去ORG XXXXH,当然不一定非0030H。
   如果不使用,万一程序跑乱时,中断打开(非正常),结果就更糟。
2. AB也可能是数据(无论是16位还是8位),也可能是地址。这与编程者使用目的有关。
    例如,       AB    EQU   (65535-200+1)
          初始化定时器时       MOV TH1,#HIGH(AB)
                              MOV TL1,#LOW(AB)
    计算赋值时可以不考虑高、低字节,由编译系统自动完成。
  
8楼:gjsh691219 2002年12月19日09:40
 谢谢hyhmh

>>>>>>对该主题发表你的看法

本主题贴数8,分页: [第1页]


[上一篇主题]:分割HEX文件的方法?

[下一篇主题]:C51编程:CS5460A的使用?