您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > 第3章 寻址方式与指令系统-2
1算术运算类指令逻辑运算与移位类指令串操作类指令控制转移类指令处理器控制类指令DOS和BIOS中断调用第3章本次课主要内容2第3章3.3.2算术运算类指令包括加、减、乘、除4种基本运算及BCD码十进制数运算等指令。算术运算指令中,除加1和减1指令外,其余均为双操作数指令;两个操作数中除源操作数可为立即数外,必须有一个操作数在寄存器;单操作数指令不能采用立即数寻址方式。3第3章加减运算在执行过程中会产生溢出:无符号数运算最高位向前产生进位或借位,表示溢出,用标志位CF=1表示。带符号数采用补码运算符号位参与运算,溢出表示运算结果发生错误,用标志位OF=1表示。4第3章除INC不影响CF标志外,其余算术指令均影响以下6个标志位。规则:无符号数运算溢出,CF=1;带符号数运算溢出,OF=1;运算结果为0,ZF=1;运算结果为负数,SF=1;运算结果低8位中有偶数个1,PF=1;操作数为BCD码,低4位出现进位,AF=1。5第3章(1)不带进位加法:ADDdst,src功能:(dst)←(dst)+(src)(2)带进位加法:ADCdst,src功能:(dst)←(dst)+(src)+CF(3)加1指令:INCopr功能:(opr)←(opr)+11.加法指令6第3章(1)不带借位减法:SUBdst,src功能:(dst)←(dst)-(src)(2)带借位减法:SBBdst,src功能:(dst)←(dst)-(src)-CF(3)减1:DECopr功能:(opr)←(opr)-1(4)求补:NEGopr将opr中内容取2的补码,相当于opr中内容按位取反末位加1。(5)比较:CMPopr1,opr2功能:(opr1)-(opr2)2.减法指令7【例2】分析以下加、减法指令操作功能。ADDAL,BL;两个字节数据相加ADDAL,[0210H];内存与寄存器字节数据相加ADD[SI],AX;寄存器与内存字数据相加INCCX;加1,(CX)←(CX)+1SUBAX,BX;减法,(AX)←(AX)-(BX)SBBAX,CX;带进位减法(AX)←(AX)-(CX)-CFDECCX;减1,(CX)←(CX)-1第3章8第3章3.乘法运算指令指令中只给出乘数,被乘数隐含给出。两个8位数相乘,被乘数放入AL,16位数乘积存到AX;两个16位数相乘,被乘数先放AX,32位乘积放DX和AX,规定DX存放高16位,AX存放低16位。9第3章(1)无符号数乘法:MULsrcsrc为字节数据,AX←(AL)×(src);src为字数据,DX、AX←(AX)×(src)(2)带符号数乘法:IMULsrc执行功能同MUL,处理的是带符号数。10第3章4.除法运算指令指令隐含使用AX和DX,源操作数为除数。(1)无符号数除法:DIVsrc被除数、除数、商和余数全部为无符号数。(2)带符号数除法:IDIVsrc被除数、除数、商和余数均为带符号数,且余数的符号位同被除数。11除数src为字节数据时,用AX除src,得到8位商存AL,8位余数存AH;除数src为字数据时,用DX、AX除src,得到16位商存AX,16位余数存DX。第3章12第3章5.符号扩展指令使数据位数加长,数据大小不改变。用操作数符号位形成另一个操作数,扩展后数据各位全0(正数)或全1(负数)。(1)字节转换为字CBW——将AL中符号位扩展到AH(2)字转换为双字CWD——将AX中符号位扩展到DX13第3章6.十进制调整指令十进制数在计算机中用二进制数表示为BCD码,对BCD码算术运算须对得到的结果进行调整,否则结果无意义。(1)组合BCD码加法、减法调整DAA;加法调整,AL中和调整为组合BCD码DAS;减法调整,AL中差调整为组合BCD码14第3章(2)非组合BCD加法、减法调整指令AAA;加法调整,AL中和调整为非组合BCD码AAS;减法调整,AL中差调整为非组合BCD码15【例3】给定寄存器内容:(AL)=28H,(BL)=69H执行指令:ADDAL,BLDAA分析指令操作结果。解:执行ADD指令后,(AL)=91H,AF=1。AL结果不符合组合BCD码要求,出现误差。执行DAA调整指令:由于AF=1,作AL←(AL)+06H调整操作,调整后AL内容为97H,符合要求;AL高四位≤09H,不必进行调整。组合BCD码加法、减法调整指令应用16第3章3.3.3逻辑运算与移位类指令1.逻辑运算指令有5条指令,可对8位或16位操作数按位运算。(1)逻辑与:ANDdst,src(2)逻辑或:ORdst,src(3)逻辑异或:XORdst,src(4)逻辑非:NOTdst(5)测试:TESTdst,src17AND指令可将操作数中特定位清0,称屏蔽。ANDAL,0FH;给定(AL)=52H,指令执行后(AL)=02H,屏蔽AL高4位。OR指令可将操作数中某些位置1。ORAL,F0H;给定(AL)=43H,指令执行后(AL)=F3H,将字节高4位置1。XORAX,AX;指令执行后累加器清0,CF=0。NOTAL;给定(AL)=01111000B,指令执行后(AL)=10000111B。TESTAL,80H;检测AL中数据是正数还是负数,D7=0时为正数,ZF=1;否则为负数,ZF=0。逻辑运算指令应用特点18第3章2.移位指令对字节或字数据各位进行算术移位、逻辑移位或循环移位。移位指令:SHL/SAL/SHR/SARdst,1/CL循环移位指令:ROL/ROR/RCL/RCRdst,1/CL移位次数为1时取1,移位次数值超过1时存放在CL中。19CFM算术右移SARCFM逻辑右移SHR0CFM算术左移SAL0CFM逻辑左移SHL0CF带进位循环右移RCRCF带进位循环左移RCLCF循环右移RORCF循环左移ROL(注:CF为进位位、M为符号位)P66:图3-5移位指令操作功能示意20程序设计中,常用逻辑左移和逻辑右移指令实现无符号数乘2或除2操作。带符号数乘2或除2运算,可通过算术左移和算术右移指令实现。SHLAL,1;将AL中的内容向左移动1位,相当于(AL)×2MOVCL,4;移位次数送CLSHLAL,CL;将AL中的内容向左移动4位,空出位补0第3章21第3章3.3.4串操作类指令串传送(MOVS)串比较(CMPS)串搜索(SCAS)串存取(LODS、STOS)串操作指令前可加重复操作前缀REP,使指令操作重复。每次操作后自动修改地址指针。22第3章3.3.5控制转移类指令程序改变流程时可修改IP和CS值。通过控制转移指令实现。(1)改变IP内容,转移目标位置和转移指令在同一代码段,称段内转移。(2)改变IP又改变CS内容,转移目标位置和转移指令不在同一代码段,称段间转移。分无条件转移指令、条件转移指令、循环控制指令、子程序调用和返回指令4类。23第3章1.无条件转移指令控制程序转移到指定位置,指令中给出转移目标地址,有以下5种形式:JMPSHORTopr;段内直接短转移JMPNEARPTRopr;段内直接近转移JMPWORDPTRopr;段内间接转移JMPFARPTRopr;段间直接转移JMPDWORDPTRopr;段间间接转移24第3章2.条件转移指令测试上一条指令所设置的条件码(状态标志位),满足条件转移到指定位置执行,不满足条件顺序执行下一条指令。根据判断标志位,归纳为3类(参见教材):判断单个标志位状态;比较无符号数高低;比较带符号数大小。这3类指令使用前,应有比较CMP、测试TEST、加减或逻辑运算等指令。25【例4】内存中有两个无符号字节数据NUM1和NUM2,将大数送MAX单元。解:根据题目要求,程序段设计如下:MOVAL,NUM1;取数据NUM1送ALCMPAL,NUM2;AL与数据NUM2比较JANEXT;若NUM1>NUM2转NEXTMOVAL,DAT2;否则NUM2数据送ALNEXT:MOVMAX,AL;将AL中保存的大数送MAX单元HLT;暂停本题若比较两个带符号数大小,程序中条件转移指令应采用JG。26第3章3.循环控制指令循环控制转向地址在以当前IP内容为中心的-128~+127范围内,采用CX为计数器,每执行一次循环,CX内容减1,直到为零结束循环。(1)循环控制指令:——LOOP(2)为零或相等时循环控制指令:——LOOPZ/LOOPE(3)不为零或不相等时循环控制指令:——LOOPNZ/LOOPNE27【例5】用循环程序实现S=1+2+3+…+100计算。程序段如下:MOVCX,100;数据长度送CX计数器XORAL,AL;AL寄存器清零MOVBL,1;BL赋初值为1NEXT:ADDAL,BL;(AL)←(AL)+(BL)INCBL;BL加1LOOPNEXT;(CX)-1≠0转NEXTHLT;否则,累加完毕,结果保存在AL中,程序暂停第3章28第3章4.子程序调用和返回指令(1)子程序调用指令指令格式:CALLNEARPTRopr;段内调用CALLFARPTRopr;段间调用(2)子程序返回指令RET指令格式:RET或:RET表达式29【例6】在主程序中执行一条子程序段内调用语句。调用格式:MAINPROCFAR;定义主程序MOVAX,DATA;DS初始化MOVDS,AX……CALLDISPLAY;调用子程序……DISPLAYPROCNEAR;定义子程序PUSHAX;保护现场PUSHBX……RET;子程序返回30第3章3.3.6处理器控制类指令主要用于:修改状态标志位;控制CPU功能,如使CPU暂停、等待、空操作等。31第3章3.4DOS和BIOS中断调用3.4.1DOS功能调用可完成对文件、设备、内存的管理。1.调用方法(1)入口参数送指定寄存器。(2)子功能号送AH寄存器。(3)用INT21H指令调用,执行相应操作。32第3章2.常用功能调用(1)AH=01H——带显示的键盘输入。(2)AH=02H——从显示器上输出单个字符。(3)AH=09H——在显示器上输出字符串。(4)AH=0AH——字符串输入到缓冲区。33第3章【例7】从键盘输入一个字符并在屏幕上显示输出,以键入字符‘$’作为停止操作的标志。程序段如下:START:MOVAH,01H;输入单个字符,存入ALINT21HCMPAL,'$';判断是否是结束标志JZNEXT;若是则转NEXTMOVDL,AL;输出DL中放入单个字符MOVAH,02H;显示输出字符INT21HJMPSTARTNEXT:HLT34第3章3.4.2BIOS中断调用BIOS(基本输入/输出系统)占用主板上8KB的ROM区域,又称ROMBIOS。BIOS提供系统加电自检、引导装入及对键盘、磁盘、磁带、显示器、打印机、异步串行通信口等的控制功能。用中断指令INTn直接调用。35指令操作数按存放位置有立即数、寄存器操作数、存储器操作数和输入/输出端口操作数等。8086有立即数寻址、寄存器寻址、直接寻址、寄存器间接寻址、寄存器相对寻址、基址变址寻址和相对基址变址寻址等方式。第3章本章小结36指令系统分为数据传送、算术运算、逻辑运算与移位、串操作、控制转移、处理器控制等6大类指令。应从指令格式、功能、操作数个数及寻址方式、对标志位的影响、应用场合及约束条件等方面理解指令。本章小结第3章37本章思考与练习题解析——P79第3章38本章内容到此结束谢谢!请预习4.1-4.2节第3章
本文标题:第3章 寻址方式与指令系统-2
链接地址:https://www.777doc.com/doc-3420772 .html