《汇编语言讲义第三章 80x86的指系统1.ppt》由会员分享,可在线阅读,更多相关《汇编语言讲义第三章 80x86的指系统1.ppt(97页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、3.3 IBM PC机的指令系统机的指令系统教学重点重点掌握常用指令功能及应用常用传送指令加减法指令逻辑运算和移位指令控制转移指令字符(串)输入输出功能调用8086指令系统概述Intel 8086Intel 8086指令系统共有指令系统共有117117条基本指令,可条基本指令,可分成分成6 6个功能组个功能组 数据传送类指令数据传送类指令 算术运算类指令算术运算类指令 逻辑指令逻辑指令 串操作类指令串操作类指令 控制转移类指令控制转移类指令 处理机控制类指令处理机控制类指令学习指令的注意事项指令的功能指令的功能该指令能够实现何种操作。通常指令助记该指令能够实现何种操作。通常指令助记符就是指令功
2、能的英文单词或其缩写形式符就是指令功能的英文单词或其缩写形式指令支持的寻址方式指令支持的寻址方式该指令中的操作数可以采用何种该指令中的操作数可以采用何种寻址方式寻址方式指令对标志的影响指令对标志的影响该指令执行后是否对各个标志位有该指令执行后是否对各个标志位有影响,以及如何影响影响,以及如何影响其他方面其他方面该指令其他需要特别注意的地方,如指令执该指令其他需要特别注意的地方,如指令执行时的约定设置、必须预置的参数、隐含使用的寄存器等行时的约定设置、必须预置的参数、隐含使用的寄存器等汇编语言指令格式由由4 4部分组成:部分组成:标号标号:指令助记符指令助记符 目的操作数目的操作数,源操作数源操
3、作数;注释;注释 标号表示该指令在主存中的逻辑地址标号表示该指令在主存中的逻辑地址 每个指令助记符就代表一种指令每个指令助记符就代表一种指令 目的和源操作数表示参与操作的对象目的和源操作数表示参与操作的对象 注释是对该指令或程序段功能的说明注释是对该指令或程序段功能的说明学习提示 全面而准确地理解每条指令的功能和应用,是编写汇编语言程序的关键一、数据传送类指令数据传送是计算机中最基本、最重要的一种操作数据传送是计算机中最基本、最重要的一种操作传送指令也是最常使用的一类指令传送指令也是最常使用的一类指令传送指令把数据从一个位置传送到另一个位置传送指令把数据从一个位置传送到另一个位置除标志寄存器传
4、送指令外,均除标志寄存器传送指令外,均不影响标志不影响标志位位重点掌握重点掌握MOV XCHG XLAT PUSH POP LEAMOV XCHG XLAT PUSH POP LEA数据传送指令数据传送指令:通用数据传送指令通用数据传送指令 MOV、XCHG、XLAT 堆栈操作指令堆栈操作指令 PUSH、POP 标志寄存器传送指令标志寄存器传送指令 LAHF、SAHF、PUSHF、POPF 地址传送指令地址传送指令 LEA、LDS、LES 输入输出指令输入输出指令 IN、OUT1.通用数据传送指令提供方便灵活的通用传送操作有3条指令MOVMOVXCHGXCHGXLATXLATMOVMOVXCH
5、GXCHGXLATXLAT传送指令MOV(move)把一个字节或字的操作数从源地址传送至目的地把一个字节或字的操作数从源地址传送至目的地址址MOV MOV reg/mem,immreg/mem,imm;立即数送寄存器或主存;立即数送寄存器或主存MOVMOV例例1MOV MOV reg/mem/seg,regreg/mem/seg,reg;寄存器送(段)寄存器或主存;寄存器送(段)寄存器或主存例例2MOV MOV reg/seg,memreg/seg,mem;主存送(段)寄存器;主存送(段)寄存器例例3MOV MOV reg/mem,segreg/mem,seg;段寄存器送寄存器或主存;段寄存器
6、送寄存器或主存例例4MOV指令传送功能MOV也并非任意传送立即数立即数段寄存器段寄存器CS DS ES SSCS DS ES SS通用寄存器通用寄存器AX BX CX DXAX BX CX DXBP SP SI DIBP SP SI DI存存储储器器非法传送种种两个操作数的类型不一致例如源操作数是字节,而目的操作数是字;或例如源操作数是字节,而目的操作数是字;或相反相反两个操作数不能都是存储器传送指令很灵活,但主存之间的直接传送却不传送指令很灵活,但主存之间的直接传送却不允许允许段寄存器的操作有一些限制段寄存器属专用寄存器,对他们的操作能力有段寄存器属专用寄存器,对他们的操作能力有限限示例示例
7、示例示例示例示例示例示例示例示例示例示例MOVSX带符号扩展传送指令(带符号扩展传送指令(386及后继机型用)及后继机型用)传送指令:传送指令:MOVSX DST,SRC 执行操作:执行操作:(DST)符号扩展符号扩展(SRC)MOVSX reg1,reg2MOVSX reg,mem注意注意:*原操作数可以是原操作数可以是8位或位或16位,目的操作数必须是位,目的操作数必须是16位或位或32位寄存器位寄存器(3)MOVZX带零扩展传送指令(带零扩展传送指令(386及后继机型用)及后继机型用)*不管源操作数的符号位是否为不管源操作数的符号位是否为1,高位均扩展为零,高位均扩展为零例:例:MOVS
8、X EAX,CL MOVSX EAX,EDI例:例:MOVZX DX,AL例:例:MOVZX EAX,DATA交换指令XCHG(exchange)把两个地方的数据进行互换寄存器与寄存器之间对换数据寄存器与寄存器之间对换数据寄存器与存储器之间对换数据寄存器与存储器之间对换数据不能在存储器与存储器之间对换数据不能在存储器与存储器之间对换数据XCHGXCHGXCHG XCHG reg,reg/memreg,reg/mem;regreg reg/memreg/mem例例6例例5换码指令执行前:换码指令执行前:在主存建立一个在主存建立一个字节量表格字节量表格,内含要转换成的目的代码,内含要转换成的目的代
9、码表格首地址表格首地址存放于存放于BXBX,ALAL存放相对表格首地址的存放相对表格首地址的位移量位移量换码指令执行后:换码指令执行后:将将ALAL寄存器的内容转换为寄存器的内容转换为目标代码目标代码换码指令XLAT(translate)将将BXBX指定的缓冲区中、指定的缓冲区中、ALAL指定的位移处的一个字指定的位移处的一个字节数据取出赋给节数据取出赋给ALALXLATXLATXLATXLAT;alds:bx+alalds:bx+al 例例72.堆栈操作指令堆栈是一个堆栈是一个“后进先出后进先出FILOFILO”(或说(或说“先进后出先进后出FILOFILO”)的主存区域,位)的主存区域,位
10、于堆栈段中;于堆栈段中;SSSS段寄存器段寄存器记录其段地址记录其段地址堆栈只有一个出口,即当堆栈只有一个出口,即当前栈顶;用前栈顶;用堆栈指针寄存堆栈指针寄存器器SPSP指定指定栈顶是地址较小的一端栈顶是地址较小的一端(低端),栈底不变(低端),栈底不变堆栈的操作堆栈只有两种基本操作:进栈和出栈,对应两条指令PUSH和POPPUSHPUSH;进栈指令先使;进栈指令先使堆栈指针堆栈指针SPSP减减2 2,然后把一个字操然后把一个字操作数存入堆栈顶作数存入堆栈顶部部POPPOP;出栈指令把栈顶;出栈指令把栈顶的一个字传送至指的一个字传送至指定的目的操作数,定的目的操作数,然后堆栈指针然后堆栈指针
11、SPSP加加2 2进栈指令PUSHPUSHPUSHpush axpush axpush 2000hpush 2000hPUSH r16/m16/segPUSH r16/m16/seg;SPSPSPSP2 2;SS:SPr16/m16/segSS:SPr16/m16/seg出栈指令POPpop axpop axpop 2000hpop 2000hPOP r16/m16/segPOP r16/m16/seg;r16/m16/segSS:SPr16/m16/segSS:SP;SPSPSPSP2 2POPPOP堆栈的特点堆栈操作的单位是字,进栈和出栈只对字量堆栈操作的单位是字,进栈和出栈只对字量字量数
12、据从栈顶压入和弹出时,都是低地址字节送字量数据从栈顶压入和弹出时,都是低地址字节送低字节,高地址字节送高字节低字节,高地址字节送高字节堆栈操作遵循先进后出原则,但可用存储器寻址方堆栈操作遵循先进后出原则,但可用存储器寻址方式随机存取堆栈中的数据式随机存取堆栈中的数据堆栈常用来堆栈常用来 临时存放数据临时存放数据 传递参数传递参数 保存和恢复寄存器保存和恢复寄存器例例83.标志传送指令标志寄存器传送指令用来传送标志寄存器FLAGS的内容标志位操作指令直接对CF、DF、IF标志进行复位或置位标志寄存器传送标志寄存器传送指令用来传送标志寄存器FLAGS的内容,方便进行对各个标志位的直接操作有2对4条
13、指令低低8 8位传送:位传送:LAHFLAHF和和SAHFSAHF1616位传送:位传送:PUSHFPUSHF和和POPFPOPF标志低字节进出AH指令LAHFLAHF;AHFLAGSAHFLAGS的低字节的低字节LAHFLAHF指令将标志寄存器指令将标志寄存器的低字节送寄存器的低字节送寄存器AHAHSF/ZF/AF/PF/CFSF/ZF/AF/PF/CF状态标状态标志位分别送入志位分别送入AHAH的第的第7/6/4/2/07/6/4/2/0位,而位,而AHAH的的第第5/3/15/3/1位任意位任意SAHFSAHF;FLAGSFLAGS的低字节的低字节AHAHSAHFSAHF将将AHAH寄存
14、器内容送寄存器内容送FLAGSFLAGS的低字节的低字节用用AHAH的第的第7/6/4/2/07/6/4/2/0位位相应设置相应设置SF/ZF/AF/SF/ZF/AF/PF/CFPF/CF标志标志标志寄存器进出堆栈指令PUSHFPUSHF;SPSPSPSP2 2;SS:SPFLAGSSS:SPFLAGSPUSHFPUSHF指令将标志寄存指令将标志寄存器的内容压入堆栈,器的内容压入堆栈,同时栈顶指针同时栈顶指针SPSP减减2 2POPFPOPF;FLAGSSS:SPFLAGSSS:SP;SPSPSPSP2 2POPFPOPF指令将栈顶字单元指令将栈顶字单元内容送标志寄存器,同内容送标志寄存器,同
15、时栈顶指针时栈顶指针SPSP加加2 2例例9标志位操作(P104)标志位操作指令直接对CF、DF、IF标志进行复位或置位,常用于特定的情况对标志位进行设置的指令CLC STC CMCCLC STC CMC(complement carrycomplement carry)CLD STDCLD STDCLI STICLI STI进位标志操作指令用于任意设置进位标志CLC;复位进位标志:;复位进位标志:CF0CF0STC;置位进位标志:;置位进位标志:CF1CF1CMC;求反进位标志:;求反进位标志:CFCFCFCF方向标志操作指令串操作指令中,需要使用CLD;复位方向标志:DF0 每次操作使变址
16、寄存器增大STD;置位方向标志:DF1每次操作使变址寄存器增大中断标志操作指令在编写中断服务程序时,需要控制可屏蔽中断的允许和禁止CLI;复位中断标志:;复位中断标志:IF0IF0STI;置位中断标志:;置位中断标志:IF1IF14.地址传送指令地址传送指令将存储器单元的逻辑地址送至指定的寄存器有效地址传送指令有效地址传送指令 LEALEA指针传送指令指针传送指令 LDSLDS和和LESLES注意不是获取存储器单元的内容有效地址传送指令LEA(load EA)将存储器操作数的有效地址传送至指定的16位寄存器中例例10LEA r16,memLEA r16,mem;r16memr16mem的有效地
17、址的有效地址EAEALEALEA指针传送指令LDS r16,memLDS r16,mem;r16memr16mem,;DSmem+2DSmem+2LDSLDS指令将主存中指令将主存中memmem指定的字送至指定的字送至r16r16,并将并将memmem的下一字送的下一字送DSDS寄存器寄存器LES r16,memLES r16,mem;r16memr16mem,;ESmem+2ESmem+2LESLES指令将主存中指令将主存中memmem指定的字送至指定的字送至r16r16,并将并将memmem的下一字送的下一字送ESES寄存器寄存器例例115.输入输出指令80868086通过输入输出指令与外
18、设进行数据交换;通过输入输出指令与外设进行数据交换;呈现给程序员的外设是呈现给程序员的外设是端口端口(PortPort)即)即I/OI/O地地址址80868086用于寻址外设端口的地址线为用于寻址外设端口的地址线为1616条,端条,端口最多为口最多为2 216166553665536(64K64K)个,端口号为)个,端口号为0000H0000HFFFFHFFFFH每个端口用于传送一个字节的外设数据每个端口用于传送一个字节的外设数据输入输出寻址方式8086的端口有64K个,无需分段,设计有两种寻址方式vv直接寻址直接寻址:只用于寻址:只用于寻址00H00HFFHFFH前前256256个端口,个端
19、口,操作数操作数i8i8表示端口号表示端口号vv间接寻址间接寻址:可用于寻址全部:可用于寻址全部64K64K个端口,个端口,DXDX寄存寄存器的值就是端口号器的值就是端口号对大于FFH的端口只能采用间接寻址方式输入指令IN将外设数据传送给将外设数据传送给CPUCPU内的内的AL/AXAL/AXIN AL,i8IN AL,i8;字节输入:;字节输入:ALI/OALI/O端口(端口(i8i8直接寻址)直接寻址)IN AL,DXIN AL,DX;字节输入:;字节输入:ALI/OALI/O端口(端口(DXDX间接寻址)间接寻址)IN AX,i8IN AX,i8;字输入:;字输入:AXI/OAXI/O端
20、口(端口(i8i8直接寻址)直接寻址)IN AX,DXIN AX,DX;字输入:;字输入:AXI/OAXI/O端口(端口(DXDX间接寻址)间接寻址)ININ例例12输出指令OUT将将CPUCPU内的内的AL/AXAL/AX数据传送给外设数据传送给外设OUT i8,ALOUT i8,AL;字节输出:;字节输出:I/OI/O端口端口ALAL(i8i8直接寻址)直接寻址)OUT DX,ALOUT DX,AL;字节输出:;字节输出:I/OI/O端口端口ALAL(DXDX间接寻址)间接寻址)OUT i8,AXOUT i8,AX;字输出:;字输出:I/OI/O端口端口AXAX(i8i8直接寻址)直接寻址
21、)OUT DX,AXOUT DX,AX;字输出:;字输出:I/OI/O端口端口AXAX(DXDX间接寻址)间接寻址)OUTOUT例例13二、算术运算类指令四则运算是计算机经常进行的一种操作。算术运四则运算是计算机经常进行的一种操作。算术运算指令实现二进制(和十进制)数据的四则运算算指令实现二进制(和十进制)数据的四则运算请注意算术运算类指令请注意算术运算类指令对标志的影响对标志的影响 掌握:掌握:ADD/ADC/INCADD/ADC/INC、SUB/SBB/DEC/NEG/CMPSUB/SBB/DEC/NEG/CMP 熟悉:熟悉:MUL/IMULMUL/IMUL、DIV/IDIVDIV/IDI
22、V 理解:理解:CBW/CWDCBW/CWD、自学:自学:DAA/DASDAA/DAS、AAA/AAS/AAM/AADAAA/AAS/AAM/AAD加法指令ADDADDADD指令将源与目的操作数相加,结果送到目的指令将源与目的操作数相加,结果送到目的操作数操作数ADDADD指令按状态标志的定义相应设置指令按状态标志的定义相应设置ADDADDADD reg,imm/reg/memADD reg,imm/reg/mem;regregregregimm/reg/memimm/reg/memADD mem,imm/regADD mem,imm/reg;memmemmemmemimm/regimm/re
23、g例例1 a带进位加法指令ADCADCADC指令将源与目的操作数相加,再加上进位指令将源与目的操作数相加,再加上进位CFCF标标志,结果送到目的操作数志,结果送到目的操作数ADCADC指令按状态标志的定义相应设置指令按状态标志的定义相应设置ADCADC指令主要与指令主要与ADDADD配合,实现多精度加法运算配合,实现多精度加法运算ADCADCADC reg,imm/reg/memADC reg,imm/reg/mem;regregregregimm/reg/memimm/reg/memCFCFADC mem,imm/regADC mem,imm/reg;memmemmemmemimm/regi
24、mm/regCFCF例例1b增量指令INC(increment)INC指令对操作数加1(增量)INC指令不影响进位CF标志,按定义设置其他状态标志INCINCINC reg/memINC reg/mem;reg/memreg/memreg/memreg/mem1 1inc bxinc bxinc byte ptr bxinc byte ptr bx加法指令对加法指令对条件标志位条件标志位的影响的影响CF 位表示位表示 无符号数无符号数 相加的溢出。相加的溢出。OF 位表示位表示 带符号数带符号数 相加的溢出。相加的溢出。1 结果为负结果为负0 否则否则SF=1 结果为结果为00 否则否则ZF=
25、1 和的最高有效位和的最高有效位 有有 向高位的进位向高位的进位0 否则否则CF=1 两个操作数符号相同,而结果符号与之相反两个操作数符号相同,而结果符号与之相反0 否则否则OF=举例举例:n=8 bit 带符号数带符号数(-128127),无符号数无符号数(0255)0 0 0 0 0 1 0 0 +0 0 0 0 1 0 1 1 0 0 0 0 1 1 1 1带:带:(+4)+(+11)=+15 OF=0无:无:4+11=15 CF=0带符号数和无符号数都不溢出带符号数和无符号数都不溢出 0 0 0 0 1 0 0 1 +0 1 1 1 1 1 0 0 1 0 0 0 0 1 0 1 带带
26、:(+9)+(+124)=-123 OF=1 无无:9+124=133 CF=0带符号数溢出带符号数溢出无符号数溢出无符号数溢出 0 0 0 0 0 1 1 1 +1 1 1 1 1 0 1 1 1 0 0 0 0 0 0 1 0带:带:(+7)+(-5)=+2 OF=0无:无:7+251=2 CF=1带符号数和无符号数都溢出带符号数和无符号数都溢出 1 0 0 0 0 1 1 1 +1 1 1 1 0 1 0 1 1 0 1 1 1 1 1 0 0带:带:(-121)+(-11)=+124 OF=1无:无:135+245=124 CF=1减法指令SUB(subtract)SUBSUB指令将目
27、的操作数减去源操作数,结果送到指令将目的操作数减去源操作数,结果送到目的操作数目的操作数SUBSUB指令按照定义相应设置状态标志指令按照定义相应设置状态标志SUBSUBSUB reg,imm/reg/memSUB reg,imm/reg/mem;regregregregimm/reg/memimm/reg/memSUB mem,imm/regSUB mem,imm/reg;memmemmemmemimm/regimm/reg例例2a带借位减法指令SBBSBBSBB指令将目的操作数减去源操作数,再减去借位指令将目的操作数减去源操作数,再减去借位CFCF(进位),结果送到目的操作数。(进位),结果
28、送到目的操作数。SBBSBB指令按照定义相应设置状态标志指令按照定义相应设置状态标志SBBSBB指令主要与指令主要与SUBSUB配合,实现多精度减法运算配合,实现多精度减法运算SBBSBBSBB reg,imm/reg/memSBB reg,imm/reg/mem;regregregregimm/reg/memimm/reg/memCFCFSBB mem,imm/regSBB mem,imm/reg;memmemmemmemimm/regimm/regCFCF例例2b减量指令DEC(decrement)DEC指令对操作数减1(减量)DEC指令不影响进位CF标志,按定义设置其他状态标志DECDE
29、CDEC reg/memDEC reg/mem;reg/memreg/memreg/memreg/mem1 1dec cxdec cxdec word ptr sidec word ptr si INC指令和指令和DEC指令都是单操作数指令指令都是单操作数指令 主要用于对计数器和地址指针的调整主要用于对计数器和地址指针的调整求补指令NEG(negative)NEGNEG指令对操作数执行求补运算:将操作数按位指令对操作数执行求补运算:将操作数按位取反后加取反后加1 1NEGNEGNEG reg/memNEG reg/mem;reg/mem0reg/mem0reg/memreg/mem例例3比较指
30、令CMP(compare)CMPCMP指令将目的操作数减去源操作数,按照定义指令将目的操作数减去源操作数,按照定义相应设置状态标志相应设置状态标志CMPCMP指令执行的功能与指令执行的功能与SUBSUB指令相同,但结果不指令相同,但结果不回送目的操作数回送目的操作数CMP reg,imm/reg/memCMP reg,imm/reg/mem;regregimm/reg/memimm/reg/memCMP mem,imm/regCMP mem,imm/reg;memmemimm/regimm/reg例例4CMPCMP减法指令对条件标志位(减法指令对条件标志位(CF/OF/ZF/SF)的影响:)的
31、影响:CF 位表示位表示 无符号数无符号数 减法的溢出。减法的溢出。OF 位表示位表示 带符号数带符号数 减法的溢出。减法的溢出。1 被减数的最高有效位被减数的最高有效位 有有 向高位的借位向高位的借位0 否则否则CF=1 两个操作数符号相反,而结果的符号与减数相同两个操作数符号相反,而结果的符号与减数相同0 否则否则OF=1 减法转换为加法运算时减法转换为加法运算时 无无 进位进位0 否则否则CF=或或NEG 指令对指令对CF/OF的影响的影响0 操作数为操作数为01 否则否则CF=1 操作数为操作数为-128(字节运算)(字节运算)或或 操作数为操作数为-32768(字运算)(字运算)0
32、否则否则 OF=乘法指令MUL r8/m8MUL r8/m8;无符号字节乘法;无符号字节乘法;AXALAXALr8/m8r8/m8MUL r16/m16MUL r16/m16;无符号字乘法;无符号字乘法;DX.AXAXDX.AXAXr16/m16r16/m16IMUL r8/m8IMUL r8/m8;有符号字节乘法;有符号字节乘法;AXALAXALr8/m8r8/m8IMUL r16/m16IMUL r16/m16;有符号字乘法;有符号字乘法;DX.AXAXDX.AXAXr16/m16r16/m16例例5说明说明说明说明除法指令DIV r8/m8DIV r8/m8;无符号字节除法:;无符号字节
33、除法:ALAXALAXr8/m8r8/m8的商,的商,AhAXAhAXr8/m8r8/m8的余数的余数DIV r16/m16DIV r16/m16;无符号字除法:;无符号字除法:;AXDX.AXAXDX.AXr16/m16r16/m16的商,的商,DXDX.AXDXDX.AXr16/m16r16/m16的余数的余数IDIV r8/m8IDIV r8/m8;有符号字节除法:;有符号字节除法:ALAXALAXr8/m8r8/m8的商,的商,AhAXAhAXr8/m8r8/m8的余数的余数IDIV r16/m16IDIV r16/m16;有符号字除法:;有符号字除法:;AXDX.AXAXDX.AXr
34、16/m16r16/m16的商,的商,DXDX.AXDXDX.AXr16/m16r16/m16的余数的余数例例6说明说明说明说明符号扩展指令CBW;ALAL的符号扩展至的符号扩展至AHAH;如;如ALAL的最高有效位是的最高有效位是0 0,则,则AHAH0000;ALAL的最高有效位为的最高有效位为1 1,则,则AHAHFFHFFH。ALAL不变不变CWD;AXAX的符号扩展至的符号扩展至DXDX;如;如AXAX的最高有效位是的最高有效位是0 0,则,则DXDX0000;AXAX的最高有效位为的最高有效位为1 1,则,则DXDXFFFFHFFFFH。AXAX不变不变什么是什么是符号扩展符号扩展
35、符号扩展指令常用于获得倍长的数据符号扩展指令常用于获得倍长的数据 不影响标志位不影响标志位例例7例例8十进制调整指令qq压缩压缩BCDBCD码就是通常的码就是通常的84218421码;它用码;它用4 4个二进制个二进制位表示一个十进制位,一位表示一个十进制位,一个字节可以表示两个十进个字节可以表示两个十进制位,即制位,即00009999qq非压缩非压缩BCDBCD码用码用8 8个二进个二进制位表示一个十进制位,制位表示一个十进制位,只用低只用低4 4个二进制位表示个二进制位表示一个十进制位一个十进制位0 09 9,高,高4 4位任意,通常默认为位任意,通常默认为0 0十进制数调整指令对二进制运
36、算的结果进行十进十进制数调整指令对二进制运算的结果进行十进制调整,以得到十进制的运算结果制调整,以得到十进制的运算结果分成压缩分成压缩BCDBCD码和非压缩码和非压缩BCDBCD码调整码调整BCD码(Binary Coded Decimal)二进制编码的十进制数:一位十进制数用4位二进制编码来表示8086支持压缩BCD码和非压缩BCD码的调整运算真值真值8 86464二进制编码二进制编码08H08H40H40H压缩压缩BCDBCD码码08H08H64H64H非压缩非压缩BCDBCD码码08H08H0604H0604H(1)压缩的)压缩的BCD码调整指令码调整指令 DAA 加法的十进制调整指令加
37、法的十进制调整指令 DAS 减法的十进制调整指令减法的十进制调整指令 (2)非压缩的)非压缩的BCD码调整指令码调整指令 AAA 加法的加法的ASCII码调整指令码调整指令 AAS 减法的减法的ASCII码调整指令码调整指令 AAM 乘法的乘法的ASCII码调整指令码调整指令 AAD 除法的除法的ASCII码调整指令码调整指令此节学习内容详细解释可查阅附录此节学习内容详细解释可查阅附录习题设X、Y、Z、V均为16位带符号数,分别存放在X、Y、Z、V存储单元中,阅读如下程序段,得出它的运算公式,并说明运算结果存于何处?XYZV65F302 0024E00500习题:习题:mov ax,Ximul
38、 Ymov cx,axmov bx,dxmov ax,Zcwdadd cx,axadc bx,dx习题:习题:sub cx,540sub cx,540sbbsbb bx,0 bx,0movmov ax,Vax,Vcwdcwdsub sub ax,cxax,cxsbbsbb dx,bxdx,bxidividiv X X例:例:x、y、z均为双精度数,分别存放在地址为均为双精度数,分别存放在地址为X,X+2;Y,Y+2;Z,Z+2的存储单元中,用指令序列实现的存储单元中,用指令序列实现 w x+y+24-z,并用,并用W,W+2单元存放单元存放w。MOV AX,X MOV DX,X+2 ADD AX,Y ADC DX,Y+2 ;x+y ADD AX,24 ADC DX,0 ;x+y+24 SUB AX,Z SBB DX,Z+2 ;x+y+24-z MOV W,AX MOV W+2,DX ;结果存入结果存入W,W+2单元单元