还剩17页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
单片机原理及应用课件陈林林第章汇编语言4程序设计基础汇编语言是连接机器语言和高级语言之间的桥梁本章将介绍汇编语言的基本概念、指令集、数据寻址方式、运算指令、寄存器等知识,帮助大家更好地理解和使用汇编语言汇编语言的概念和特点什么是汇编语言?汇编语言是一种低级语言,与机器语言十分接近,但是相对于机器语言而言,汇编语言更容易理解和编写它主要由众多的助记符号(指令码的助记符号)组成,可以用来编写底层程序为什么要学习汇编语言?了解汇编语言的概念和特点可以更好地理解计算机的底层原理,提高代码执行效率,准确地读懂汇编语言程序的意义和功能,避免出现程序漏洞,提高个人技术水平汇编语言的特点是什么?汇编语言与机器语言非常接近,可以直接操控硬件;汇编程序的执行效率很高,适合对时间
1.
2.要求较高的嵌入式系统;编写汇编程序需要灵活地使用各种操作指令,涉及底层硬件实现,有
3.一定难度汇编程序的开发流程确定要解决的问题1明确自己需要用汇编语言来解决什么问题,针对性地设计程序制定算法和逻辑细节2制定汇编程序的算法和具体实现细节,思考严谨,并考虑到系统的各种限制条撰写代码3件编写汇编代码,注意结构清晰、格式规调试和优化范、语法正确4调试程序,修复错误,优化代码,使程序性能更加出色常见的汇编指令集数据传送指令算术运算指令逻辑运算指令、、等指令、、、等指、、、等指令MOV PUSH POP ADD SUB INC DEC ANDOR NOTXOR令有符号数和无符号数的表示方法什么是有符号数?有符号数是指可以表示正数、负数及零的整数在二进制补码表示法中,最高位为符号位,表示正数,表示负数01什么是无符号数?无符号数是指只能表示非负整数的数在二进制补码表示法中,所有的位都是数值位,没有符号位有符号数和无符号数之间如何转换?有符号数和无符号数之间可以通过加上或减去固定系数使之相互转换数据寻址方式数据寻址方式寻址方式说明立即寻址常数指令中直接给出操作数#直接寻址地址操作数在内存中的地址和指令中给出间接寻址地址指令中给出的操作数是所在内@存单元的地址,操作数在该单元中相对寻址偏移地址指令中给出的操作数是当前指令所在位置加上偏移地址得到的内存单元中的内容算术运算指令加减法运算指令乘除法运算指令浮点数运算指令、、、等指、、、等指、、、ADDSUBINCDECMUL IMULDIV IDIVFADD FSUBFDIV FMUL令令等指令逻辑运算指令指令指令1AND2OR操作数按位进行与运算操作数按位进行或运算指令指令3NOT4XOR操作数按位进行非运算操作数按位进行异或运算移位运算指令指令1SHR右移或逻辑右移,移出位丢弃,高位补零,同除以2指令2SAL左移或逻辑左移,低位补零,移出位丢弃,同乘以2指令3SAR右移或算术右移,高位不变,低位移出来,所有位于被除数相反标志位和条件转移指令什么是标志位?标志位是中的一些二进制状态标志位,用于存储运算结果或某些状态信息通常用于CPU判断运算结果的正负、大小或是否为零,以及指令执行过程中的特定状态什么是条件转移指令?条件转移指令是根据标志位或某些特定状态判断是否发生跳转并执行下一条指令,常见的有、、、等指令JZ JNZJC JNC常见的标志位有哪些?溢出标志位,进位标志位,零标志位,符号标志位,奇偶标志位等OF CFZF SFPF循环指令指令1loop执行跳转指令,中的计数器值减,如果结果不为,则执行跳转,跳转相对于LOOP AX10当前指向下面的一条指令指令2loope指令是的表示,它仅当且,执行跳转操作loope LOOPNZZF=1CX≠0指令3loopne指令是的表示,它仅当且,执行跳转操作loopne LOOPZZF=0CX≠0串处理指令指令1CMP比较字符串内容,进行字节或字的逐一比较指令2SCASB扫描指定字符串,查找指定字符,遇到字符后停止指令3MOVS将一个存储区中的内容移动到另一个存储区子程序和过程的概念什么是子程序?什么是过程?如何实现子程序调用?子程序(或称为函数、程序过程(又称子例程过程、函可以通过、和CALL RET段)是一个相对较短、相对数过程)是一种简单的子程等指令来实现子程序调INT独立、重复率高的程序段,序,通常是不带参数,但也用子程序可以递归调用,通常有一个或多个输入参数有的过程带参数也可以是循环调用或顺序嵌和返回值套栈的数据结构什么是栈?如何在代码中使用栈?栈的操作指令有哪些?123栈是一种常用的数据结构,具有后进先出的特点,在汇编程序中,可以使用常见的栈操作指令有“”常常用来解决递归调用、寄存器作为栈顶指针,、、、SP PUSHPOP MOVSP中断和数据存储等问题通过和指令来、和PUSHPOPADD SPSUB SP栈的操作包括进栈实现进栈和出栈操作等XCHG()、出栈PUSH()、取栈顶数据但POP不出栈()TOP通用寄存器和特殊寄存器通用寄存器特殊寄存器标志寄存器、、、等寄存器,、、、等寄存器,主寄存器,用于存储一些标AX BXCX DXCS DSSS ESFLAGS通常用于存储一些临时变量或计要用于存放程序的段地址和栈的志位信息,如进位标志、溢出CF算结果段地址等标志、零标志等OF ZF寄存器的使用方法和注意事项如何使用通用寄存器?通用寄存器可以用来存储临时变量、计算结果或参与运算等,但需要注意寄存器的寄存器如何使用特殊寄存器?特殊寄存器主要用于存放程序的段地址和栈的段地址等,需要根据不同的寄存器来存储相应的数据寄存器使用中需注意的问题有哪些?在使用寄存器时,需要严格按照要求来进行操作,如不得调用已经被占用的寄存器,避免数据冲突等编写简单的汇编程序编写计算一个数的平方的汇编程序1MOV AX,BXMUL AX为什么要学习汇编语言?2学习汇编语言有助于深入理解计算机的底层原理,对编程思维的提升和程序调试和优化有很大的帮助如何学好汇编语言?3可以多看别人的程序,学习计算机组成原理的相关知识,学会如何使用调试器调试程序调试和运行汇编程序如何调试程序?1可以使用汇编语言的调试器来调试程序,查看程序中各个寄存器和变量的值等如何运行汇编程序?2可以使用相应的汇编程序编译器和执行器来运行汇编程序,如、等MASM TASM调试和运行汇编程序需要注意哪些问题?3在调试和运行过程中,需要注意安全性和正确性等问题,如数据冲突、指令执行错误、误操作等实际应用场景中的汇编语言程序设计案例嵌入式系统设计机器人控制系统工业自动化控制嵌入式系统常常需要使用汇编语机器人控制系统需要准确处理传很多自动化控制设备需要采用汇言来编写低层驱动程序以及有关感器和执行机构之间的数据流,编语言编写底层的控制算法和驱硬件平台的程序,如芯片启动、以调整机器人运动轨迹和行为动程序,如、工控机、仪表PLC中断处理、计时定时、电源管理汇编是机器人控制系统中最主要等等的编程语言之一。
个人认证
优秀文档
获得点赞 0