keil4在C51中嵌入汇编语言,KEIL C51程序中如何嵌入汇编
P1=0x00;
#pragma asm
MOV R3,#08H
DJNZ R3,$
#pragma endasm
P1=0xff;
}
void delay(void)
{
#pragma asm
MOV R4,#08H
DJNZ R4,$
#pragma endasm
}
(4)、汇编语言中外部子程序的调用
汇编语言中外部子程序的调用
在遍写程序的时候,可以在一个文件的汇编程序中调用另一个文件的子程序。具体的方法如下。
1:在主程序文件中要声明所调用的子程序在外部。比如在主程序中调用子程序名为DELAY的子程序,其格式为:EXTRN CODE (DELAY)
2:在被调用的文件中要声明,被调用的子程序为公共类型的。比如DELAY要声明的格式为:PUBLIC DELAY
3:在被调用的文件中还需要声明此文件是可从新定位的。
SS SEGMENT CODE
RSEG SS
整个事例如下,文件A:
EXTRN CODE (DELAY)
EXTRN CODE (DEL)
ORG 0000H
AJMP MAIN
ORG 0030H
MAIN: NOP
TT: MOV P0,#00H
LCALL DELAY
LCALL DEL
MOV P0,#0FFH
LJMP TT
END
文件B:
PUBLIC DELAY
PUBLIC DEL
SS SEGMENT CODE
RSEG SS
DELAY: MOV R2,#3H
DJNZ R2,$
RET
DEL: MOV R3,#03H
DJNZ R3,$
RET
END
(5)采用__asm进行汇编的嵌入,例如:
if (sys_ctrl.t_run_num!=sys_ctrl.nt_run_num)
{
__asm PUSH ACC //断点数据保存
__asm PUSH B
__asm PUSH PSW
__asm PUSH AR0
__asm PUSH AR1
__asm PUSH AR2
__asm PUSH AR3
__asm PUSH AR4
__asm PUSH AR5
__asm PUSH AR6
__asm PUSH AR7
sys_task[sys_ctrl.t_run_num].task_sp = SP; //保存栈顶地址
sys_ctrl.t_run_num = sys_ctrl.nt_run_num; //任务号切换
sys_ctrl.nt_run_num = 0; //将新任务号清除便于后续操作
SP = sys_task[sys_ctrl.t_run_num].task_sp; //获取新任务栈顶地址
__asm POP AR7 //恢复断点数据
__asm POP AR6
__asm POP AR5
__asm POP AR4
__asm POP AR3
__asm POP AR2
__asm POP AR1
__asm POP AR0
__asm POP PSW
__asm POP B
__asm POP ACC
}
编译时,进入如下对话框,选中其中标出的两项:
[1] [2]
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
keil4在C51中嵌入汇编语言,KEIL C51程序中如何嵌入汇编相关推荐
- 根据c51程序改写汇编语言,Keil C51编译及连接技术
主要介绍Keil C51的预处理方法如宏定义.常用的预处理指令及文件包含指令,C51编译库的选择及代码优化原理,C51与汇编混合编程的方法与实现以及超过64KB空间的地址分页方法的C51实现. 教学目 ...
- c51 嵌入 汇编语言,单片机代码编程时如何嵌入汇编语言
有一次有读者提问,想从C51单片机转入stm8单片机来学习,那么进行软件编程时能不能使用汇编呢?小编本文就简要介绍下如何使用C语言编程嵌入汇编语言. stm8单片机编译有两种嵌入汇编指令的方法.第一种 ...
- c51语言bit函数,keil C51中的本征函数库及使用说明
本征函数(intrinsicroutines)是指编译时直接将固定代码插入当前行,而不用ACALL和LCALL 来实现(无需堆栈操作?),可大大提高函数的访问效率. 函数原型 extern void ...
- c51语言c100错误,KEIL C51错误的解决办法
有时候在编好一个程序之后,编译链接时,提示说有如下错误. 错误为 ..校长基金1TEXT1.C(56): error C100: unprintable character 0xA1 skipped ...
- c51语言开发工具,KEIL C51 开发工具
产业标准的Keil C编译器.宏汇编器.调试器.实时内核.单板计算机和仿真器,支持所有的8051系列微控制器,帮助你如期完成项目进度. 当启动一个新的项目,你只需从设备数据库选择使用的微控制器,μVi ...
- python在中小学教学中的应用-在python程序中的进程操作
********在python程序中的进程操作********之前我们已经了解了很多进程相关的理论知识,了解进程是什么应该不再困难了,刚刚我们已经了解了, 运行中的程序就是一个进程.所有的进程都是通过 ...
- chrome插件中调用ajax,Chrome扩展程序中的Ajax调用无效
尝试在Chrome扩展程序中发送ajax请求.我已经确认请求返回200响应,它应该只是console.log来测试'.我不确定这里是否存在异常问题?我已经阅读了Chrome扩展程序' addListe ...
- http中的scheme和小程序中的scheme
1. http中的scheme scheme就是url中标识协议的部分,可能是http也可能是ftp等. / 标识path的开始. :标识参数的开始,例如: ftp://prep.ai.mit.edu ...
- c语言编程中野指针错误,C程序中可怕的野指针
一.疑问点 指针是C语言一个很强大的功能,同时也是很容易让人犯错的一个功能,用错了指针,轻者只是报个错,重者可能整个系统都崩溃了.下面是大家在编写C程序时,经常遇到的一种错误的使用方法,也许在你的学习 ...
最新文章
- 清华天才王垠受邀面试阿里P9,被阿里P10赵海平面跪,整个事件回顾...
- Python代码发现链表中的环并输出环中的第一个元素
- 团队作业1(陈爽、夏江华、李瑞超、甘彩娈、吕乐乐)
- 使用Boost.Compute的STL 在GPU上添加两个向量的实现
- 文件查找_tar_ext34_swap
- java环境变量代表的含义_java 环境变量的涵义
- html做一个年份月份天数选择器,jquery编写日期选择器
- 数据库驱动加载失败问题
- JHOST邀请码,2012年7月31日申请,2012年8月31日过期
- pacman使用教程,官方文档中文版
- 深信服SSL远程接入与深信服行为审计同步登陆用户信息
- 自定义倒计时跳过按钮
- 忧伤的步调,伤感的歌曲,爱情路只是我一个人de仰望
- count()--不是单组分组函数
- TCP/IP 面试题整理
- 镗孔指令g76格式_关于镗孔G76循环退刀方式总结
- U 需要知道的反射知识 -- 大白话
- ZOJ 3380 Patchouli's Spell Cards(DP,大数)
- 计算机培训结业典礼主持词,培训结业典礼主持词范例珍藏版(备份存档)
- 逐步回归matlab函数,Matlab逐步回归
热门文章
- 通过命令行方式远程连接redis
- 高中毕业学计算机知乎,高中毕业学点什么好?知乎大神这么回答!
- python3简明教程下载_Python3简明教程一
- 计算机考研初试高校分数线整理
- 现在是时候认真看看医疗保健云安全了
- C++ vector常用函数总结
- 利用计算机的数字化技术和人机交换,多媒体技术与应用教程(雷运发)课后习题答案(1-4)...
- element-plus dialog v-loading不生效
- 了解“感应雷”危害,针对性防护
- 特立独行的幸福 测试点 4