版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第四章汇编语言程序设计(2)微机原理与接口技术·课程讲义Contents本章内容概览第四章汇编语言程序设计(2)01汇编语言程序格式02伪指令语句详解03DOS系统功能调用与BIOS中断调用04汇编语言程序设计方法CHAPTER01汇编语言程序格式从段结构、语句格式到完整程序框架的系统认知Chapter04·汇编语言程序设计汇编语言基本概念与语言层次汇编语言是介于机器语言和高级语言之间的面向机器的编程语言,通过助记符和符号地址实现对硬件的直接操控。不同CPU架构对应不同的汇编语言,其核心价值在于执行效率高、内存占用少、实时性能优越,是操作系统和底层驱动开发的关键技术基础。机器语言与助记符机器语言是计算机唯一能直接识别的二进制语言,汇编语言用助记符(如MOV、ADD)替代二进制操作码,显著提升程序可读性。汇编翻译过程汇编程序(如MASM)将汇编源程序自动翻译为由机器代码组成的目标程序,这一翻译过程称为"汇编"。CPU架构绑定汇编语言面向特定CPU架构,8086/8088汇编与ARM汇编指令集不同,程序不具备跨平台移植性。硬件直接操控相比高级语言(C/Pascal),汇编语言可直接操作硬件寄存器和I/O端口,在嵌入式系统和驱动开发中不可替代。SEGMENTEDARCHITECTURE8086汇编源程序的分段结构8086汇编源程序采用分段结构组织代码与数据,这是由CPU的分段存储器管理机制决定的。每个源程序至少包含代码段,通常还需数据段和堆栈段。DATASEGMENT数据段定义程序中使用的变量和常量,通过DS寄存器访问,是程序数据的全局存储空间DSSTACKSEGMENT堆栈段为子程序调用、中断处理提供现场保护区域,通过SS:SP寄存器对管理栈顶位置SS:SPCODESEGMENT代码段存放可执行的机器指令序列,通过CS:IP寄存器对指向当前执行位置CS:IPSEGMENTFORMAT段定义格式"段名SEGMENT"标记段开始,"段名ENDS"标记段结束,段内可包含任意数量的语句ENDSSEGMENTINITIALIZATIONASSUME伪指令与段寄存器初始化ASSUME伪指令仅告知汇编器段寄存器与逻辑段的对应关系,并不实际加载段地址。程序员必须在代码段开头手动初始化DS、SS等段寄存器,这是8086编程的关键步骤,遗漏此步骤将导致数据访问错误。01ASSUMECS:CODE,DS:DATA,SS:STACK关联声明,非机器码:ASSUMECS:CODE,DS:DATA,SS:STACK仅建立段寄存器与逻辑段的对应声明,不产生任何机器码声明≠加载02MOVAX,DATA→MOVDS,AXDS手动初始化:MOVAX,DATA→MOVDS,AX,因8086不允许立即数直接送段寄存器,必须通过通用寄存器中转DS03MOVAX,STACK→MOVSS,AXSS手动初始化:MOVAX,STACK→MOVSS,AX,确保堆栈操作拥有正确的栈空间基地址SS04ENDSTARTCS/IP自动设置:由ENDSTART指令自动完成,无需手动初始化——这是END伪指令的隐含功能之一CS:IPASSEMBLYLANGUAGE·PROGRAMMING完整程序实例:Hello!字符串输出一个完整的8086汇编程序需包含数据定义、段寄存器初始化、功能调用和程序退出四个基本环节。通过Hello!示例可清晰展现从段定义到DOS功能调用的完整编程范式,为后续复杂程序设计奠定框架基础。数据段与代码段定义DATASEGMENT定义数据段,STRINGDB'Hello!','$'声明以$结尾的字符串变量CODESEGMENT定义代码段,ASSUMECS:CODE,DS:DATA建立段寄存器与逻辑段映射START标号标记程序入口点,ENDSTART指示汇编器从此处开始执行执行逻辑与DOS调用MOVAX,DATA→MOVDS,AX:将数据段基地址装入DS寄存器,完成数据段初始化MOVAH,9→INT21H:调用DOS9号功能,显示以$结尾的字符串MOVAH,4CH→INT21H:调用DOS4CH功能,正常退出并返回操作系统完整代码01DATASEGMENT02STRINGDB'Hello!','$'03DATAENDS04CODESEGMENT05ASSUMECS:CODE,DS:DATA06START:MOVAX,DATA07MOVDS,AX;初始化数据段08MOVAH,909MOVDX,OFFSETSTRING10INT21H;显示字符串11MOVAH,4CH12INT21H;退出程序13CODEENDS14ENDSTARTCHAPTER04·汇编语言程序设计汇编语言的两种语句类型汇编语言语句分为指令语句(硬指令)和伪指令语句(软指令)两大类。指令语句被翻译为机器码、由CPU在运行时执行;伪指令不产生机器码、仅在汇编阶段指导汇编器完成数据定义和程序组织。二者分工明确,共同构成完整的源程序。指令语句(硬指令)FORMAT[标号:]操作码操作数[;注释]LOOP1:ADDAX,BX;两数相加EXECUTION每条指令汇编后生成1–6字节机器码,在程序运行时由CPU逐条执行,完成实际的运算和控制操作OPERATIONS包含数据传送、算术运算、逻辑运算、控制转移等操作,直接对应CPU指令集,是程序功能实现的核心载体伪指令语句(软指令)FORMAT[名字]伪指令操作码操作数[;注释]COUNTEQU100COMPILATION不生成机器码,仅在汇编阶段为汇编器提供数据定义、段分配、宏定义等指示信息,辅助程序结构的组织CATEGORIES变量定义(DB/DW/DD)、段控制(SEGMENT/ENDS)、符号赋值(EQU/=)等,用于内存管理和程序模块化CHAPTER02伪指令语句详解数据定义、符号赋值、段控制与宏定义的系统学习DATADEFINITION数据定义伪指令DB/DW/DD/DQ/DT数据定义伪指令是汇编程序中为变量分配存储空间的核心工具。DB/DW/DD/DQ/DT分别定义1/2/4/8/10字节的数据单元,配合DUP操作符可实现批量数据初始化。DB·DefineByte定义1字节数据单元。MSGDB'Hello'连续存储5字节ASCII码字符。1BDW·DefineWord定义2字节数据单元。NUMDW1234H按小端序存储为34H,12H。2BDD·Doubleword定义4字节数据。PTRDD12345678H常用于存放远指针或32位整数。4BDUP批量定义BUFDB100DUP(?)分配100字节未初始化空间,?表示不赋初值。×NDUP嵌套用法ARRAYDW5DUP(3DUP(0))等价于定义15个值为0的字单元。嵌套DUP可高效初始化多维数组或大型缓冲区。5×3DQ/DT扩展指令DQ(DefineQuadword)定义8字节数据,DT(DefineTenbytes)定义10字节数据。适用于高精度浮点数与大整数运算场景。8B·10BASSEMBLYDIRECTIVES符号定义伪指令EQU、=与LABEL符号定义伪指令为汇编程序提供常量定义和符号抽象能力,提升代码可读性和可维护性。EQU与等号赋值符号常量定义与动态赋值机制EQU定义不可更改的符号常量:MAXEQU255,后续程序中所有MAX被替换为255等号允许重复赋值:CNT=0,CNT=CNT+1,适用于循环计数等需要动态更新的场景EQU可赋值字符串或指令序列:PROMPTEQU'Input:',实现代码模板化复用核心区别ImmutablevsMutableLABEL类型别名同一地址的多粒度数据访问LABEL为同一地址定义不同数据类型名:W_VALLABELWORD紧跟B_VALDB20DUP(?)通过LABEL实现对同一内存区域的字节、字、双字等多粒度访问,提升数据操作灵活性常见用途:将字节数组同时定义为字数组,方便按字节处理字符或按字处理数值核心价值Multi-granularityAccessSEGMENTDIRECTIVESEGMENT伪指令完整语法与参数SEGMENT伪指令的完整语法包含定位类型、组合类型和类别三个可选参数,它们分别控制段的内存对齐方式、多模块链接时的合并策略和段的分类归属。定位类型PAGE(256字节对齐)、PARA(16字节对齐,默认)、WORD(偶地址对齐)、BYTE(任意地址),决定段起始物理地址PAGE·PARA·WORD·BYTE组合类型PUBLIC(顺序拼接各模块同名段)、COMMON(重叠共享同一地址空间)、STACK(堆栈段专用合并方式)、MEMORY(放在最高地址)PUBLIC·COMMON·STACK类别名用单引号括起的字符串如'CODE'、'DATA',链接器将同类别的段集中放置,便于内存布局管理'CODE'·'DATA'·'STACK'完整格式示例DATASEGMENTPARAPUBLIC'DATA'表示16字节对齐、公共组合、数据类别的段定义PARAPUBLIC'DATA'CHAPTER04·PSEUDO-INSTRUCTIONS过程定义PROC/ENDP与结构体STRUCTPROC/ENDP伪指令为汇编程序提供子程序模块化封装能力,通过NEAR/FAR属性控制调用范围;STRUCT伪指令则允许定义包含多个字段的复合数据类型,两者共同提升了汇编程序的结构化程度和代码复用性。01NEAR过程(段内调用)调用者和子程序在同一代码段,只需压栈/弹出IP偏移地址02FAR过程(段间调用)子程序在不同代码段,需同时压栈/弹出CS段地址和IP偏移地址03PROC/ENDP定义格式过程名PROCNEAR/FAR...过程名ENDP,配合CALL指令实现子程序调用04STRUCT结构体定义STUDENTSTRUCT逐行定义各字段,ENDS结束结构体声明05变量声明与字段访问S1STUDENT<>声明变量,S1.NAME访问特定字段06与C语言struct的对应为处理记录、表格等复杂数据提供类型化的组织方式MACRO&ENDM宏定义MACRO/ENDM与宏展开机制宏定义通过MACRO/ENDM伪指令将常用指令序列封装为可复用的代码模板,在汇编阶段完成宏展开。01宏定义格式宏名MACRO[参数表]…宏体…宏名ENDM,汇编时仅定义不生成代码。参数表用于传递宏展开时的实际值,宏体内使用形参进行代码编写。02宏调用与展开调用处写"宏名[实参]",汇编器将宏体原样插入并替换形参为实参。宏展开是纯粹的文本替换过程,在汇编前完成,不占用运行时开销。03宏与子程序对比宏无CALL/RET开销执行更快,但每次展开增加代码体积;子程序有调用开销但节省空间。选择依据是代码执行频率与内存空间的权衡。04LOCAL伪指令声明宏内局部标号,避免多次宏展开产生标号重名冲突,格式如LOCALLAB1。汇编器自动为每次展开的局部标号生成唯一标识符。PSEUDOINSTRUCTIONSORG定位伪指令与其他辅助伪指令ORG伪指令通过设置地址计数器实现对内存布局的精确控制,$运算符可引用当前地址。配合NAME、PUBLIC、EXTRN等辅助伪指令,可以实现多模块程序的符号共享与链接,构成完整的汇编程序组织工具体系。定位与地址控制01ORG设置地址计数器:ORG100H使后续代码从偏移地址100H开始,常用于COM程序入口定位02$运算符引用当前地址:TABLEDW$+4将当前地址加4的值存入TABLE,实现自引用数据结构03ORG$+N跳过空间:等效于预留N字节未使用的内存区域,灵活控制内存分配多模块辅助伪指令01PUBLIC声明对外可见符号:PUBLICVAR1使VAR1可被其他模块通过EXTRN引用02EXTRN声明外部符号引用:EXTRNVAR1:WORD告知汇编器VAR1定义在其他模块中03NAME/TITLE辅助管理:NAME指定模块名、TITLE设置列表标题,辅助大型多模块项目的编译和调试CHAPTER03DOS系统功能调用与BIOS中断调用从INT21H到BIOS中断,掌握汇编程序的系统交互机制SYSTEMCALLDOS中断INT21H调用原理与方法INT21H是DOS系统提供的核心软中断接口,通过AH寄存器传递功能号实现上百种子功能调用。标准调用流程为:设置功能号→传递入口参数→执行INT21H→获取返回值。这种统一的系统调用机制使汇编程序能够高效地访问操作系统服务。标准调用流程AH←功能号→设置入口参数→执行INT21H→从约定寄存器读取出口参数AH→INT21H→RET子功能覆盖DOS提供100+种子功能,覆盖字符I/O、字符串I/O、磁盘文件操作、内存管理和程序控制等领域100+Sub-functions功能号映射功能号决定服务类型:AH=1读字符、AH=2显示字符、AH=9显示字符串、AH=4CH程序退出AH=01/02/09/4CH寄存器参数传递入口参数通过通用寄存器传递(如DX存字符串偏移地址),出口参数同样通过寄存器返回DX→OffsetAddressINT21H·BIOS常用字符输入功能调用(01H/07H/08H)DOS提供多种字符输入功能,核心差异在于是否回显字符和是否响应Ctrl+C中断。1号功能回显且响应中断,适合交互式输入;7号功能不回显不响应中断,适合密码输入;8号功能不回显但响应中断,兼顾安全性和可控性。01H回显输入MOVAH,01H→INT21H,从标准输入设备读取一个字符并回显到屏幕,同时将ASCII码存入AL寄存器返回。回显·响应中断07H无回显输入MOVAH,07H→INT21H,直接读入字符不回显,AL返回ASCII码,不检测Ctrl+C中断,适用于密码输入场景。不回显·不响应08H安全输入MOVAH,08H→INT21H,读入字符不回显但检测Ctrl+C中断,兼顾输入安全性与用户可控性,适合敏感操作。不回显·响应中断0BH状态检查检查键盘缓冲区状态,AL=FFH表示有键入等待读取,AL=00H表示无输入,常用于实现非阻塞式键盘轮询检测。非阻塞轮询DOSINT21H字符与字符串输出功能(02H/09H)DOS的2号功能实现单字符输出、9号功能实现字符串输出,二者是汇编程序中最常用的人机交互手段。9号功能要求字符串必须以'$'结尾,是8086汇编编程的重要规范。02H单字符输出调用方式:MOVDL,'A'→MOVAH,02H→INT21H,在光标位置显示DL中的ASCII字符控制字符:DL=0DH回车、DL=0AH换行、DL=07H响铃,实现格式化输出控制循环调用:可实现多字符输出,适合逐字符处理并显示的场景09H字符串输出调用方式:MOVDX,OFFSETSTRING→MOVAH,09H→INT21H,DX指向字符串首地址'$'结尾约定:MSGDB'Hello!',0DH,0AH,'$',0DH/0AH实现回车换行效果格式限制:不支持直接打印整数,需先将数值转换为ASCII字符串后再调用09H显示02H示例;显示字符'A'MOVDL,41H;'A'→DLMOVAH,02H;功能号INT21H;调用DOS;输出回车换行MOVDL,0DHMOVAH,02HINT21HAH=02H·DL=ASCII·INT21H09H示例;数据段定义MSGDB
'Hello!',0DH,0AH,'$';代码段调用MOVDX,OFFSETMSGMOVAH,09HINT21HAH=09H·DX=偏移地址·字符串以'$'结尾DOSINT21H·SystemServices缓冲输入(0AH)与程序退出(4CH)0AH缓冲输入功能支持一次性读入整行字符串,通过预定义缓冲区结构(最大长度+实际长度+字符存储区)实现高效的字符串输入。4CH功能是DOS程序的标准退出方式,支持携带返回码,确保程序资源被正确释放并返回操作系统。01缓冲区结构第1字节=最大字符数N,第2字节=DOS填入实际字符数,第3字节起存储字符02定义示例BUFDB80,?,80DUP(?)允许输入最多80个字符,?处由DOS自动填写030AH调用方式MOVDX,OFFSETBUF→MOVAH,0AH→INT21H,以回车键结束输入044CH程序正常退出MOVAH,4CH→INT21H,程序终止并将控制权交还DOS,可携带AL中的返回码05返回码约定AL=0表示正常退出,非零表示异常,批处理脚本可通过ERRORLEVEL检测06推荐退出方法替代早期RET返回方式和00H/20H功能,是DOS环境下推荐的程序终止方法BIOS&DOSBIOS中断调用与DOS功能调用对比BIOS中断调用通过ROM中固化的底层服务直接访问硬件,提供比DOS更基础的系统功能。两者形成层次化调用关系:应用程序→DOS功能调用→BIOS中断→硬件。BIOS调用不依赖DOS、执行更快,但兼容性较差,二者各有适用场景。01底层服务:BIOS固化在ROM中,提供显示(INT10H)、键盘(INT16H)、磁盘(INT13H)等底层服务接口02调用方式:AH←功能号→设置参数→INTn,返回参数在约定寄存器,流程与DOS调用类似03核心优势:不依赖DOS、执行速度快、可控制更底层硬件(如设置显示模式、直接操作显存)04层次关系:应用程序→DOSINT21H→BIOS中断→硬件,DOS功能调用内部实际通过BIOS实现Intel8086微处理器—汇编语言面向的核心硬件对象BIOSInterruptINT10HBIOS显示服务常用功能INT10H是BIOS提供的显示服务中断,涵盖光标控制、屏幕滚动、字符显示和显示模式设置等功能。相比DOS的02H/09H功能,INT10H提供更精细的显示控制能力。Function02H设置光标位置BH=页号、DH=行号(0-24)、DL=列号(0-79),实现屏幕任意位置定位输出。常用于菜单定位、表格对齐等场景。DH·DL·BHFunction06H窗口上卷/清屏AL=0清全屏,AL=N上卷N行,配合CH/CL/DH/DL定义窗口范围。支持局部窗口滚动,实现对话框弹出效果。AL·CH·CLFunction09H显示字符及属性AL=字符、BL=颜色属性(高4位背景色、低4位前景色)、CX=重复次数。支持彩色文本输出和字符重复绘制。AL·BL·CXFunction0FH获取当前显示模式返回AL=显示模式号、AH=列数、BH=当前活动页号,用于自适应显示。程序可根据返回值动态调整输出格式。AL·AH·BHCHAPTER04汇编语言程序设计方法从顺序、分支、循环到子程序,系统掌握编程范式DesignProcess汇编语言程序设计的基本步骤规范的汇编语言程序设计遵循"问题分析→算法设计→编码实现→上机调试"四步流程。流程图在算法设计阶段至关重要,它将抽象的解题思路转化为清晰的程序控制逻辑,有效降低后续编码阶段的错误率,是高质量程序设计的基础保障。01问题分析—明确输入数据格式与范围、预期输出结果、核心处理逻辑,确定所需的数据结构DEFINE02算法设计—绘制流程图描述程序控制流,标注分支条件、循环变量和子程序接口,形成完整的逻辑蓝图DESIGN03编码实现—按分段结构组织代码,将流程图逐块翻译为汇编指令,添加注释标注每段代码的功能意图CODE04上机调试—MASM汇编生成OBJ→LINK连接生成EXE→DEBUG单步执行,设置断点验证寄存器和内存状态DEBUGAssembly·SequentialProgramming顺序程序设计与基本运算实例顺序结构是汇编程序的基本构建单元,指令按书写顺序依次执行。通过代数运算实例可掌握数据加载、算术运算和结果存储的标准编程模式,同时理解8086指令集对操作数的限制(如MUL不支持立即数),是编写正确代码的关键。顺序程序设计要点指令按线性顺序执行,无跳转和分支,适用于计算步骤固定的确定性任务线性执行MUL/DIV不支持立即数操作数,需先送入寄存器再运算MUL/DIV字节乘法结果在AX中,字乘法结果在DX:AX中,注意数据宽度DX:AX实例:计算Y=3X+5Step01数据段定义:XDB12;YDB?声明输入变量X和输出变量YDB—字节声明Step02代码段实现:MOVAL,X→MOVBL,3→MULBL→ADDAL,5→MOVY,ALMOV→MUL→ADD→MOVStep03验证:X=12时,AL=12×3=36,ADD5后AL=41,结果41存入Y,符合预期12×3+5=41ASSEMBLYLANGUAGE·BRANCHING分支程序设计与条件转移指令分支程序通过CMP比较指令和条件转移指令实现程序流的条件控制。正确区分JA/JB(无符号)与JG/JL(有符号)是编写正确分支程序的关键。01CMP比较指令执行减法但不保存结果,仅设置ZF/SF/OF/CF等标志位,为后续条件跳转提供判断依据。SUB+FLAGS02无符号数比较JA(高于跳转)、JB(低于跳转)、JAE(高于等于)、JBE(低于等于)UNSIGNED03有符号数比较JG(大于跳转)、JL(小于跳转)、JGE(大于等于)、JLE(小于等于)SIGNED04典型应用模式CMPAX,BX→JGLARGER→MOVAX,BX→LARGER:...通过比较后条件跳转实现取两数较大值。CMP→JCC→MOVCHAPTER04·ASSEMBLYLANGUAGE分支程序实例:求两数最大值通过求两数最大值的实例,展示分支程序的标准编写模式:比较→条件跳转→分支处理→结果汇聚。合理设计跳转目标使两个分支共享结果存储代码,避免代码冗余,体现汇编编程中"汇聚式"分支结构的设计智慧。DATASEGMENTADB56定义第一个有符号字节变量BDB83定义第二个有符号字节变量MAXDB?定义结果存储变量,初始未赋值CODESEGMENT01MOVAL,A→CMPAL,B→JGESTORE加载A值,与B比较,若A≥B则跳转存储02MOVAL,BA<B时执行,将B值加载到AL(分支跳过则不执行)03STORE:MOVMAX,AL两分支汇聚点,将AL中的较大值存入MAX变量Chapter4·LoopDesign循环程序设计:计数控制与条件控制循环由初始化、循环体和控制三要素构成;计数循环用CX+LOOP,条件循环用CMP+条件转移指令。计数控制循环LOOPInstruction初始化CX为循环次数,LOOP指令自动执行CX=CX−1,当CX≠0时跳转到目标标签继续循环。示例:MOVCX,10→AGAIN:ADDAX,[SI]→INCSI→INCSI→LOOPAGAIN,累加10个字数据。注意保护CX:若循环体内需要使用CX,必须先PUSHCX入栈,使用后POPCX恢复。条件控制循环CMP+ConditionalJump通过CMP+条件转移指令判断循环终止条件,如读入字符直到遇到回车(0DH)为止。示例:READ:MOVAH,1→INT21H→CMPAL,0DH→JEDONE→MOV[DI],AL→INCDI→JMPREAD适合迭代次数不确定的场景:字符串处理、数据搜索、用户交互式输入等。LOOPPROGRAMMING循环程序实例:数组元素求和数组求和是循环程序设计的经典案例,体现了指针遍历(SI变址)、计数控制(CX+LOOP)和累加运算(AX)三者的协调配合。数据定义ARRAYDB定义包含10个元素的字节数组;SUMDW?使用字型变量存储累加结果,防止溢出初始化LEASI指向数组首地址;MOVCX,10设定循环次数;XORAX,AX累加器清零循环体ADDAL,[SI]累加当前元素;ADCAH,0处理进位;INCSI指针后移循环控制LOOPAGAINCX减1,非零则跳回;MOVSUM,AX循环结束后存储结果完整汇编代码DATASEGMENT…CODESEGMENTDATASEGMENTARRAYDB23,45,67,12,89DB34,56,78,90,11SUMDW?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXLEASI,ARRAYMOVCX,10XORAX,AXAGAIN:ADDAL,[SI]ADCAH,0INCSILOOPAGAINMOVSUM,AXMOVAH,4CHINT21HCODEENDSENDSTART通过此实例可掌握汇编语言处理批量数据的标准编程模式CHAPTER04·SUBROUTINEDESIGN子程序设计:参数传递与现场保护子程序设计是汇编程序模块化的核心方法,涉及参数传递、现场保护和返回值三个关键环节。01📋寄存器传递入口参数放入约定寄存器(如AX传参),简单高效但参数多时寄存器不够用。适用于参数数量较少、调用频繁的简单子程序。AX/BX/CX/DX02💾存储器传递参数存放在约定内存变量中,适合大量数据传递,但需要共享数据段访问权限。常用于数组、缓冲区等大容量数据交换。共享数据段03📤堆栈传递CALL前PUSH参数入栈,子程序内通过BP+偏移量访问,适合多层嵌套调用场景。堆栈传递支持递归和重入调用。PUSH/BP+offset04🛡️现场保护子程序入口PUSH使用的寄存器,返回前POP恢复,格式为PUSHAX…POPAX对称配对。确保主程序寄存器状态不被破坏。PUSH↔POPCHAPTER04·汇编语言程序设计综合实例:十六进制数转ASCII显示子程序十六进制转ASCII显示子程序综合运用移位运算、分支判断和DOS功能调用,是汇编编程的典型综合案例。01ROLAX,1循环左移4次提取最高半字节,通过ANDAL,0FH屏蔽高4位取出0-15的数值。02CMPAL,9→JBEDIGIT(0-9加30H),否则ADDAL,37H(A-F加37H得41H-46H)。03调用D
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 通信中级专项试题及对应答案
- 森林火灾救援要落实以水灭火安全防范措施
- 田径短跑、身体素质练习课时教学设计-2023-2024学年高一上学期体育与健康人教版必修第一册
- 国家智慧港口示范基地建设标准
- 人教版高中生物必修三第四章第1节《种群的特征》教学设计
- 中考英语 句型转换教学设计 牛津版
- 七年级历史下册 9 宋代经济的发展教案 新人教版
- 2026人工智能行业应用场景突破与未来发展潜力评估报告
- 2026区块链技术行业市场供需分析及投资评估规划分析研究报告
- 活动与创造 跳集体舞 设计音乐贺卡 策划音乐会教学设计初中音乐九年级下册沪教版
- 《电气工程》课件
- 成人雾化吸入护理团标解读
- 叠合板施工工法
- 《做最好的班主任》课件
- 河北省社区工作者管理办法试行
- 妇科子宫内膜癌放射治疗技术操作规范
- 火力发电机组检修工程全过程要求规范化管理系统
- 护理礼仪与人际沟通PPT(高职)全套教学课件
- 骨质疏松及其药物治疗标准课件
- 中国古代文学秦汉文学
- 工地项目员工绩效考核办法
评论
0/150
提交评论