共2条
1/1 1 跳转至页
问
本人一直用汇编,第一次用C51。有一个问题。
如下汇编用C51如何写?
MOV R2,#08H
NXT: MOV C,S_INPUT
RLC A
DJNZ R2,NXT
谢谢了,英雄们。
用于串行输入八位数据的。(不是串行总线RXD TXD) 答 1: 不就是连续采集8次S_INPUT(引脚吗?)数据吗?用C就有点罗嗦了,直接该写一下嵌到C里面得了。A值肯定是要受到影响的,C值、R2值要保护一下。 答 2: 编译后看看结果...for (i = 8;i > 0; i--) {// MOV R7,#08H
CY = S_INPUT; //NXT: MOV CY,S_INPUT;比MOV C,S_INPUT差点
CY = ACC & 0x80; // RLC A
} // DJNZ R7,NXT 答 3: 谢谢啦感谢大侠的指教 答 4: 郁闷,看不懂hotpower的程序。 答 5: to:xrg谢谢您的指教。
但是在下没有做过将汇编嵌入到c51的经历,不知道是否跟
在C中嵌入X86的汇编是同样的做法。还望大侠指教。
将51的汇编嵌入到C51中的语法规则是怎样的?
谢谢了!! 答 6: hotpower 能解释下为什么Keil会这样编译和你是怎么发现的吗?逻辑上好像没法解释啊,是Keil预留的特殊指令吗?
/*--------------------------------------------------------------------------
累加器带进位右移指令 RRC A
#define _rrca_() CY = ACC & 0x01
汇编代码 rrc a
--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------
累加器带进位左移指令 RLC A
#define _rlca_() CY = ACC & 0x80
汇编代码 rlc a
--------------------------------------------------------------------------*/ 答 7: fellow:XWJ是啊,我也在困惑中, CY = ACC & 0x80 =?=RLC A
请 hotpower 赐教。在下洗耳恭听。
还有,在c中嵌入汇编,就只用#PRAGMA ASM
ASM CODE
#PRAGMA ENDASM
就可以了吗?如果要返回值的话,是不是要先定义一个变量,
反汇编以获得该变量的地址ADD1,再回到汇编中,将值 MOV ADD1,A
是吗?
答 8: 哈哈...这个不知如何"行走江湖"???哈哈...整天反汇编难道这个都不知???
如下汇编用C51如何写?
MOV R2,#08H
NXT: MOV C,S_INPUT
RLC A
DJNZ R2,NXT
谢谢了,英雄们。
用于串行输入八位数据的。(不是串行总线RXD TXD) 答 1: 不就是连续采集8次S_INPUT(引脚吗?)数据吗?用C就有点罗嗦了,直接该写一下嵌到C里面得了。A值肯定是要受到影响的,C值、R2值要保护一下。 答 2: 编译后看看结果...for (i = 8;i > 0; i--) {// MOV R7,#08H
CY = S_INPUT; //NXT: MOV CY,S_INPUT;比MOV C,S_INPUT差点
CY = ACC & 0x80; // RLC A
} // DJNZ R7,NXT 答 3: 谢谢啦感谢大侠的指教 答 4: 郁闷,看不懂hotpower的程序。 答 5: to:xrg谢谢您的指教。
但是在下没有做过将汇编嵌入到c51的经历,不知道是否跟
在C中嵌入X86的汇编是同样的做法。还望大侠指教。
将51的汇编嵌入到C51中的语法规则是怎样的?
谢谢了!! 答 6: hotpower 能解释下为什么Keil会这样编译和你是怎么发现的吗?逻辑上好像没法解释啊,是Keil预留的特殊指令吗?
/*--------------------------------------------------------------------------
累加器带进位右移指令 RRC A
#define _rrca_() CY = ACC & 0x01
汇编代码 rrc a
--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------
累加器带进位左移指令 RLC A
#define _rlca_() CY = ACC & 0x80
汇编代码 rlc a
--------------------------------------------------------------------------*/ 答 7: fellow:XWJ是啊,我也在困惑中, CY = ACC & 0x80 =?=RLC A
请 hotpower 赐教。在下洗耳恭听。
还有,在c中嵌入汇编,就只用#PRAGMA ASM
ASM CODE
#PRAGMA ENDASM
就可以了吗?如果要返回值的话,是不是要先定义一个变量,
反汇编以获得该变量的地址ADD1,再回到汇编中,将值 MOV ADD1,A
是吗?
答 8: 哈哈...这个不知如何"行走江湖"???哈哈...整天反汇编难道这个都不知???
共2条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
与电子爱好者谈读图二被打赏50分 | |
【FRDM-MCXN947评测】Core1适配运行FreeRtos被打赏50分 | |
【FRDM-MCXN947评测】双核调试被打赏50分 | |
【CPKCORRA8D1B评测】---移植CoreMark被打赏50分 | |
【CPKCORRA8D1B评测】---打开硬件定时器被打赏50分 | |
【FRDM-MCXA156评测】4、CAN loopback模式测试被打赏50分 | |
【CPKcorRA8D1评测】--搭建初始环境被打赏50分 | |
【FRDM-MCXA156评测】3、使用FlexIO模拟UART被打赏50分 | |
【FRDM-MCXA156评测】2、rt-thread MCXA156 BSP制作被打赏50分 | |
【FRDM-MCXN947评测】核间通信MUTEX被打赏50分 |