⑴ 51单片机,怎么用汇编调用C函数,怎么用C调用汇编写的函数,他们的参数是怎么传递的
哎. 你去下载MasmPluse.exe(在aogo小站)然后在下载他们站点提供的MasmPluse的教程. 同时下载OLLYDBG(在看雪论坛下载)调试. 并且看一本叫《WINDOWS下32位汇编语言程序设计》罗云彬写的前提是你要学会这们语言. 至于hello word, 这个玩意很简单..386 ;这是指明CPU使用的指令集.model flat,stdcall ;这是指明使用平坦的段(4GB) stdcall是调用约定,这个可以网上查到.option casemap:none ;这里指明是否区分大小写,因为API接口对大小写区分的很严格所以必须指定.include windows.inc ;包含参数声明文件,这是个包含了windowsAPI接口一些参数值的文件.include user32.inc ;user32.dll库内函数的参数声明.include kernel32.inc ;kernel32.dll库内的函数的参数声明.includelib user32.lib ;这是指明user32.dll库内函数准确地址的一个声明.includelib kernel32.lib ;这个就不解释了 .data ;已初始化可以读写段szCaption db 'A MessageBox !',0szText db 'Hello, World !',0 .code ;已初始化可读不可写段start: invoke MessageBox,NULL,offset szText,offset szCaption,MB_OK ;MessageBox(user32库内的一个API函数)他弹出一个message框显示一些提示. invoke ExitProcess,NULL ;这个不用解释了,结束进程. end start ;代码结束的标志.MasmPluse是汇编泰斗们编写的,界面干净简洁,代码支持高亮.并且他们的站点还提供MasmPluse的教程和代码列子.OllyDbg是r3级别的一个调试工具,使用方式看雪有详细教程.Api接口是应用程序编程接口,说通俗点就是系统提供的功能函数.调用约定是指明调用参数的传递方式和入栈方式.
⑵ 求51单片机汇编语言快速入门
通常是学明白一种芯片,根据需要触类旁通其它芯片;鉴于51市场还是比较广,教材和用的人比较多,还是选择51入门好; 汇编和C都可以用,只是汇编直接对硬件进行操作,更直观和高效一些,但是如果些比较复杂的程序用汇编写起来就比较麻烦了,就是一个简单的16bit*16bit就要你花点心思,而C只要定义数据类型,一条指令就可以实现了;学习的时候汇编还是要关注,这有利于理解芯片结构和程序的具体运行情况,开发的时候一般以C为主,遇到对于性能要求高的场合用汇编,或者混合编程; 作为初学者,买一本经典教材就可以了,胡汉才、李全利的都不错,看看、想想、调试一下程序;汇编的书基本上不要专注研究,倒是建议如果有条件买一块开发板,或者自己做一个最小系统——单片机一半是学出来,另外也是很重要的一半,做
⑶ 51单片机中,C语言中怎么加入汇编语言
C语言的执行效率比汇编高很多,为什么要加汇编呢,C语言中不直接加入汇编,少数的汇编指令你可以在开头宏定义一下,比如#define _NOP()_ nop();
⑷ 51单片机汇编语言编程
编译器不知道P0代表什么,因为你没有包含头文件,P0只是个地址的代表,你在REG51.H看看P0的地址是多少
⑸ c51单片机中如何用汇编语言编写流水灯
51单片机用汇编语言编写流水灯程序,就是控制多个LED ,使其在特定时间间隔内,只有一个LED 发光,其他熄灭,用这种方式顺序移动点亮LED的位置,就形成了流水灯的效果。以下是程序:;假设晶振12MHZ,P1控制8个LED低电平亮 ;启动入口======================== ORG 0000H ;复位启动 AJMP START ; ORG 001BH ;T1中断 AJMP T1INT ; ;定义变量========================YSJS EQU 30H;延时计数器LED EQU 31H;LED控制缓冲器 ;主程序==========================START: MOV LED,#0FEH ;初始化数据 MOV YSJS,#0 ; ; MOV TMOD,#10H ;定时器1工作于方式1,16位定时器 MOV TL1,#0B0H ;设置定时初值 MOV TH1,#3CH ;定时时间=50mS SETB ET1 ;使能定时器1中断 SETB TR1 ;启动定时器1 SETB EA ;开总中断 MOV P1,LED ;初始化流水灯 ;LOOP: JMP LOOP ;循环等待中断 ; ;T1INT: PUSH PSW ;定时器1中断程序 PUSH ACC ;保护现场 ; MOV TH1,#3CH ;定时时间=50mS MOV TL1,#0B0H ; INC YSJS ; PUSH ACC ;保护ACC MOV A,YSJI ; CJNE A,#2,QT1 ;50mS*2=100mS MOV P1,LED ; MOV A,LED ; RL A ;累加器A的值循环左移1位 MOV LED,A ; MOV YSJS,#0 ; ;QT1: POP ACC ;恢复现场 POP PSW ; RETI ;返回主程序 END ;汇编程序结束
⑹ 51单片机的汇编编程
ORG 0000HMOV DPTR,#2000HMOV R0,#2AH ;#2AH * #60H=#1000HMOV R1,60HCLR R2CLR R3LOOP:CLR A MOVC A,@A+DPTR CJNE A,#41H,QUET ;与A的ASCII码#41H比较,不等->转移 MOV A,R2 INC A MOV A,R2 JC JIAYI ;溢出一次,R3+1 LJMP QUETJIAYI:INC R3 LJMP QUETQUET:INC DPTR DJNZ R0,LOOP DJNZ R1,LOOPMOV DPTR,#2010HMOV A,R2MOVX @DPTR,AINC DPTRMOV A,R3MOVX @DPTR,AEND
⑺ 51单片机汇编教程
在网络搜索《mcs-51、96系列单片机原理及应用》,孙涵方著,32开本大小,北京航空航天大学出版社1988年出版。书虽老,但很经典,对汇编部份讲的最细致、最完整,还有许多常用子程序。如果买不着,也可以在网络文库中下载PDF格式的电子版。
⑻ 51单片机汇编语言按键如何编程
编程抄时,要把整个程序,分解成一个袭一个模块。一个模块,只包括一个功能。那么,KEY 模块:读出按键、消除抖动、读取键值,返回键值。键值包括:00H、08H… 20H,FFH(无键)。这个 KEY 模块,到这就完了。按键如何处理,则是另外的模块。楼主流程图,包罗万象,好像是个主程序。不好弄。
⑼ 51单片机入门编程(汇编语言)
ORG0000HLJMPMAINORG000BHLJMPT0ISRORG0030HMAIN:MOVTMOD,#01HMOVTH0,#HIGH(65536-50000)MOVTL0,#LOW(65536-50000)SETBTR0SETBET0SETBEACLRP1.0SJMP$T0ISR:CLRTR0MOVTH0,#HIGH(65536-50000)MOVTL0,#LOW(65536-50000)SETBTR0CPLP1.0RETIEND
⑽ 关于51单片机的汇编
首先,你这样的写法是不对的,ORG 001BH AJMP sign0 这两句应该放到LJMP main后面,以免中间的字节占用到001B,那样就会出乱的。第二、你的定时器0是用做中断吗?没看见你的中断入口。第三、你的中断处理程序这样写是大忌:LJMP $ ;虚拟主程序,等待中断中断处理程序不跳出去,除非是中断优先级更高的中断才能进来,而且这样做程序的流程更混乱第四、你的p1.0取反在两个地方都写了,最好只在一秒处理里面写。 请参考