单片机汇编语言常见错误分析
单片机C语言编程的常见问题分析
单片机C语言编程的常见问题分析单片机C语言编程是嵌入式系统开发的关键环节,其涉及的问题较多,下面是一些常见问题的分析:1. 编程语法问题在单片机C语言编程中,常见的语法问题包括错误的注释、拼写错误、语法错误等。
这些问题会导致代码无法编译或者运行出错。
为了解决这类问题,可以通过学习C语言的语法规则、对于变量和函数命名要求的规范等方式来规避。
2. 变量类型问题在单片机C语言程序中,常见的变量类型问题包括数据类型选择错误、变量的生命周期问题等。
数据类型选择错误可能会导致计算结果错误或溢出;而变量的生命周期问题可能会导致程序逻辑错误,例如在函数外部访问已被销毁的变量。
为了避免这类问题,可以采用C语言的作用域规则,注意变量的定义位置和生命周期。
3. 内存管理问题单片机编程中常见的内存管理问题包括内存的分配和释放、指针操作、堆栈溢出等。
这些问题都可能导致程序运行出错,例如崩溃或错误输出。
在实际编程过程中,需要理解单片机的内存结构和内存分配的方式,注意动态分配内存的安全性,避免使用未初始化的指针等。
4. 中断问题中断是单片机程序中常见的控制流处理方式。
在单片机C语言编程中,中断的处理需要注意很多细节,例如中断向量表的定义、中断处理函数的编写、优先级等。
这些问题都与单片机的硬件架构密切相关,需要根据具体情况进行处理。
5. 硬件驱动问题单片机程序通常需要与外设进行通信,这就需要编写硬件驱动程序。
硬件驱动程序需要考虑到外设的工作方式,通信协议等问题。
这些问题都需要结合具体的硬件进行分析和处理。
总之,单片机C语言编程涉及的问题较多,程序员需要熟练掌握C语言的语法规则、理解单片机的硬件结构和特性,以及理解外设工作原理和通信协议。
同时,程序员还需要注意代码的可读性和可维护性,编写清晰、简洁、高效的代码。
汇编语言一些常见错误
常见的汇编语言错误:
推荐书籍和软件:
1.《IBM PC汇编语言程序设计》作者:沈美明温冬婵/编著出版社:清华大学出版社
以前学习汇编必备的一本书,相当不错。
2.《Intel汇编语言程序设计(第四版)》作者:[美]Kip R.Irvine 译者:温玉杰张家生罗云彬针对Intel系列写的比较全面,翻译的人也不错,作为参考资料应该不错
3.Win32下的汇编书籍罗云彬写的《Windows环境下32位汇编语言程序设计》,32位环境下的汇编开发必备书
3.Emu8086开发环境(提供一些简单例子,并有单步执行和虚拟视窗模拟输入输出,比较直观)4.简单的编译环境(Microsoft公司的MASM.exe,Link.exe和Windows自带的Debug.Exe调试)。
单片机常见错误例程分析
单片机常见错误例程分析单片机是一种集成电路,对于初学者来说,由于经验不足,常会遇到一些错误。
下面我们来分析一些单片机常见的错误例程,以及解决方法。
一、看门狗定时溢出引起的复位单片机中通常都有看门狗(Watchdog)定时器,用于监控系统运行。
如果在程序中没有及时喂狗,导致看门狗定时器溢出,会引起复位。
解决方法:1.在主程序中设定喂狗的指令,以避免看门狗定时溢出。
2.在适当的位置设置看门狗使能的指令,保证看门狗定时器能正常工作。
3.尽量避免在中断服务程序中关闭看门狗定时器,以免因为中断响应过慢导致看门狗复位。
二、中断服务程序执行时间过长当中断服务程序执行时间过长时,会导致主程序无法继续正常运行。
这种情况下,单片机很可能无法响应其他外部事件。
解决方法:1.在中断服务程序中尽量减少对资源的占用,避免复杂的运算和长时间的延时操作。
2.将必要的数据交给主程序处理,减少中断服务程序的工作量。
3.合理设置中断优先级,确保重要的中断能及时响应。
三、电源噪声导致系统不稳定单片机对电源的稳定性要求较高,如果电源存在噪声,则可能导致系统不稳定,甚至崩溃。
解决方法:1.在供电线路上添加合适的滤波电容,以减小电源噪声。
2.使用稳压电源,保证电源输出的稳定性。
3.合理布线,避免电源和信号线的干扰。
四、编程错误编程错误是单片机常见的错误之一、例如,写入错误的寄存器地址、错误的命令、错误的数据等。
解决方法:1.熟悉单片机的手册,了解相关寄存器、命令和数据的使用方法。
2.仔细检查编程代码,避免拼写错误和语法错误。
3.使用调试工具,例如仿真器、逻辑分析仪等,进行实时调试。
五、外围设备连接错误单片机通常需要与外围设备进行通信,如果连接错误,可能导致通信失败或者数据传输错误。
解决方法:1.确保电路连接正确,检查信号线、电源线等的连接是否松动、接触不良。
2.根据外围设备的手册,仔细查阅相关接口的使用说明书,确保连接方式正确。
3.使用示波器、逻辑分析仪等工具,对通信信号进行监测和分析,找出错误原因。
汇编语言常见错误指令解决办法
(1) MOV DS, 2010H ;立即数不能传送到DS(2) PUSH AL ;栈操作,操作数类型必须为WORD类型(3) MOV DX,[SP] ;SP寄存器不能做间址寄存器(4) IN AL,0A00H ;I/O指令的直接寻址,地址只能为8位(5) XCHG CL,CH ;正确(6) SHR AX,3 ;移位超过一位时,应采用CL寄存器间址(7) AAA CX ;非组合的BCD码加法调整AAA指令应为隐含操作数(8) ADD [BP+DI] ;加法指令ADD,缺少源操作数(9) OUT DX,CL ;I/O指令操作数只能用AX、AL提供,端口地址可以是8位的直接地址或用DX间址(10)CBW BH ;符号扩展指令为隐含操作数(11)ADD 03ECH ;加法指令应为双操作数指令,立即数不能做目的操作数(12)MOV BX, [SI+DI] ;源操作数形式错误,SI和DI不能同时做为间址寄存器(13)MOV DI, [AX] ;AX不能做为间址寄存器(14)OUT 258H, BX ;I/O指令格式错误,见(9)题的解释(15)SHL AX, 3 ;移位指令,位移位数大于1时,应用CL来指明(16)MOV 64H,AL ;立即数不能做为目的操作数(17)ADD AL,6600H ;源、目的操作数的类型不一致(18)MOV[BX],[SI];传送指令中,两个操作数不能同时为存储器操作数(19)XCHG AX,8800H ;交换指令的操作数不能使用立即数(20)MOV AX,[BX+DX];传送指令的源操作数,不能使用立即数(21)LEA BX,1000H;有效地址传送指令的源操作数不能为立即数,必须是存储器操作数(22)DIV 0010H ;正确(23)LEA DX,DI ;同(21)题,源操作数不能为寄存器操作数(24)MUL AX,200H ;乘法指令的目的操作数是隐含的,不能出现在指令中(25)MOV AX, [BX+BP];传送指令中源操作数格式错,BX和BP不能同时为间址寄存器(26)CMP [BX], [SI] ;比较指令的两个操作数不能同时为存储器操作数(27)OUT DX, BX ;I/O指令中,源操作数只能使用AL或AX寄存器(28)AND OFH,AL ;“与”指令中,目的操作数不能使用立即数(29)SAL [BX],CX ;移位指令,移位位移不能用CX寄存器指明(30)JMP FAR [BX+SI] ;转移指令中转移的目标地址表达方式错误;如果是段内间接转移,应为:JMP WORD PTR[BX+SI];如果是段间间接转移,应为:JMP DWORD PTR[BX+SI](31)JNZ AAA;不相等转移指令中,符号地址(标识符)不能使用系统中的保留字(32)JMP NEXT ;正确(33)SBC AX, [DX] ;指令助记符错,源操作数表示方式错(34)MOV CS,DS;段寄存器之间不能传送数据,CS寄存器也不能做为目的操作数(35)ADD DS, AX ;加法指令中段寄存器不能做为操作数(36)MOV AL,CX ;源、目的操作数的类型不一致,见(17)题(37)INC [BX];没有指定存储器操作数类型(38)MOV CL,A8H;源操作数为16进制的立即数,16进制数以字母开头时应在前面加“0”(39)MOV ES,DS ;错同(34)题(40)IN AL,BX ;I/O指令端口地址表示错误,只能用8位立即数或DX 间址。
单片机指令的错误处理和调试方法
单片机指令的错误处理和调试方法在单片机编程中,指令的错误处理和调试方法是非常重要的。
由于单片机的指令执行过程是逐条执行的,一旦出现错误可能会导致系统崩溃或功能异常。
因此,正确处理指令错误以及有效地进行调试对于保证单片机系统的稳定性和可靠性至关重要。
一、指令的错误处理方法在单片机编程中,常见的指令错误包括语法错误、逻辑错误和运行时错误。
下面将分别介绍这些错误的处理方法。
1. 语法错误处理方法语法错误通常是由于编程人员书写代码时使用了错误的语法或格式造成的。
这种错误在编译时就会被捕捉到,并给出相应的错误提示信息。
处理语法错误的方法是仔细检查代码,找出错误的地方,并根据错误提示信息进行修改。
2. 逻辑错误处理方法逻辑错误是指程序的运行结果与预期结果不符。
这种错误通常需要通过调试的方式进行排查和修复。
常见的调试方法包括断点调试、输出调试和查看变量值。
断点调试是指在代码中设置断点,让程序在指定位置停止执行,然后通过逐步执行和观察变量的值来定位问题所在。
通过单步执行可以逐条地观察指令的执行情况,一步步分析程序的运行流程,从而找出错误。
输出调试是指在关键位置输出相关变量的值,通过观察输出结果来判断程序的执行情况是否符合预期。
可以通过串口输出或者在LCD屏幕上显示的方式进行输出调试。
查看变量值是指在程序运行过程中,通过查看关键变量的值来判断程序是否按照预期执行。
可以使用单片机提供的调试工具或者通过串口输出方式来实现。
3. 运行时错误处理方法运行时错误是指程序在运行过程中出现的错误,比如除零错误、溢出错误等。
这种错误通常需要通过错误处理机制来进行处理,以避免程序崩溃或数据损坏。
常见的处理方法包括异常处理和错误码处理。
异常处理是指在程序出现异常情况时,通过特定的程序逻辑进行处理,保证程序的正常运行。
错误码处理是指在程序出现错误时,通过返回特定的错误码来表示错误类型,并进行相应的处理。
二、指令的调试方法指令的调试是为了确保程序的正确性和稳定性。
单片机中常见的软件bug分析与修复方法
单片机中常见的软件bug分析与修复方法在单片机开发过程中,软件bug是难以避免的。
这些bug可能会导致系统崩溃、功能异常或不可预测的行为。
因此,准确分析bug并修复它们至关重要。
本文将针对单片机中常见的软件bug,介绍一些分析和修复方法。
1. 编译错误和警告的处理在单片机软件开发过程中,编译错误和警告是最常见的bug。
编译器通常会提供有关错误和警告的详细信息,例如变量未声明、语法错误或类型不匹配等。
开发者应仔细阅读编译器的输出,查找并修复错误和警告。
2. 内存相关问题的解决内存相关问题可能会导致单片机系统异常甚至崩溃。
常见的内存问题包括栈溢出和堆溢出。
栈溢出通常发生在递归调用或局部变量过多的情况下,可以通过增加栈的大小来解决。
堆溢出通常是由于动态分配的内存没有正确释放导致的,应当对内存的分配和释放进行仔细管理。
3. 时序相关问题的分析与调试时序相关问题可能会导致设备无法按照预期的时间表执行任务,从而导致功能异常。
在分析和调试时序问题时,可以使用逻辑分析仪、示波器和调试器等工具来观察信号的时序关系。
还可以通过增添延时、优化中断服务程序或调整时钟频率等方法来修复时序问题。
4. 中断问题的排查和修复中断是单片机系统中常见的机制,用于处理实时事件或外部信号。
中断问题可能导致系统死锁或响应时间延长等问题。
在排查和修复中断问题时,可以检查中断向量表和中断服务程序的正确性。
还可以逐个排查外部中断源是否正常工作,以确保正确触发中断并及时处理。
5. 状态机的设计与调试在单片机程序中,状态机常用于描述复杂的系统行为。
状态机相关的bug可能导致状态转换错误或系统无法恢复。
为了分析和修复状态机问题,可以通过绘制状态转换图或使用状态转换表来更好地理解系统行为。
同时,使用断点调试和仿真工具来观察状态机的状态转换和变量值变化,以找到问题并进行修复。
6. 输入输出问题的分析和修复输入输出问题是单片机系统中常见的bug类型,可能导致设备无法正确响应输入或输出信号。
汇编语言程序常见错误分析
根据上表所反映的情况,笔者作了如下数据统计及分析:1、能正常登录的网站注249个,占调查总体样本容量的68.06%,不能登录的占31.94%,说明甘肃旅游网站的硬件建设依然存在较多问题,或者网站的所有方申请了域名后由于某种原因而放弃了其使用权。
2、在能统计出网站设计建设方的29个网站中,企业/组织自主开发的网站4个,占13.79%;委托其他企业/组织开发的网站25个,占86.21%。
说明甘肃旅游企业或组织缺乏技术,自主开发能力低。
3、能正常登录且能统计主页栏目数网站(45个)的主页栏目数平均值为9.71,这在一定程度上反映出甘肃旅游网站内容较为单一,这可能也是影响浏览量的一个因素。
4、有外文(含中文繁体)版注3网页的网站14个,占能正常登录的网站总数的28.57%,没有建设外文网业的比重较大(71.43%)。
说明甘肃旅游企业/组织的对外意识淡薄。
由于语言障碍,致使甘肃数量众多的优质旅游资源不能直接通过网络来吸引更多的国外游客,这也在一定程度上影响了国际客源地市场的来甘旅游量。
5、有在线预定(包括酒店、机/车票、线路预定等)功能的网站29个,占能正常登录网站总数的59.18%。
说明甘肃旅游企业/组织已经具备了在线交易的意识。
有在线支付功能的网站4个,占有在线预定功能网站总数的13.79%。
说明甘肃旅游网站实际能进行在线交易的很少,绝大部分只是简单的介绍旅游知识和旅游线路等,以信息公布为主要内容,对实现供需双方网上信息即时交换和网上交易等功能不全,不能真正发挥出电子商务网站的作用。
甘肃旅游电子商务仍处于较低发展层次。
6、值得一提的是,兰州雁滩宾馆的网站(yantanhotel.com),只有英文版,而没有中文版,链接的全是外国酒店,且与本酒店经营业务毫无联系。
白银区旅游网(byqtour.com)、崇信旅游网(chongxintour.com)的页面全是英文而无中文,且与旅游毫无联系。
打开甘肃旅游(xoxo113.8u8.com)网站,看到的却是推荐网民注册免费邮箱的信息。
单片机汇编语言错误分析与避免方法
0 引 言
对汇编语言编程来 说 , 片机 内甚至 系统 的硬件 单 资源是完全透明的 , 汇编语 言与指令码 的一一对应性 , 使得任何具有物理或实名地址 的硬件单元都 可 以直接
被 调 用 , 现 出 该 种语 言 的 高效 性 。 体
但是 , 汇编语 言 也有 明显 的不 足之 处 , 主要 有 三 点: 第一 , 必须清晰 明了单片 机的硬 件结构 , 这对一 部
错。 例如使用 CR( I 伪指令 全 。
对于没有使 用操作 系统 的嵌 入式 系统 , 程序初 始
化 部 分 是 非 常 重 要 的 , 堆 栈 指 针 的 重 新 赋 值 到 中 断 从 管 理 寄 存 器 的 设 置 , 参 数 的建 立 到 定 时 器 和 串 口的 从
江西电力职业技术学 院学报
第2 2卷
序段 时 , I 再 加 1变 为 0 H, 需 要 再 循 环 10 CR B 就 0H (5 ) , 不只循 环 l 26 次 而 0次 ,I CR单元 中的计数值才能 重新 回到 0 H, 结果就 可想而知 了。 A 其
序 中使用计数变量都 是常有 的事 。有时人们会直接将 中断服务程序 中使用 的 变量用 到主程 序 ( 子程 序 ) 或
关键词 : 汇编语言; 编程; 错误分析; 避免方法
中 图分 类号 :P 1 T 33
文献标 识码 : B
文章编 号 : 7 — 07 2 1)2 04 — 3 1 3 09 (00 0 — 0 7 0 6
值是否达到要求 。 当然 , 并不是每个 R M 区单元 都要 初始 化赋值 , A 存储运算结果 、 写缓 冲 和显示缓 冲 区, 读/ 都是在 程序
中, CN N ,D T R L 或 “ J E A, I E T 用“ J ER # A A, E ” C N DR C . R L 之类 指令 与各 自的到限值 D T E” A A或 A进行 比较 , 殊 不 知 这 样做 是很 不 可 靠 的 。 由于中断响应 的随机性 , 其断点是无 法预料 的, 如 果在主程序或子程 序执行一 个耗时 的循 环操作 ( 如写 非易失性存储 器或键 盘扫描 等) 或循环 延时 的过程 中 发生 了一次 以上 的定 时器 中断 , 就很 有可能在 程序流 程循环 一次的过程 中 , 中断服务 程序 中的计 数值 已 使 经变化 了两次或更 多次 , 其结果 造成预期 的控 制操作 没有被执行 。
汇编语言常见错误信息解释
汇编程序在对源程序的汇编过程中,若检查出某语句有语法错误,随时在屏幕上给出出错信息.如操作人员指定的列表文件名(即.LST),汇编程序亦将在列表文件中出错的下面给出出错信息,以便操作人员即时查找错误,给予更正.MASM5.0出错信息格式如下:源程序文件行:WARNING/ERROR错误信息码:错误描述信息其中,错误描述信息码由五个字符组成,第一个是字母A,表示汇编语言程序出错;接着有一个数字指明出错类别:'2'为严重错误,'4'为严肃警告,'5'为建议性警告,最后三位为错误编号.错误编号错误描述Block nesting error嵌套出错.嵌套的过程,段,结构,宏指令或重复块等非正常结束.例如在嵌套语句中有外层的结束语句,而无内层的结束语局1Extra characters on line一语句行有多余字符,可能是语句中给出的参数太多2Internal error-Register already defined这是一个内部错误.如出现该错误,请记下发生错误的条件,并使用Product Assistance Request 表与Microsoft 公司联系3Unkown type specifer未知的类型说明符.例如类型字符拼错,把BYTE写成BIT,NEAR写成NAER等4Redefinition of symbol符号重定义.同一标识符在两个位置上定义.在汇编第一遍扫描时,在这个标识符的第二个定义位置上给出这个错误5Symbol is multidefined符号多重定义.同一标识符在两个位置上定义.在汇编第二遍扫描时,每当遇到这个标识符都给出这个错误6Phase error between passes两次扫描间的遍错.一个标号在二次扫描时得到不同的地址值,就会给出这种错误.若在启动MAS M时使用/D 任选项,产生第一遍扫描的列表文件,它可帮助你查找这种错误7Already had ELSE clause已有ELSE语句.在一个条件块里使用多于一个的ELSE语句8Must be in conditional block没有在条件块里.通常是有ENDIF或ELSE语句,而无IF 语句9Symbol not defined符号未定义,在程序中引用了未定义的标识符10Syntax error语法错误.不是汇编程序所能识别的一个语句11Type illegal in context指定非法类型.例如对一个过程指定BYTE类型,而不是NEAR或FAR12Group name must be unique组名应是唯一的.作为组名的符号作为其他符号使用13Must be declared during pass 1必须在第一遍扫描期间定义.在第一遍扫描期间,如一个符号在未定义前就引用,就会出现这种错误.14Illegal public declaration一个标识符被非法的指定为PUBLIC类型15Symbol already defferent kind重新定义一个符号为不同种类符号.例如一个段名重新被当作变量名定义使用16Reserved word used as symbol把汇编语言规定的保留字作标识符使用17Forward reference illegal非法的向前引用.在第一遍扫描期间,引用一个未定义符号.18Operand must be register操作数位置上应是寄存器,但出现了标识符19Wrong type of register使用寄存器出错20Operand must be segment or group应该给出一个段名或组名.例如ASSUME语句中应为某段寄存器和指定一个段名或组名,而不应是别的标号或变量名等21Symbol has no segment不知道标识符的段属性22Operand must be type specifier操作数应给出类型说明,如NEAR,FAR,BYTE等23Symbol alread defined locally以被指定为内部的标识符,企图在EXTRN语句中又定义外部标识24Segment paraneters are changed段参数被改变.如同一标识符定义在不同段内25Improper align/combin type段定义时的定位类型/组合类型使用出错26Reference to multidefined symbol指令引用了多重定义的标识符27Operand expected需要一个操作数,只有操作符28Operator expected需要一个操作符,但只有操作数29Divdsion by 0 or overflow除以0或溢出30Negative shift count运算符SHL或SHR的移位表达式值为负数31Operand type must match操作数类型不匹配.双操作数指令的两个操作数长度不一致,一个是字节,一个是字32Illegal use of external外部符号使用出错33Must be record field name应为记录字段名.在记录字段名位置上出现另外的符号34Must be record name or field name应为记录名或记录字段名.在记录名或记录字段名位置上出现另外的符号35Operand must be size应指明操作数的长度(如BYTE,WORD等).通常使用PTR运算即可改正36Must be variable,label,or constant应该是变量名,标号,或常数的位置上出现了其他信息37Must be stucture field name应该为结构字段名.在结构字段名位置上出现了另外的符号38Lefe operand must segment操作数的左边应该是段的信息.如设DA1,DA2均是变量名,下列语句就是错误的:\"MOVAX,DA1:DA2\".DA1位置上应使用某段寄存器名39One operand must constant操作数必须是常数.40Operand must be in same segment or one constant\"—\"运算符用错.例如\"MOV AL,—VAR\",其中VAR是变量名,应有一常数参加运算.又如两个不同段的变量名相减出错41Normal type operand expected要求给出一个正常的操作数.42Constant expected要求给出一个常数.43Operand must have segment运算符SEG用错.44Must be associated with data在必须与数据段有关的位置上出现了代码段有关的项45Must be associated with code在必须与代码段有关的位置上出现了数据段有关的项46Multiple base registers同时使用了多个基址寄存器.如\"MOV AX ,[SI][BP]\"47Multiple index registers同时使用了多个变址寄存器.如\"MOV AX ,[SI][DI]\"48Must be index or base register指令仅要求使用基址寄存器或变址寄存器,而不能使用其他寄存器.49Illegal use of register非法使用寄存器出错50Value is out of range数值太大,超过允许值.例如:\"MOV AL ,100H\"51Operand not in current CS ASSUME segment操作数不在当前代码段内.通常指转移指令的目标地址不在当前CS段内52Improper operand type操作数类型使用不当.例如:\"MOV VAR1,VAR2\".两个操作数均为存储器操作数,不能汇编出目标代码53Jump out of range by %ld byte条件转移指令跳转范围超过-128~ 127个字节.出错厂,信息同时给出超过的字节数54Index displacement must be constant变址寻址的位移量必须是常数55Illegal register value非法的寄存器值.目标代码中表达寄存器的值超过756Immediate mode illegal不允许使用立即数寻址.例如\"MOV DS,CODE\"其中CODE是段名,不能把段名作为立即数传送给段寄存器DS57Illegal size for operand使用操作数大小(字节数)出错.例如:使用双字的存储器操作数58Byte register illegal要求用字寄存器的指令使用了字节寄存器.如PUSH,POP指令的操作数寄存器必须是字寄存器59Illegal uer of CS register指令中错误使用了段寄存器CS.如:\"MOV CS,AX\"CS不能做目的操作数60Must be accumulator register要求用AX或AL的位置上使用可其他寄存器.如IN,OUT指令必须使用累加器AX或AL61Improper uer of segment register不允许使用段寄存器的位置上使用了段寄存器.如\"SHL DS,1\"62Missing or unreachable CS试图跳转去执行一个CS达不到的标号.通常是指缺少ASSUME语句中CS与代码段相关联63Operand combination illegal双操作数指令中两个操作数组合出错64Near JMP/CALL to different CS试图用NEAR属性的转移指令跳转到不在当前段的一个地址65Label cannot have segment override段前缀使用出错66Must have instuction agter prefix在重复前缀REP,REPE,REPNE后面必须有指令67Cannot override ES for destination串操作指令中目的操作数不能用其他段寄存器替代ES68Cannot address with srgment register指令中寻找一个操作数,但ASSUME语句中未指明哪个段寄存器与该操作数所在段有关联69Must be in segment block指令语句没有在段内70Cannot use EVEN or ALIGN with byte alignment在段定义伪指令的定位类型中选用BYTE,这时不能使用EVEN或ALIGN伪指令71Forward needs override or FAR转移指令的目标没有在源程序中说明为FAR属性,可用PTR指定72Illegal value for DUP count操作符DUP前的重复次数是非法的或未定义73Symbol id already external在模块内试图定义的符号,它已在外部符号伪指令中说明74DUP nesting too deep操作数DUP的嵌套太深75Illegak use of undefinde operand( )不定操作符\" \"使用不当.例如\"DB 10H DUP( 2)\"76Too many valer for struc or record initialization在定义结构变量或记录变量时,初始值太多77Angle brackets requored around initialized list定义结构体变量时,初始值未用尖括号()括起来78Directive illegal structure在结构体定义中的伪指令使用不当.结构定义中的伪指令语句仅二种:分号(;)开始的注释语句和用DB,DW等数据定义伪指令语句79Override with DUP illegal在结构变量初始值表中使用DUP操作符出错Field cannot be overridden在定义结构变量语句中试图对一个不允许修改的字段设置初值81Override id of wrong type在定义结构变量语句中设置初值时类型出错82Circular chain of EQU aliases用等值语句定义的符号名,最后又返回指向它自己.如:A EQU BB EQU A83Cannot emulate cooprocessor opcode 仿真器不能支持的8087协处理器操作码84End of file,not END directive 源程序文件无END文件85Data emitted with no segment 语句数据没有在段内汇编语言程序设计1.在MASM编译时产生警告错误“Operand types must match”能够忽略吗?答:不能,如语句:MOV AL, BX就会产生上述错误信息,原因是AL和BX两个操作数的字长不匹配。
汇编错误原因
Illegal register value
指定的寄存器值不能放入“reg”字段中
56
No immediate mode
指定的立即方式或操作码都不能接收立即数
57
Illegal size for item
引用的项长度是非法的
58
Byte register is illegal
在上下文中,使用一个字节寄存器是非法的
汇编内部出现逻辑错误。
3
Unknown symbol type
符号语句的类型字段中有些不能识别的东西。
4
Redefinition of symbol
在第二遍扫视时,连续地定义了一个符号。
5
Symbol is multi-defined
重复定义一个符号。
6
Phase error between passes
84
Feature not supported be the small Assembler(ASM)
符号没有定义
10
Syntax error
语句的语法与任何可识别的语法不匹配
11
Type illegal in context
指定的类型在长度上不可接收
12
Should have been group name
给出的组名不符合要求
13
Must be declared in pass 1
得到的不是汇编程序所要求的常数值,例如:向前引用的长度
由于操作数不在当前IP段中,因此不能存取
52
Improper operand type
使用的操作数不能产生操作码
53
Relative jump out range
单片机实验遇到的问题和解决方法
单片机实验遇到的问题和解决方法1. 引言在进行单片机实验时,经常会遇到各种问题。
这些问题可能包括电路设计错误、程序编写错误、传感器连接问题等。
本文将深入探讨单片机实验中常见的问题,并提供解决方法和建议。
2. 电路设计错误在进行单片机实验时,电路设计错误是常见的问题之一。
这些错误可能包括电源电压不稳定、电阻或电容值选择错误等。
解决这些问题的方法有以下几点:2.1 检查电路图:仔细检查电路图,确保电路连接正确,各个元件符合规格要求。
2.2 检查电源电压:使用万用表或示波器测量电源电压,确保电压稳定在要求范围内。
若发现电压不稳定,可以考虑更换电源或添加稳压电路。
2.3 检查元件数值:核对电阻、电容等元件数值是否与电路图一致。
确保元件数值选择正确,以保证电路正常工作。
3. 程序编写错误在单片机实验中,程序编写错误是常见的问题。
这些错误可能包括语法错误、逻辑错误等。
解决这些问题的方法有以下几点:3.1 仔细阅读编译器报错信息:当程序编译出错时,仔细阅读编译器报错信息,根据报错信息来定位问题所在,并按照报错信息的建议进行修改。
3.2 打印调试信息:在程序的关键位置加入打印调试信息的语句,以便观察程序执行过程中的变量值、状态等。
通过观察打印信息,可以快速定位问题所在。
3.3 逐步调试:将程序分段调试,逐步排查问题。
可以使用单步执行、断点调试等工具来辅助调试。
分步调试可以帮助我们发现程序中隐藏的逻辑错误。
4. 传感器连接问题在使用传感器进行单片机实验时,传感器连接问题是常见的问题。
这些问题可能包括引脚连接错误、传感器供电不足等。
解决这些问题的方法有以下几点:4.1 核对传感器连接:核对传感器引脚连接是否正确。
可以参考传感器技术手册或相关资料来确定引脚连接方式。
4.2 检查供电电压:确保传感器供电电压符合要求。
有些传感器需要稳压电源才能正常工作,若供电电压不足可能导致传感器输出不准确或无法正常工作。
4.3 使用示波器观察信号:使用示波器观察传感器输出信号波形,以确定传感器是否正常工作。
单片机常见错误例程分析
单片机常见错误例程分析在单片机编程过程中,程序员常常会遇到各种错误情况,这些错误可能会导致单片机无法正常工作,或者功能无法实现。
以下是一些常见错误例程的分析及解决办法:1.逻辑错误逻辑错误是程序中常见的错误类型,它们通常是由于程序员在编写代码时逻辑思维上的错误导致的。
例如,当程序出现逻辑错误时,可能会导致程序无法按照预期的方式执行。
解决逻辑错误的关键是仔细检查代码,查找问题所在,并对错误逻辑进行修正。
2.语法错误语法错误是指在编写代码时违反了编程语言的语法规则。
这种错误通常会导致编译失败,编译器会提示相关的错误信息。
解决语法错误的方法是仔细检查代码,查找错误的语法并进行修正。
使用集成开发环境(IDE)可以更容易地发现语法错误,因为IDE通常会提供语法高亮和错误提示功能。
3.数组越界错误数组越界错误发生在访问数组元素时超出数组的索引范围。
这种错误可能会导致程序崩溃或产生未知的结果。
解决数组越界错误的方法是仔细检查代码,确保在访问数组元素时索引的范围在合法的范围内。
4.执行顺序错误执行顺序错误是指程序中的语句不按照预期的执行顺序执行。
这可能会导致程序的功能无法正常实现。
解决执行顺序错误的方法是仔细检查代码,确保语句的执行顺序符合预期。
此外,使用调试器可以帮助程序员跟踪代码的执行过程,以便发现执行顺序错误。
5.死循环错误死循环错误是指程序中的循环结构无法终止,导致程序无法继续执行后续的代码。
这可能会导致单片机无响应或无法进行其他操作。
解决死循环错误的方法是仔细检查循环条件是否正确,并在必要时添加循环终止条件。
6.硬件连接错误硬件连接错误是指单片机与外部设备之间的连接错误,例如接线错误或电源供应错误。
这可能会导致单片机无法正常工作。
解决硬件连接错误的方法是仔细检查硬件连接,确保电源供应正常,并确保所有连接线正确连接。
总结在单片机编程过程中,常见的错误类型包括逻辑错误、语法错误、数组越界错误、执行顺序错误、死循环错误和硬件连接错误。
单片机开发中常见的错误与解决方案
单片机开发中常见的错误与解决方案在单片机开发过程中,由于各种原因可能发生各种错误和问题。
本文将介绍一些常见的错误,并提供相应的解决方案,以帮助开发者顺利进行单片机开发。
一、编译错误与解决方案编译错误是在编写代码时常遇到的问题。
它们通常指出了源代码中的错误,可以通过观察和排查代码来解决。
(1)语法错误:语法错误是最常见的编译错误之一。
常见的语法错误包括括号不匹配、忘记分号等。
解决方案是仔细检查代码,确保语法正确。
(2)类型错误:类型错误指的是变量或函数的类型不匹配。
例如,将一个整数赋给一个字符型变量。
解决方案是检查代码中的类型定义,并确保变量和函数的类型匹配。
(3)链接错误:链接错误是指在最终生成可执行文件时出现的问题。
常见的链接错误包括找不到库文件、重复定义等。
解决方案是检查库文件路径是否正确,并确保函数和变量只被定义一次。
二、硬件问题与解决方案单片机开发中,硬件问题是不可避免的。
当出现硬件问题时,开发者需要仔细检查电路连接、电源供应等方面,以解决问题。
(1)电路连接错误:电路连接错误通常是由于接线错误或电路板设计问题引起的。
开发者应该仔细检查电路连接,确保连接正确并无短路或断路现象。
(2)电源问题:电源问题可能导致单片机不能正常工作或产生不稳定的现象。
开发者应该检查电源供应是否稳定,并合理设计供电电路。
(3)时钟设置错误:单片机的时钟设置影响其运行速度和精度。
开发者应该仔细设置单片机的时钟参数,并确保其与外部时钟源一致。
三、软件问题与解决方案在单片机开发中,软件问题是常见的。
这些问题可能涉及底层驱动程序、中断处理、算法等方面。
(1)驱动程序错误:驱动程序错误可能导致外设无法正常工作或产生异常数据。
开发者应该仔细编写和调试驱动程序,并确保其与硬件相匹配。
(2)中断处理错误:中断是单片机常用的一种机制,但不正确的中断处理可能导致系统崩溃或响应不及时。
开发者应该仔细设计和调试中断服务程序,并确保处理逻辑正确。
单片机指令编程的常见错误与解决方法
单片机指令编程的常见错误与解决方法在单片机指令编程过程中,往往会遇到各种问题和错误。
这些问题可能导致程序无法正常运行或者出现意料之外的结果。
本文将介绍一些常见的错误,以及相应的解决方法,帮助程序员更好地进行单片机指令编程。
一、编码错误编码错误是指在编写指令时出现的错误,包括语法错误和逻辑错误。
语法错误是最基本的错误,常见的有拼写错误、缺少分号等。
逻辑错误则是指程序的逻辑不正确,导致程序无法按照预期的方式执行。
解决方法:1. 仔细检查代码,查找并修复语法错误。
2. 使用调试工具,逐步执行代码,观察程序的执行过程,找出逻辑错误的根源。
3. 采用模块化编程方法,将程序划分为多个相对独立的模块,降低程序的复杂性,便于调试和维护。
二、寄存器配置错误单片机中的寄存器是非常重要的,它们用来存储程序的运行状态和数据。
配置寄存器时,如果设置不正确,可能导致程序无法正常运行。
解决方法:1. 仔细查阅单片机的手册或者数据手册,确保对寄存器的配置有充分的了解。
2. 逐个检查寄存器的配置,确保每个寄存器的值都正确设置。
3. 使用调试工具,观察寄存器的状态,排除配置错误的可能性。
三、时钟设置错误单片机的时钟是程序运行的基础,对于某些需要实时操作的程序尤为重要。
时钟设置错误可能导致程序时序不正确,无法正常执行。
解决方法:1. 确保时钟源的选择正确,并选择合适的分频系数。
2. 配置好时钟控制寄存器,确保时钟的频率满足程序运行的要求。
3. 使用专业的时钟分析工具,对时钟信号进行分析和调试,确保时钟信号的准确性和稳定性。
四、中断处理错误中断是单片机的重要功能,可以实现对外部事件的响应。
如果中断处理错误,可能导致程序的执行流程混乱,无法正常处理中断事件。
解决方法:1. 确保中断向量表的设置正确,每个中断向量都与对应的中断服务程序相对应。
2. 配置中断控制器,使能或禁止某些中断,确保中断的优先级设置正确。
3. 定期检查中断服务程序的正确性,确保程序在中断发生时能够正确响应。
汇编语言中常见的错误
汇编语言中常见的错误汇编语言中常见的错误(1)Block nesting error 块嵌套错误嵌套的过程、段、结构、宏定义、重复块定义等不恰当地结束。
(2)Extra characters on line 语句行上有额外字符当在语句行上接收到定义指令、命令语句的足够信息时,还有其它多余字符。
(3)Unknow symbol type.不认识的符号类型符号语句,在类型字段内有不能识别的符号。
(4)Symbol is multi-defined.重复定义符号符号在标号域中出现两次以上。
(5)bymbol not defined.符号未定义操作数域或操作码域引用了未在标号域中出现过的标号。
(6)Phase error between passes.两次扫描中间的步骤错程序中有二义性的指令语句。
(7)Symbol type usage illegal.符号类型用法错使用PUBLIC语句中的符号用法错。
(8)Symbol is reserved word.符号是保留字非法地使用了汇编程序的保留字。
(9)Division by 0 or overflow.除法被0除或溢出在除法指令语句中,除数为0或商超出允许范围。
(10)Operand type must match.操作数类型必须匹配在要求操作数必须匹配的情况下.汇编程序得到了参量不同的类型和大小。
(11)Value is out of range. 值超出范围所使用的数值超出了使用范围。
(12)Relative jump out range. 相对转移超出范围相对转移超出了当前指令的范围(一128一127个字节)。
(13)No or unreachable CS. 没有或不能达到CS企图转移至不可达到的标号。
(14)Operand expected.希望有操作数语句中没有操作数。
汇编语言常见错误分析
汇编语言常见错误分析施志刚(南通航运职业技术学院信息系,江苏南通226010)摘要:本文通过具体实例分析了汇编语言程序设计过程中的若干常见错误,包括语法错误和程序设计上的逻辑错误,旨在帮助读者在程序设计时能够避免本文提出的错误。
关键词:分析;汇编语言;语法错误;逻辑错误Conmmon Errors Analysis In Assembly LanguageShizh igan g(IT Department, Nantong Vocational & Technical Shipping College, Nantong Jiangsu226010)Abstract:This article analysised conmmon errors in assembly language programming process through the concrete examples,including grammer errors and logic errors in programming,aimed at helping readers to prevent from the errors that this article refered to in programming.Key words: analysis; assembly language; grammer errors; logic errors0 引言汇编语言是计算机能够提供给用户使用的最快而又最有效的语言,也是能够利用计算机所有硬件特性并能直接控制硬件的惟一语言。
因而对程序的空间和时间要求很高的场合,汇编语言的应用是必不可少的。
至于很多需要直接控制硬件的应用场合,则更是非用汇编语言不可了。
作为计算机专业及相关学科一门重要的基础课程,其重要性不言而喻。
但是对于众多初学汇编语言的人来说,都普遍感到较难且不易理解和掌握,难以入门,看着有错的程序,更是不知从何改起,本人在汇编语言的教学过程中积累并总结了一些这方面的经验,以供各位读者借鉴和参考。
单片机汇编语言常见错误知识点分析
单片机汇编语言常见错误知识点分析
汇编语言是计算机能够提供给用户使用的最快而又最有效的语言,也是能够利用计算机所有硬件特性并能直接控制硬件的惟一语言。
因而对程序的空间和时间要求很高的场合,汇编语言的应用是必不可少的。
至于很多需要直接控制硬件的应用场合,则更是非用汇编语言不可了。
作为计算机专业及相关学科一门重要的基础课程,其重要性不言而喻。
但是对于众多初学汇编语言的人来说,都普遍感到较难且不易理解和掌握,难以入门,看着有错的程序,更是不知从何改起,本文主要介绍的就是单片机汇编语言常见错误知识点分析,具体的跟随小编来了解一下。
单片机汇编语言常见错误知识点分析一、MAS51汇编软件汇编失败原因分析
单片机的汇编语言编写时要注意一定的语法,详细介绍可以参考相关参考书,语法错误汇会造成汇编失败,常见的汇编错误如下:
1、标号重复常见于复制、粘贴程序时忘记修改标号,造成出现多个相同的标号,标号是不允许重复的。
2、标点符号以全角方式输入MAS51程序要求标点符号为半角方式,否则汇编失败。
可以在输入:,;时切换到半角方式,或者在大写状态输入标点符号,这也是很容易犯而且不容易发觉的错误。
3、注释太长有时为了以后读懂程序,写了很长的注释,站长发现超过20个汉子时也会造成汇编失败,解决办法可以将太长的注释分成多个注释。
4、数值#FFH 前遗漏0,根据要求应该在a~f前加0,写成#0FFH
5、字母O和数字0搞混有时候这两个字看上去完全相同,要注意哦
6、标号后边遗漏“:”
7、标号使用了特殊字符,比如:T1、T2、A、B这些字符有特定的含义,不允许用于标号。
单片机C语言编程的常见问题分析
单片机C语言编程的常见问题分析单片机C语言编程是嵌入式开发中常见的技能,对于初学者来说可能会遇到一些常见问题。
本文将针对单片机C语言编程中常见的问题进行分析,希望能为初学者提供一些帮助。
一、编译错误在进行单片机C语言编程时,常常会遇到编译错误。
编译错误可能是由于语法错误、拼写错误、缺少头文件、函数引用错误等原因导致的。
如果遇到编译错误,首先需要仔细检查代码,确认是否存在语法错误、拼写错误等。
可以通过查看编译器的错误提示,找出具体的错误信息,并尝试根据错误信息进行修正。
还可以通过查阅相关的资料和文档,寻找解决方案。
三、内存管理问题在单片机C语言编程中,内存管理是一个常见的问题。
在编写程序时,需要合理地进行内存分配和释放,防止出现内存泄漏、野指针等问题。
为了避免内存管理问题,可以采用静态分配内存和动态分配内存相结合的方式,避免频繁地进行内存分配和释放。
还可以通过使用内存检测工具、内存泄漏检测工具等方式,来检测程序中可能存在的内存管理问题,并进行修正。
四、性能优化问题在单片机C语言编程中,性能优化是一个重要的问题。
由于单片机的资源有限,需要通过对程序进行优化,来提升程序的性能和响应速度。
为了进行性能优化,可以采用一些技术手段,如减少循环次数、优化算法、减少内存占用等。
还可以通过使用性能分析工具、代码剖析工具等方式,来分析程序的性能瓶颈,并进行相应的优化。
五、硬件适配问题在单片机C语言编程中,硬件适配是一个常见的问题。
单片机的硬件特性各不相同,需要根据具体的硬件平台进行适当的适配。
为了解决硬件适配问题,可以查阅相关的硬件手册、数据手册,了解硬件平台的特性和规格。
还可以通过使用硬件仿真工具、硬件调试工具等方式,来进行硬件适配和调试。
单片机C语言编程中常见的问题包括编译错误、运行错误、内存管理问题、性能优化问题、硬件适配问题等。
针对这些问题,可以通过仔细检查代码、添加调试信息、使用调试工具、查阅相关资料等方式,来进行分析和解决。
汇编语言一些常见错误
汇编语言一些常见错误汇编语言是一种低级语言,它直接操作计算机的硬件和指令集。
在编写汇编语言程序时,我们需要特别注意一些常见的错误,以确保程序的正确性和可靠性。
本文将介绍一些常见的汇编语言错误及其解决方法,帮助读者避免在编程过程中犯下这些错误。
1. 语法错误语法错误是编程过程中最常见的错误之一。
在编写汇编语言程序时,我们需要遵循特定的语法规则,包括正确使用指令、标签、寄存器等。
如果违反了这些语法规则,编译器将无法正确解析代码,并报告错误。
为了避免语法错误,我们应该熟悉所使用的汇编语言的语法规则,并进行仔细的代码检查和测试。
2. 寄存器使用错误在汇编语言中,寄存器是一种特殊的内存单元,用于存储临时数据和操作数。
常见的寄存器包括通用寄存器(如AX、BX、CX)和特殊寄存器(如标志寄存器FLAGS)。
错误地使用寄存器可能导致数据错误或程序崩溃。
为了正确使用寄存器,我们需要了解每个寄存器的作用和限制,并在程序中遵循相应的规则。
3. 内存管理错误汇编语言中的内存管理是程序正确性的关键。
错误地分配、释放内存或访问无效内存区域可能导致程序崩溃或数据损坏。
为了避免内存管理错误,我们应该使用适当的指令来申请和释放内存,并确保内存的正确使用和访问。
4. 指令使用错误汇编语言中的指令是程序的基本执行单元。
有时候,我们可能会错误地选择或使用指令,导致程序无法正常运行或产生错误结果。
为了避免这种错误,我们应该详细学习和理解所使用的指令集,并仔细选择和使用指令。
5. 程序逻辑错误在编写汇编语言程序时,我们需要详细计划和设计程序的逻辑结构。
不正确的程序逻辑可能导致程序运行错误或无法达到预期的结果。
为了避免程序逻辑错误,我们应该进行仔细的逻辑分析和设计,并进行充分的测试和调试。
6. 代码优化错误在优化汇编语言程序时,我们需要注意避免一些常见的代码优化错误。
例如,优化过度可能导致代码难以理解和维护,而优化未到位可能导致程序性能下降。
单片机C语言编程的常见问题分析
单片机C语言编程的常见问题分析单片机C语言编程是一种广泛应用于嵌入式系统中的编程语言,常用于控制和处理外部设备。
在学习和实践中,经常会遇到一些常见的问题,下面将对这些问题进行分析。
1. 编译错误:在编写代码时,常常会因为语法错误或者拼写错误导致编译失败。
使用单片机C语言编程时,需要特别注意C语言的语法规则,如变量的声明与使用、函数的定义与调用等。
还要注意标点符号的使用和命名规范等方面。
对于编译错误,可以通过仔细检查代码、查看编译器的错误提示以及参考编程手册等方式来解决。
2. 运行错误:在完成编译后,可能会出现一些运行时的错误。
这种错误可能是由于逻辑错误、计算错误、内存溢出等原因引起的。
解决这些问题需要仔细检查代码的逻辑、使用调试工具进行调试和查看变量的值等。
还可以通过添加断言语句、使用日志输出等方式来定位和解决问题。
3. 程序崩溃:在一些情况下,程序可能会崩溃或者死循环。
这种问题可能是由于程序中存在死循环、内存泄漏、栈溢出等问题引起的。
解决这类问题需要进行逐步调试和排查,定位具体的问题所在,并采取相应的措施进行修复。
4. 外设操作问题:在使用单片机时,经常需要与各种外部设备进行交互,如LED、LCD、键盘、ADC等。
在进行外设操作时,可能会遇到一些问题,如无法正确控制外设、无法读取外设数据、数据异常等。
解决这些问题需要仔细查看外设的相关文档,了解其控制和操作方式,并严格按照规定进行使用。
5. 中断处理问题:单片机常常需要使用中断来响应外部事件,如定时器中断、外部中断等。
在使用中断时,可能会出现一些问题,如中断无法触发、中断处理程序无法正常执行等。
解决这类问题需要仔细检查中断的设置和配置,确保中断使能、优先级等相关参数设置正确,同时要注意中断处理程序的编写和调用方式。
单片机C语言编程时常遇到的问题主要包括编译错误、运行错误、程序崩溃、外设操作问题和中断处理问题等。
解决这些问题的关键在于仔细检查代码、使用调试工具、查阅手册和文档以及进行逐步排查和调试。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机汇编语言常见错误分析
一、汇编软件汇编失败原因分析:
这里采用Keil C51 软件包中的宏汇编器A51 作为编绎器,单片机的汇编语言编写时要注意一定的语法,详细介绍可以参考相关参考书,语法错误会造成
汇编失败,常见的汇编错误如下:1. 标号重复:常见于复制、粘贴程序时忘
记修改标号,造成出现多个相同的标号,标号是不允许重复的。
2.标点符号
以全角方式输入:汇编程序要求标点符号为半角方式,否则汇编失败。
可以
在输入:,;时切换到半角方式,或者在大写状态输入标点符号,这也是很容易
犯而且不容易发觉的错误。
3.数值#FFH 前遗漏0:根据要求应该在a~f 前加0,写成#0FFH4.字母O 和数字0 搞混:有时候这两个字看上去完全相同,要注意哦~~5.标号后边遗漏”:”6.标号使用了特殊字符:标号不能用指令
助记符、伪指令、特殊功能寄存器名和8051 在指令系统中用的“#”、“@”等,长
度以2~6 字符为宜,第一字母必须是英文字母。
比如:T1、T2、A、B 这些字
符有特定的含义,不允许用于标号。
7.AJMP 跳转超过2K 地址:AJMP 属于短跳转命令,有2K 地址范围的限制。
8.超过地址范围:JB P3.2,EXIT 跳转超过-128~127 个地址范围。
这个是最容易出现的错误!你有可能程序刚才还
能汇编编译成功,你加了一段程序后程序就提示出错了,你可以把JB
P3.2,EXIT 转换成JNB P3.2,LD01AJMP EXITLD01: AJMP EXIT……9.字母I 和数字1 混淆:冒失鬼的常见问题。
10.创造发明不存在的汇编语言指令:在编写程序程序的过程中可不欢迎这种创新,这种指令汇编程序不支持,芯片也不
认可。
11.符号“:”“;”最好用半角书写。
二、程序出错:
1.寄存器重复调用:比如主程序中设定了R4=5,表示主程序循环执行5 次,。