标题: 请教关于KEIL C251编译器关于USING 0的使用语法问题 [打印本页]

作者: newlined    时间: 2024-4-13 13:05
标题: 请教关于KEIL C251编译器关于USING 0的使用语法问题
一个单片机程序,关于R0到R7寄存器的使用,以前是通过设置RS0,RS1来区分,比如在一个中断中 执行 CLR RS0;CLR RS1,使用0区,在另一个中断中执行SETB RS0;CLR RS1,使用1区,在主程序中执行 SETB RS0,SETB RS1使用3区。现在我想在程序使用中对R0到R7的寄存器压栈处理,就是 PUSH AR0....PUSH AR7,发现在程序的开头中不使用  USING 语句定义寄存器区域的使用,编译就会出问题,出现下面的错误  : error A53: MISSING 'USING' INFORMATION,我是不是要把程序中所有的 CLR RS0;CLR RS1,替换成 USING 0,SETB RS0;CLR RS1 替换成 USING 1,SETB RS0,SETB RS1 替换成 USING 3?假设 我写成一下程序会怎样?

CLR  RS0;
CLR  RS1;
USING 3

就是关于使用using的机理是什么,谢谢大家。

作者: 1600277881    时间: 2024-4-13 19:23
using 3 它不是CPU指令,所以不会翻译成任何CPU指令, 它只是告诉编译器这个寄存器组已用, 不要拿来放变量而已, 要转到Bank 3 就 ORL  PSW,#0x18
作者: Hephaestus    时间: 2024-4-13 21:12
using就两个用途,一是AR0这样的别名,不写using汇编器不知道AR0到底在哪里。另一个用途是写relocatable代码的时候,using表示这个地方已经被使用了,链接的时候会避免在这里分配变量地址。
作者: newlined    时间: 2024-4-15 08:06
1600277881 发表于 2024-4-13 19:23
using 3 它不是CPU指令,所以不会翻译成任何CPU指令, 它只是告诉编译器这个寄存器组已用, 不要拿来放变量 ...

谢谢您的回复,我再揣摩下。
作者: newlined    时间: 2024-4-15 08:07
Hephaestus 发表于 2024-4-13 21:12
using就两个用途,一是AR0这样的别名,不写using汇编器不知道AR0到底在哪里。另一个用途是写relocatable代 ...

谢谢您的回复,using可以在程序中多次使用吗?
作者: Hephaestus    时间: 2024-4-15 11:51
newlined 发表于 2024-4-15 08:07
谢谢您的回复,using可以在程序中多次使用吗?

当然可以,using的有效期在写using这一行的下一行开始,直到遇到另一个using结束。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1