还剩28页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
汇编语言程序格式汇编语言是低级编程语言,它直接使用机器指令,与硬件紧密相连汇编语言程序格式通常包含指令、操作数、标签和注释等元素作者uj uyfvgfxjuyvjhvhkg课程导入欢迎学习汇编语言理解程序运作原理掌握硬件与软件交互本课程将带您深入了解汇编语言,掌握编程学习汇编语言能帮助您理解计算机程序底层汇编语言使您能够直接操作硬件,实现更高基础逻辑,提升编程能力级的功能了解汇编语言
11.低级语言
22.符号指令汇编语言是低级语言,它与机汇编语言使用助记符代替机器器语言紧密相关,是程序员用指令的二进制代码,便于记忆来直接控制计算机硬件的工具和理解,提高了程序的可读性
33.一对一映射
44.硬件依赖性汇编语言中的每一条指令都对汇编语言的指令集与硬件架构应一条机器指令,这使得它能密切相关,不同平台的汇编语够直接控制硬件,执行效率更言不兼容高汇编语言特点低级语言依赖平台代码简洁开发效率低汇编语言是面向机器的低级语不同的处理器架构有不同的汇汇编语言代码通常更短,易于编写汇编程序需要深入了解硬言,直接控制硬件编语言理解件架构它与机器指令一一对应,效率它无法跨平台移植,需要针对它允许直接访问内存地址,实它开发周期长,维护困难,易高特定硬件编写现硬件控制于出错汇编语言编程步骤编写程序代码1使用汇编语言编写源代码,并进行编辑、保存汇编程序2将源代码翻译成机器代码,生成目标文件链接程序3将目标文件与库函数等链接,生成可执行文件运行程序4加载可执行文件到内存,并开始运行程序结构概述数据段代码段存储程序运行所需数据,如变量、包含程序的指令代码,CPU从该常量、字符串等段读取指令并执行栈段附加段用于存储函数调用、局部变量、用于存放程序可能需要的其他信中断处理等所需的临时数据息,如外部数据或代码数据段存储数据内存分配访问方式用于存放程序运行时需要使用的数据例如,数据段在程序加载时由操作系统分配内存空程序可以通过段寄存器和偏移地址访问数据变量、常量、字符串等间,用于存储数据段中的数据代码段
11.指令集合
22.程序逻辑代码段存储汇编语言指令,用代码段定义程序逻辑,指明指于控制计算机执行操作令执行顺序,实现特定功能
33.顺序执行
44.逻辑控制程序在代码段中顺序执行指令,代码段使用条件语句、循环语从第一条指令开始,依次执行句等控制程序执行流程,实现直到结束更复杂的功能栈段栈段的作用栈段的组织栈段用于存储程序运行过程中的局部变量、栈段在内存中向下生长,即新的数据压入函数参数、返回地址等数据它是一种先栈顶,旧的数据在栈底进后出LIFO的数据结构栈段的大小是有限的,如果程序压入栈的当函数调用时,程序会将函数参数和返回数据过多,就会导致栈溢出,造成程序崩地址压入栈中,函数执行完后,再从栈中溃弹出这些数据程序目标地址程序目标地址是指程序在内存中的起始位置编译器或汇编器在将源程序转换为可执行文件时会确定目标地址程序目标地址决定程序在内存中的起始位置程序执行过程操作系统将程序加载到目标地址,并开始执行内存单元组织内存单元内存单元是存储数据的最小单位,通常为8位,称为一个字节内存地址每个内存单元都有唯一的地址,用于访问数据内存组织内存单元以线性地址空间的方式排列,形成连续的地址空间数据表示二进制表示十进制表示计算机使用二进制表示数据,只使用0和1二进制系统是计我们日常使用十进制系统,它使用0到9的数字,并使用位置算的基础,因为它简化了硬件设计值表示数值十六进制表示字符数据表示十六进制使用0到9和A到F的数字,简化了二进制数据的表字符使用ASCII码或Unicode码表示,这些编码将字符映射到示和操作,在编程中经常使用数字,以便计算机存储和处理字符无符号数表示二进制数表示十进制数表示十六进制数表示无符号数使用二进制表示,每个位都代表2无符号数也可以用十进制表示,每个位都代十六进制数表示方法使用0-9和A-F来代表的幂例如,二进制数1011代表十进制数表10的幂例如,十进制数255代表二进16个不同的值例如,十六进制数FF代表11制数11111111十进制数255有符号数表示补码表示表示范围运算规则补码表示法是计算机中常用的有符号数表示补码表示法可以表示正数、负数和零,每个补码表示法的加减运算规则非常简单,直接方法,它使用最高位作为符号位,0表示正位的值有两种可能,因此一个n位二进制数将二进制数进行加减运算即可,不需要考虑数,1表示负数可以表示2^n个不同的值符号位浮点数表示表示范围精度问题12浮点数采用科学计数法表示,表示范围更大由于浮点数的精度有限,可能存在舍入误差存储结构使用场景34浮点数在内存中通常使用IEEE754标准存储浮点数主要用于表示实数,如科学计算和工程应用字符数据表示ASCII码使用7位二进制数来表示每个字符Unicode扩展了ASCII码,它使用16位或常用的字符编码方案包括ASCII、Unicode32位二进制数来表示各种语言的字符和UTF-8,它们使用不同的方法来表示字符段寄存器功能概述段地址范围段寄存器用于存储段地址,指示段寄存器通常为16位,可以寻址内存中数据或指令所在的段64KB的内存空间寻址模式类型段寄存器与偏移地址配合使用,常用的段寄存器包括CS、DS、形成20位的物理地址,访问内存SS、ES,每个寄存器对应不同的中的数据或指令段类型通用寄存器简介用途类型操作通用寄存器是CPU中用于存通用寄存器可用于存储程序变通用寄存器通常包括AX、BX、通用寄存器支持各种操作,包储操作数和中间结果的寄存器量、函数参数、循环索引以及CX、DX、SP、BP、SI、DI等括数据存储、数据读取、数据它们是程序员最常使用的一种各种计算结果它们通常拥有16位宽度移动、算术运算以及逻辑运算寄存器等标志寄存器
11.标志位
22.关键标志位标志寄存器是一个16位寄存器,用于保存CPU执行指令后包括进位标志(CF)、符号标志(SF)、零标志(ZF)、产生的状态信息溢出标志(OF)等,用于判断运算结果的特征
33.程序控制
44.调试辅助标志寄存器信息可以被程序用来控制程序流程,比如判断运标志寄存器对于调试程序非常重要,可以帮助程序员定位错算结果是否为零或是否溢出误并理解程序执行过程编程规范代码风格注释规范文档规范代码缩进,变量命名规范清晰的注释,解释代码功能程序文档,易于理解变量命名遵循规范含义明确变量命名应该遵循一定的规范,以提高代码可读性和可维护性变量名称应该能够清晰地反映其所代表的值或作用简明扼要使用驼峰命名法变量名应该尽可能简短,但要确保其含义易于理解例如,变量名为“userName”或“userAge”指令表达式指令代码助记符操作数指令代码是指机器能够直接识别的二进制代助记符是指令代码的符号化表示,方便人类操作数是指令要处理的数据,可以是寄存器、码理解和编写内存地址或立即数指令操作数立即数寄存器内存地址立即数是在指令中直接指定的值,例如寄存器是CPU内部的存储单元,它们速度内存地址是指存储在内存中的数据的位置MOV AX,10H10H是一个立即数,直接快,可用于存放数据和地址例如MOV例如MOV AX,[1000H]内存地址被赋予AX寄存器AX,BXBX寄存器的值被复制到AX寄存1000H中的值被复制到AX寄存器器指令助记符指令助记符示例指令助记符是汇编语言中用于表示指令的符号它们是英文单词例如,MOV指令用于将数据从一个地方移动到另一个地方,ADD或缩写,方便程序员记忆和使用指令用于将两个数据相加伪指令汇编程序指令汇编语言代码机器语言代码汇编程序指令告诉汇编器如何将汇编语言代汇编语言代码由指令和数据组成,用符号表机器语言代码是计算机可以理解的指令,由码转换为机器语言代码示二进制代码表示程序控制语句
11.跳转指令
22.条件转移指令改变程序执行流程,跳转到指根据CPU标志寄存器中状态判定指令断,决定是否跳转
33.循环指令
44.过程调用指令重复执行一段代码,直到满足调用子程序执行特定功能,返特定条件回主程序继续执行过程调用调用过程返回过程调用过程使用CALL指令,将程序控制权转移到被调用过程的入口地址•将当前指令指针IP压入堆栈被调用过程使用RET指令返回到调用过程,将程序控制权交回调用过程•将当前代码段寄存器CS压入堆栈•从堆栈中弹出CS和IP寄存器值•将被调用过程的入口地址加载到IP和CS寄存器•程序继续执行调用过程的下一条指令123执行过程被调用过程执行其代码,可能修改堆栈中的参数或局部变量•被调用过程可以使用堆栈来保存和恢复其局部变量•被调用过程可以使用堆栈来传递参数中断处理中断源中断可以来自硬件或软件例如,键盘按下、磁盘驱动器完成操作或程序执行错误中断向量表操作系统维护一个中断向量表,它包含每个中断的地址中断处理程序中断发生时,CPU会将控制权转移到中断处理程序,该程序负责处理中断事件中断返回中断处理程序完成任务后,会返回到中断发生时的程序位置,继续执行调试技巧调试器断点日志记录使用调试器,逐行执行代码,观察变量值变在代码的关键位置设置断点,暂停程序执行,在代码中添加日志语句,记录程序执行过程,化,发现错误检查程序状态方便问题排查本课程总结本课程介绍了汇编语言程序格式,包括数据段、代码段、栈段、程序目标地址等还讲解了内存单元组织、数据表示、段寄存器、通用寄存器、标志寄存器等内容。
个人认证
优秀文档
获得点赞 0