你的假如是对的,但是主要不是CPU不知道STATUS代表02H了(CPU当然也不知道,CPU除了机器语言什么也不知道),而是编译软件不知道STATUS代表02H了。 取消了当然不行!
“status EQU 02H”就是定义STATUS代表02H
定义了之后MOVF STATUS,W 就相当于MOVF 02H,W
EQU定义之后,上两句话功能是一样的!STATUS被定义是便于我们人直观理解。
你估计是刚学,刚开始教你定义是为了便于你理解,以后会教你引用编译软件里的头文件,你就不需要一个一个写了。
所谓的特殊功能寄存器都是人为地为其加上名字
单片机只能认识物理的寄存器
如20H,80H
所以吧STATUS定义为02H是有必要的
在一些编程环境是已经把51的特殊功能寄存器定义好的如wave6000
在keil C中需要include 51的寄存器/IO定义文件
对于PIC而言
在MPLAB IDE也是加入include XXX.INC
假如取消status equ 02h
CPU不能识别,编译出错
这些寄存器的地址是固定的,但是有个前提,就是包括头文件。
原因是头文件中包含了status equ 02h 等所有寄存器的定义。
你现在的程序肯定是没包括头文件,所以必须自己定义。
STATUS不属于特殊功能寄存器
当然要定义了才能用啊.