版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
汇编语言程序设计面向机器的低级语言·计算机专业核心基础课程Contents目录汇编语言程序设计课程的五大核心章节,从基础概念到高级技术逐层递进。01汇编语言基础与概述028086微处理器与寻址方式038086指令系统详解04汇编语言程序设计方法05子程序与宏指令技术Chapter01汇编语言基础与概述从机器语言到汇编语言的演进历程与语言特性分析EVOLUTION计算机语言发展历程每次演进的核心驱动力都是降低编程复杂度、提高开发效率,但汇编语言因其直接操控硬件的能力始终不可替代。1940s1950s1970s+机器语言时代01由纯粹的0和1二进制数字构成,程序员将代码打在纸带或卡片上,通过纸带机或卡片机输入计算机执行02难以辨认和记忆,修改极不方便且容易产生错误,严重制约了软件产业的发展和程序员效率0/1汇编语言诞生01用助记符(如MOV、ADD)代替机器指令操作码,用地址符号或标号代替操作数地址,显著提升可读性02汇编指令与机器指令一一对应,通过汇编器将源程序翻译为机器码后由计算机执行MOV高级语言兴起01C、Java、C#等高级语言屏蔽硬件细节,使开发人员能快速高效编码,大幅提高软件开发效率02但大型程序核心模块需直接操作硬件时,高级语言难以实现,汇编语言仍是必要工具C/JavaLOW-LEVELPROGRAMMING汇编语言的定义与核心概念汇编语言是一种面向机器的低级语言,通过助记符代替机器指令操作码、地址符号代替操作数地址,实现了人类可读性与机器可执行性的桥梁。SYMBOLLANGUAGE汇编语言亦称符号语言,用于电子计算机、微处理器、微控制器或其他可编程器件的底层编程符号语言MNEMONICS助记符代替机器指令的操作码,如MOV代表数据传送、ADD代表加法运算、SUB代表减法运算MOV·ADD·SUBADDRESSSYMBOL地址符号或标号代替指令或操作数的地址,使程序中的内存引用更加直观和可维护标号引用ASSEMBLER汇编过程将源程序翻译成机器指令,汇编器是连接人类代码与机器执行的翻译桥梁翻译桥梁CHAPTER06·ASSEMBLY机器指令与汇编指令的对应关系汇编指令是机器指令便于记忆的书写格式,二者在功能上完全等价但表达形式截然不同。01机器指令示例:将寄存器BX内容送到AX中,机器码为1000100111011000,由纯粹的二进制数字组成,难以辨认02汇编指令示例:同样的操作用movax,bx表示,三个简洁的符号即可表达完整的数据传送语义03编译器翻译:汇编编译器将源程序逐条翻译为对应的机器码,最终由CPU执行,实现从人类可读代码到机器可执行指令的转换04一一对应映射:每条汇编指令与机器指令严格对应,映射关系由处理器的指令集架构(ISA)定义机器指令与汇编指令对照表操作描述机器指令(二进制)汇编指令寄存器BX内容送到AX1000100111011000movax,bx将立即数5加到AX1000001111000000...0101addax,5AX内容减101001000decax无条件跳转到标号处11101001........jmplabel汇编指令用简洁的助记符代替冗长的二进制机器码,大幅提升代码可读性OVERVIEW汇编语言的总体特点汇编语言兼具直接操控硬件的底层能力和极高的执行效率,但同时也面临编程效率低、可移植性差、维护困难等固有局限。在现代软件体系中,它主要应用于驱动程序、嵌入式系统、实时程序等对性能和硬件控制有严苛要求的场景。核心优势执行速度快、占用内存小—直接对应机器指令,无中间层开销,运行效率在所有编程语言中最高直接操控硬件—可访问特定I/O端口、设置中断向量、操作寄存器,实现对硬件的精确控制代码优化空间大—能针对特定处理器架构进行指令级优化,在性能关键模块中发挥极致效能固有局限编程效率低—实现同一功能所需代码量远超高级语言,开发周期长,对程序员要求极高可移植性差—特定汇编语言与特定处理器指令集一一对应,不同平台间代码无法直接移植可读性和维护性差—大量底层操作细节使代码难以理解,后期修改和调试成本高昂APPLICATIONSCENARIOS汇编语言的实际应用场景汇编语言在操作系统底层、嵌入式系统、实时控制、安全分析等关键领域不可替代,是理解计算机运行机制的必经之路。驱动程序与操作系统内核需直接访问硬件资源、管理中断和内存映射,高级语言无法提供足够的底层控制能力KernelDriver嵌入式系统与物联网设备微控制器资源极其有限(KB级内存),汇编程序体积小、执行快,是资源受限环境的首选KBMemory实时运行程序航空航天控制、工业自动化等场景对响应延迟有严格要求,汇编可精确控制每条指令执行时间Real-timeControl安全分析与逆向工程病毒分析、漏洞挖掘、软件破解等需要直接阅读和理解机器码层面的程序行为ReverseEngineering嵌入式开发板与单片机硬件实物AssemblyLanguageComponents汇编语言程序的组成要素汇编语言程序由汇编指令、伪指令、宏指令三大指令类型以及通用寄存器、段寄存器等硬件资源共同构成。汇编指令构成程序代码部分,每条指令对应一条机器指令,实现程序核心功能核心逻辑伪指令处理器选择、模式定义、数据定义与存储器分配,不生成机器码结构分配宏指令缩短程序长度、实现代码复用,类似高级语言中的函数封装代码复用通用寄存器存放操作数与中间结果,是CPU内部最快速的数据存储单元数据存储段寄存器用于存储器寻址,存放段地址,实现8086分段内存管理内存管理MemoryArchitecture汇编语言程序的分段结构分段组织将代码、数据、堆栈独立存放,通过段寄存器与偏移地址组合实现20位物理寻址Intel8086微处理器·197801代码段(CS):存放汇编指令编制的程序代码,是程序的主体部分,由CS寄存器指向段地址02数据段(DS):存放运行所需的数据和常量,由DS寄存器指向,程序通过数据段访问变量03堆栈段(SS):定义堆栈所在内存区域,由SS寄存器指向,用于子程序调用与中断处理04附加段(ES):存放附加数据,由ES寄存器指向,常用于串操作指令的目标数据段基址ASSEMBLYSYNTAX汇编语言语句格式规范汇编语言语句遵循严格的四项格式规范:名字(标号/变量名)、操作(助记符)、操作数(表达式)和注释(功能说明)。其中操作项是必填核心,各项之间必须以空格或制表符分隔。汇编语句四项格式要素组成项是否必须功能说明示例名字(name)可选符号名,用作标号或变量名,标识该语句或数据的位置LOOP1:操作(operation)必须操作码助记符,可以是指令、伪指令或宏指令名称MOV操作数(operand)视指令而定一个或多个表达式,提供执行操作所需的数据或地址信息AX,BX注释(comment)可选以分号开头,说明程序或语句的功能,整行注释也合法;数据传送SYNTAX〈name〉operationoperand〈;comment〉标准格式为:〈name〉operationoperand〈;comment〉,各项间用空格或TAB分隔CHAPTER028086微处理器与寻址方式深入理解CPU内部结构、寄存器体系与七种寻址方式MicroprocessorArchitecture8086微处理器内部功能结构8086CPU采用执行单元(EU)与总线接口单元(BIU)双单元并行架构。EU负责指令解码与执行,BIU负责总线操作与指令预取,二者通过指令队列协同工作,实现了取指与执行的流水线重叠,这是早期处理器提升性能的关键设计创新。执行单元(EU)算术逻辑运算:包含算术逻辑单元(ALU),负责执行所有算术运算和逻辑运算,运算结果影响标志寄存器中的状态位寄存器管理:管理14个16位寄存器中的通用寄存器和标志寄存器,直接参与指令的解码、执行和结果存储指令解码执行:从BIU的指令队列中取出指令进行解码执行,当队列为空时进入等待状态直到BIU补充新指令ALU算术逻辑单元·标志寄存器总线接口单元(BIU)地址生成:包含4个段寄存器(CS/DS/SS/ES)和指令指针IP,通过地址加法器将段地址与偏移量组合为20位物理地址指令预取:负责从内存取指令放入6字节的指令队列,实现指令预取机制,使EU可以连续执行而无需等待总线操作总线控制:管理CPU与外部存储器及I/O设备之间的所有数据传输,控制地址总线、数据总线和控制总线的操作6Byte指令队列·流水线预取REGISTERARCHITECTURE8086通用寄存器体系8086提供8个16位通用寄存器,分为数据寄存器组和指针变址寄存器组,各有专用功能又兼顾通用性。8086通用寄存器功能一览8REGISTERS·16-BIT寄存器名称主要功能与特殊用途AX/AH/AL累加器算术运算首选、I/O操作、乘除法结果存放BX/BH/BL基址寄存器存储器寻址的基址寄存器、地址指针CX/CH/CL计数寄存器LOOP循环计数、串操作重复次数、移位次数DX/DH/DL数据寄存器乘除法高位数据、间接I/O端口地址SP堆栈指针指向堆栈段栈顶,PUSH/POP操作自动修改BP基址指针访问堆栈段中的数据,子程序参数传递SI源变址寄存器串操作源地址指针、存储器变址寻址DI目的变址寄存器串操作目的地址指针、存储器变址寻址8个通用寄存器各有专长,数据寄存器可拆分为8位使用,指针变址寄存器专用于地址计算8086Architecture段寄存器与标志寄存器8086通过4个段寄存器实现1MB内存空间的分段管理,采用"段地址×16+偏移地址"生成20位物理地址。标志寄存器FLAGS记录运算结果的状态特征,为条件转移指令提供判断依据,是实现程序流程控制的关键硬件支撑。段寄存器(4个)CS·代码段指向当前执行代码所在段的段基址,与IP组合形成下一条指令的物理地址DS·数据段指向程序数据所在段的段基址,大多数数据访问指令默认使用DS寻址SS·堆栈段指向堆栈段基址,与SP组合确定栈顶物理地址,PUSH/POP自动引用ES·附加段指向附加数据段基址,串操作指令中作为目的操作数的默认段基址标志寄存器FLAGSStatusFlags·6-bit状态标志6位:CF进位、PF奇偶、AF辅助进位、ZF零标志、SF符号、OF溢出,反映运算结果特征ControlFlags·3-bit控制标志3位:TF陷阱(单步调试)、IF中断允许(控制可屏蔽中断)、DF方向(控制串操作地址增减方向)ConditionalJump条件转移指令:JZ、JC、JO等根据标志位状态决定是否跳转,实现程序的分支控制逻辑8086ADDRESSINGMODES8086七种寻址方式概述8086提供7种灵活的寻址方式,从最简单的立即寻址到最复杂的相对基址变址寻址,构成了完整的操作数获取体系。基础寻址方式3种01立即寻址操作数直接包含在指令中,如MOVAX,1234H,速度最快但操作数固定不可变02寄存器寻址操作数存放在CPU内部寄存器中,如MOVAX,BX,无需访问内存,执行速度极快03直接寻址操作数的偏移地址直接在指令中给出,如MOVAX,[2000H],适合访问固定内存单元间接寻址方式4种04寄存器间接寻址寄存器存放偏移地址,如MOVAX,[BX],适合遍历数组05寄存器相对寻址寄存器加位移量,如MOVAX,[BX+6],适合访问结构体成员06基址变址寻址基址加变址寄存器,如MOVAX,[BX+SI],适合二维数组访问07相对基址变址寻址基址+变址+位移量,如MOVAX,[BX+SI+8],最灵活8086MemoryAddressing物理地址计算与寻址实例8086采用"段地址×16+偏移地址"的物理地址生成机制,将16位寄存器的寻址能力扩展到20位(1MB)。不同寻址方式的偏移地址计算方法各异,但最终都通过同一条物理地址公式访问内存,理解这一机制是编写正确汇编程序的核心前提。寻址方式物理地址计算实例寻址方式指令示例偏移地址(EA)计算物理地址计算直接寻址MOVAX,[2000H]EA=2000HPA=DS×16+2000H寄存器间接MOVAX,[BX]EA=(BX)PA=DS×16+(BX)寄存器相对MOVAX,[BX+6]EA=(BX)+6PA=DS×16+(BX)+6基址变址MOVAX,[BX+SI]EA=(BX)+(SI)PA=DS×16+(BX)+(SI)相对基址变址MOVAX,[BX+SI+8]EA=(BX)+(SI)+8PA=DS×16+(BX)+(SI)+8所有寻址方式的偏移地址计算不同,但物理地址统一通过"段基址×16+EA"生成AssemblyDebugging常用DEBUG调试命令DEBUG是学习8086汇编语言的核心调试工具,提供内存查看、寄存器操作、反汇编、单步执行等功能。命令名称功能说明使用示例DDump查看指定内存区域的内容,以十六进制和ASCII码形式显示D1000:0EEnter修改指定内存单元的内容,支持逐个字节修改E1000:041RRegister查看和修改CPU寄存器的内容及标志位状态RAXUUnassemble将内存中的机器码反汇编为汇编指令显示U1000:0TTrace单步执行一条或多条指令,显示执行后寄存器和标志变化T=1000:0GGo从指定地址开始连续执行程序直到遇到断点G=010AAssemble以汇编形式输入指令,自动汇编为机器码存入内存A1000:0输入→查看→执行→跟踪→修改:DEBUG提供完整的汇编程序调试功能链CHAPTER038086指令系统详解数据传送、算术逻辑运算、移位操作与控制转移指令全面解析8086INSTRUCTIONSET数据传送指令详解数据传送指令是8086指令系统中使用频率最高的指令类别,涵盖通用传送、堆栈操作、交换、地址传送和查表等多种操作。理解操作数限制和标志位影响是正确使用的基础。MOV指令reg/mem/imm间传送,禁止mem→mem,不修改CS,不影响标志位通用传送PUSH/POP后进先出,PUSH先SP-2存数据,POP取数据后SP+2,仅16位堆栈操作XCHG指令交换两操作数,支持reg↔reg、reg↔mem,禁mem↔mem双向交换LEA指令传送有效地址到目标寄存器,常用于初始化地址指针地址指针XLAT指令BX基址+AL索引查表,结果存回AL,适合编码转换查表转换ArithmeticInstructions算术运算指令详解8086算术运算指令覆盖加减乘除四大基本运算,区分有符号和无符号操作,运算结果的特征通过标志位反映。乘除法指令对操作数位置和结果存放有严格约定,正确理解这些规则是避免编程错误的关键。常用算术运算指令功能表指令功能操作数与结果位置标志位影响ADDdst,srcdst←dst+src目标操作数存放结果影响全部6个状态标志SUBdst,srcdst←dst−src目标操作数存放结果影响全部6个状态标志MULsrc无符号乘法8位:AX←AL×src;16位:DX:AX←AX×srcCF,OF有效;SF,ZF,PF,AF无定义DIVsrc无符号除法8位:AL←AX÷src,AH←余数;16位类似全部无定义CMPdst,src比较(做减法不存结果)不修改操作数,仅设置标志影响全部6个状态标志INC/DEC加1/减1操作数自身修改影响ZF/SF/PF/OF/AF,不影响CF算术指令的核心区别在于操作数位置约定、有符号/无符号区分以及对标志位的不同影响Chapter04·Instructions逻辑运算与移位指令逻辑运算指令实现位级数据操作,广泛用于位屏蔽、位设置和快速清零;移位指令通过移动二进制位实现快速乘除与数据位重排。01逻辑运算指令AND按位与·屏蔽特定位按位与运算,常用于屏蔽特定位(如ANDAL,0FH保留低4位)和检测某位是否为0OR按位或·设置位为1按位或运算,常用于设置特定位为1(如ORAL,80H设置最高位)和合并位模式XOR按位异或·最快清零按位异或运算,XORreg,reg是清零的最快方法(比MOVreg,0更快且代码更短)NOT按位取反·不影响标志位按位取反,将操作数每一位0变1、1变0,是唯一不影响任何标志位的逻辑指令02移位指令SHL/SAL左移·乘以2各位左移,最低位补0,每移一位相当于无符号/有符号数乘以2SHR逻辑右移·无符号除2各位右移,最高位补0,每移一位相当于无符号数除以2SAR算术右移·符号扩展各位右移,最高位保持不变(符号扩展),每移一位相当于有符号数除以2ROL/ROR/RCR/RCL循环移位·位重分布循环移位指令,移出的位重新填入另一端,适合实现数据加密和位循环操作ASSEMBLY·CONTROLFLOW控制转移指令详解控制转移指令是实现程序流程控制的核心工具,包括无条件转移与多种条件转移指令,共同构建分支逻辑,是汇编程序设计的流程控制基石。JMP无条件跳转直接修改IP寄存器跳转至目标地址,支持段内直接、段内间接、段间直接、段间间接四种方式。4MODESJZ/JE零跳转当ZF=1时跳转,通常用于CMP比较后判断两数是否相等或运算结果是否为零。ZF=1JC/JB进位跳转当CF=1时跳转,用于无符号数比较判断是否小于,或检测加法是否产生进位。CF=1JG有符号大于当ZF=0且SF=OF时跳转,专用于有符号数大小比较,综合判断多个标志位。ZF=0SF=OFCALL/RETCALL将返回地址压入堆栈后跳转子程序入口,RET从堆栈弹出返回地址恢复执行流。STACKI/O汇编语言程序设计串操作指令与重复前缀串操作指令配合重复前缀可高效处理批量内存数据,每次操作后SI/DI自动增减,是汇编处理数组与字符串的核心工具。五种串操作指令MOVS串传送:将DS:SI指向的字节/字传送到ES:DI,支持MOVSB和MOVSWCMPS串比较:比较DS:SI与ES:DI数据,设置标志位不修改数据SCAS串扫描:将AL/AX与ES:DI数据比较,搜索特定字符LODS串装载:将DS:SI数据装入AL/AX,逐个处理元素STOS串存储:将AL/AX值存入ES:DI,批量填充内存重复前缀与地址控制REP前缀:MOVS/LODS/STOS重复CX次,CX自动减1至0,实现整块批量操作REPZ/REPE:CX≠0且ZF=1时继续,查找第一个不匹配元素REPNZ/REPNE:CX≠0且ZF=0时继续,查找第一个匹配元素DF方向标志:CLD清DF使SI/DI递增;STD置DF使SI/DI递减使用要点:使用串指令前需设置DS/ES段寄存器,初始化SI/DI指针与CX计数,并根据数据流向选择CLD或STDI/OINSTRUCTIONS&PORTADDRESSING输入输出指令与端口寻址8086通过IN和OUT两条I/O指令实现CPU与外部设备的数据交换,支持8位和16位数据传输。端口地址分为直接寻址(8位立即数,0-255)和间接寻址(DX寄存器,0-65535)两种方式,覆盖了从键盘、显示器到各种外设控制器的完整I/O空间。01INAL/AX,port—从指定输入端口读取8位(AL)或16位(AX)数据,如INAL,60H读取键盘扫描码02OUTport,AL/AX—将AL/AX中的数据写入指定输出端口,如OUT61H,AL控制扬声器发声03直接端口寻址—端口号为8位立即数(0–255),直接编码在指令中,适用于常用低端口地址设备04间接端口寻址—端口号存放在DX寄存器中(0–65535),用INAL,DX或OUTDX,AL格式访问高端口设备计算机主板上的I/O接口与端口—CPU通过端口地址与外部设备进行数据交换Chapter04汇编语言程序设计方法顺序、分支、循环结构设计与DOS系统功能调用实战Chapter27·AssemblyLanguage汇编源程序格式与DOS功能调用汇编源程序遵循严格的段定义格式,通过SEGMENT/ENDS、ASSUME、END等伪指令构建程序骨架。DOS系统功能调用(INT21H)提供了键盘输入、屏幕输出、文件操作等丰富的系统服务,是汇编程序实现人机交互的核心手段。01源程序结构要素02常用DOS功能调用INT21HSEGMENT/ENDS定义逻辑段的起止边界,每个段必须有成对的段名和结束标记ASSUME告知汇编器各段寄存器与逻辑段的对应关系,如ASSUMECS:CODE,DS:DATAEND标记源程序结束并指明程序入口地址,汇编器遇到END后停止汇编处理PROC/ENDP定义子程序的起止范围,支持NEAR(段内)和FAR(段间)两种属性AH=1·键盘输入等待用户按键,将输入字符的ASCII码存入AL,同时在屏幕上回显该字符AH=2·字符显示将DL中的ASCII码字符输出到屏幕显示,常用于逐字符打印输出结果AH=9·字符串显示DS:DX指向以'$'结尾的字符串首地址,一次性输出整个字符串到屏幕AH=4CH·程序终止正常结束程序并返回DOS,AL中可携带返回码,是程序退出的标准方式SEQUENTIALSTRUCTURE顺序结构程序设计顺序结构是汇编程序最基本的组织形式,指令按书写顺序依次执行,适用于线性计算、数据转换和格式处理等场景。虽然结构简单,但要求程序员精确安排每条指令的操作数、寄存器分配和中间结果传递,体现了汇编编程对细节控制的严格要求。大学生编程学习场景01顺序结构特征:指令按书写顺序自上而下逐条执行,不包含任何跳转或循环控制,程序流为一条直线。直线流02适用场景:数学表达式计算、数据格式转换、编码加密、简单的数据搬移和初始化等线性处理任务。线性处理03编程要点:合理分配寄存器避免数据覆盖冲突,注意操作数字长匹配(8位/16位),中间结果传递需准确。精确控制04加密实例:将4位十进制数逐位分离(除以1000/100/10/1取余),用XLAT指令查密码表替换,依次显示加密结果。XLAT查表AssemblyBranch分支结构程序设计分支结构通过CMP比较与条件转移指令实现路径选择,是程序智能化的基础IF-ELSE双分支结构CMP比较两操作数后,用JL、JG、JE等条件跳转选择路径,未跳转时顺序执行另一分支CMP+JccCASE多分支结构多条CMP与条件跳转级联判断,或用跳转表配合JMP间接跳转实现高效多路选择JMPTableUNSIGNED无符号数分支使用JA高于、JB低于、JAE高于等于、JBE低于等于,基于CF与ZF条件跳转CF/ZFSIGNED有符号数分支使用JG大于、JL小于、JGE大于等于、JLE小于等于,基于SF、OF与ZF跳转SF/OF/ZFCAUTION编程注意事项每个分支末尾须有JMP跳过后续分支到公共出口,否则贯穿执行造成逻辑错误Fall-through汇编语言程序设计循环结构程序设计循环结构通过LOOP指令或条件跳转实现代码的重复执行,是处理数组遍历、数据搜索、排序算法等批量操作的核心机制。LOOPLOOP指令自动将CX减1,若CX≠0则跳转到指定标号处继续循环,适合计数型循环(已知循环次数)STEP01循环初始化设置循环计数器CX的初值、初始化指针寄存器和累加器等,确保循环从正确状态开始CMP+JCC条件跳转循环用CMP+条件跳转实现,适合条件型循环(循环次数不确定,由数据或条件决定何时结束)STEP02循环体设计编写需要重复执行的核心操作,注意寄存器的合理分配和中间结果的传递JCXZJCXZ指令当CX=0时跳转,常用于循环前判断是否需要执行(避免CX为0时LOOP仍执行一次的问题)STEP03循环控制修改计数器或检测结束条件,决定是否继续下一次循环,嵌套循环需PUSH/POP保存外层CXASSEMBLYCASESTUDY程序实例:4位十进制数加密4位十进制数加密程序是一个综合性的汇编编程实例,将数据段定义、代码段组织、子程序调用、查表转换(XLAT)、除法分离数位、循环输出等技术融为一体。DATASEG数据段定义TABLE存放密码表(0→9,1→0,2→8…),RESULT预留4字节存放加密结果,数据与代码分离管理,便于维护和修改DIV数位分离算法依次除以1000/100/10/1取商得各位数字,利用DIV指令的商和余数特性逐位提取,实现十进制数拆解XLAT查表加密实现LEABX,TABLE加载基址,XLAT以AL为索引自动完成TABLE[AL]的查表替换,单指令高效映射INT21H结果显示输出LEADI,RESULT指向首址,CX=4控制循环,每次取一字节通过INT21H显示,完成加密结果可视化PROC子程序封装NUMBER过程封装"除→取余→查表→存储"完整逻辑,被主程序调用4次,实现代码复用和模块化设计CHAPTER05子程序与宏指令技术结构化程序设计的两大代码复用机制:过程调用与宏展开汇编语言程序设计子程序结构设计子程序(过程)是汇编语言实现代码复用和结构化设计的核心机制。通过CALL/RET指令对实现调用与返回,参数传递可通过寄存器、共享变量或堆栈三种方式实现,现场保护通过PUSH/POP确保调用前后寄存器状态一致,是构建大型汇编程序的基础架构。子程序定义与调用定义PROC/ENDP伪指令定义子程序,NEAR属性用于段内调用(仅保存IP),FAR属性用于段间调用(保存CS和IP)调用CALL指令将返回地址压入堆栈后跳转到子程序入口,RET指令从堆栈弹出返回地址恢复执行流嵌套支持嵌套调用和递归调用:每次CALL都在堆栈中保存返回地址,多层调用的返回顺序自然遵循后进先出参数传递与现场保护寄存器寄存器传参:将参数放入约定寄存器(如AX传值、BX传地址),简单高效但参数多时寄存器不够用堆栈堆栈传参:调用前PUSH参数,子程序内通过BP+偏移量访问,支持任意数量参数传递且不影响寄存器保护现场保护:子程序开头PUSH保存将被修改的寄存器,返回前POP恢复,确保调用者环境不受影响MACRO·ASSEMBLY宏指令技术与应用宏指令在汇编阶段将代码模板展开到每个调用位置,实现编译时的代码复用,没有运行时调用开销但增加目标代码体积。与子程序的运行时复用形成互补,宏适合短小频繁的高性能代码片段,子程序适合较长的功能模块,二者结合是汇编程序优化的最佳实践。宏定义语法MACRO/ENDM伪指令定义宏,宏名后跟形式参数列表,宏体中可使用参数占位符,ENDM标记结束。支持局部标号定义避免符号冲突。MACRO
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 炉外精炼工岗中核心管理考核试卷含答案
- 水生植物栽培工风险识别模拟考核试卷含答案
- 柠檬酸发酵工安全素养强化考核试卷含答案
- 2025年甘肃省陇南地区两当县数学四年级下学期期末达标检测试题(含答案)
- 验光员必做试题及答案指引
- 税务知识试题与答案
- 2025年潮州市四年级数学下学期期末考试模拟试题含答案
- 河北承德市多校2026-2027学年高二上学期开学英语试题(文字版含答案)
- 侨务法常见试题及答案解析
- 眼镜营销实战试题及答案分享
- 《电力重大事故隐患判定标准及治理监督管理规定》国家能源局解读课件
- 2026年秋季学期小学统编版语文六年级上册(新教材)教学计划附教学进度表
- 工伤保险条例练习题及完整答案
- 26秋四年级上册数学第一单元提优卷《北师大版》
- 班级值日班长轮值制度及一日工作流程表(中学适用)
- 2026年四史知识竞赛(改革开放史篇)考试题库及答案
- 2026学年入学常规教育指南:从适应到成长
- 2026秋招:江苏惠隆资产管理公司 笔试题及答案
- 晋江签约合同
- 拉美文化音乐概述
- 山路车辆行车安全培训课件
评论
0/150
提交评论