




已阅读5页,还剩36页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1,算术运算(Arithmetic)指令(1),ADD(Addition)加法(dest)(dest)+(src)ADDdest,src;8位/16位操作数,影响FLAGSADDAX,BX;ADDCL,10H;ADDSP,2;ADD2000H,AL;ADDWORDPTRBX,20例AL=7EH(01111110B)AH=5BH(01011011B);ADDAL,AHAL=D9H(11011001B)SF=1,CF=0ZF=0;AF=1;PF(EVEN)=0;OF=1;CF=1无符号数进位(256/65536)OF=1有符号数加溢出(-128127/-3276832767),2,算术运算(Arithmetic)指令(2),ADC(ADDwithCarry)(dest)(dest)+(src)+(CF)例:MOVBX,OFFSETFIRST;多位数连加:LHMOVSI,OFFSETSECONDMOVAX,SIADDBX,AXMOVAX,SI+2ADCBX+2,AX;类似P77例四字节LH逐个ADC,INC(Incrementby1)(dest)(dest)+1加一操作INCAX;INCDL;INCWORDPTRES:2000HINCBYTEPTRBX;INCWORDPTRCS:DI+20,?问题1:运算符专用指令:目标操作数加1,?问题2:如何在二进制运算基础上实现十进制BCD运算指令,3,算术运算(Arithmetic)指令(3),AAA*(ASCIIadjustforAddition)非压缩BCD加法调整(单字节)只对UnpackedBCD(00-09H)有意义;隐含为:AL,AH(AH:0008,AL:0009)等效:IF(AL)(AH=1,AL=5)连加?,打*指令一般了解,4,算术运算(Arithmetic)指令(4),DAA*(DecimaladjustforAddition)压缩BCD加法调整(单字节)只对PackedBCD(00-99H)有意义;等效:IF(AL)(CF=1=AF,AL=27H,可连加),打*指令一般了解,5,算术运算(Arithmetic)指令(5),减法乘法除法SUB/SBB/DEC/MUL/AAMDIV/AADAAS/DAS*(调整)IMUL(有符号乘)IDIV(有符号除)减法:CF=1借位SUBAL,CH;SBBAX,BX;SUBBYTEPTR2000H,20SBBAX,BP+1000DECSI;DECWORDPTR2000HDECBYTEPTRSI;,打*指令一般了解,6,算术运算(Arithmetic)指令(6),NEG(Negate)8位/16位求补(改变符号)绝对值不变NEGdest;(dest)0-(dest)改F例:NEGAL;NEGBX;NEGBYTEPTRCS:2000H例:LEASI,AREA1LEADI,AREA2MOVCX,100CHECK:MOVAL,SIORAL,ALJNSNEXTNEGALNEXT:DI,ALINCSIINCDIDECCXJNZCHECK,7,算术运算(Arithmetic)指令(6),CMP(Compare)(dest)-(src)改F(CSOF)例:CMPAL,CH;CMPAX,BX;CMPBYTEPTR2000H,20JCNEXT;利用FLAGS结果,无符号数比较JGNEXT;有符号数比较:满足SFOF=0时大于,(1)两个无符号数比较用CFCF=0无借位CF=1有借位(2)两个有符号数比较用SFOF=0:SF=0为正数SF=1为负数OF=1:SF=1为正数SF=0为负数,8,比较两数大小LEABX,DATAMOVAL,BXINCBXCMPAL,BXJNCDONEMOVAL,BXDONE:MOVMAX,AL,9,算术运算(Arithmetic)指令(7),16位乘法MULCX;MULWORDPTRBX默认AX*OPRD积=DX(高16位)|AX(低16位)8位乘法MULCL;MULBYTEPTRBX+1默认AL*OPRD积=AX16位除法DIVCX;DIVWORDPTRBX默认被除数DX(高16位)|AX(低16位)/OPRD(16位)结果DX=余数AX=商8位除法DIVCL;DIVBYTEPTRBX+1默认AX/OPRD(字节)结果AH=余数AL=商,注意:除0/溢出(字节除:商255OR字:商65535)除零中断,10,算术运算(Arithmetic)指令(八),IMUL/IDIV有符号数乘/除法CBW/CWD符号扩展AAM*(ASCIIadjustforMultiply)AL(100)转换成UnpackedBCD(00-09H)到AX等效:AH(AL)/10;(商);(AL)(AL)%10(余数)SF,ZF,PF单字节!AAD*(ASCIIadjustforDivide):UPKed-BCDAX:AL=AH*10+AL;AH=0单字节!(AXHEX)注意:AAD-DIV(B)-AAM,打*指令一般了解,11,逻辑运算与移位(LogicalANDAX,BX;ANDCL,08HORdest,src;ORAL,55HH;ORWORDPTRBX,DHXORdest,src(logicalExclsiveor)XORAX,AX;XORCL,BXNOTdest;B:dest=255-dest;W:dest=65535-destNOTAL;NOTWORDPTRBXNOTBYTEPTRES:2000H,12,逻辑运算与移位(LogicalBIT7=1ORCL,04H复位(0)ANDAL,7FH;BIT7=0TESTdest,src逻辑与测试TESTAL,80H;TESTAX,0FFFFH;ZF=ANDAL,80H;ANDAX,0FFFFH.TEST与AND指令的差别.位判别,13,逻辑移位(Logicalshifting)SHL/SAL(SHiftlogicalLeft/ShiftArithmeticLeft)1位/CL位相当于无符号数*2SHL/SALdest,1;SHLAL,1;SHLCX,1SHL/SALdest,CLSHLWORDPTRBX,CLCFdest(MSBLSB)0移一次当MSBCF则OF=1,逻辑运算与移位(LogicalSARdest,CLMSBdest(MSBLSB)CFMOVAL,10001000B;SARAL,1;10001000B=(88H=-78H)AL=11000100B(C4H=-60=-3CH)SARAL,11111111B;(0FFH=-1),逻辑运算与移位(Logical近短跳转IP128+127SHORT向前引用!IP=IP+disp8JMP(JUMP)NEAR_LABELIP=IP+disp16段内跳转JMPFAR_LABEL;段间地址CS:IP=新地址JMPSHORTJMPNEARPTRJMPFARPTRREG16/mem16JMP2000H;JMPBX;JMP0FFFFH:0(热启动)JMPFARPTRTABLESI;JMPNEARPTRBPDI,24,转移控制(ControlTransfer),转移指令-条件跳转(conditionalJump)(利用CMP,TEST、计算、移位指令等结果改变程序流)JCCSHORT_LABEL;限近短跳转IP128+127满足条件IP=IP+disp8,否则顺序执行(IFELSE)JZ/JE-JNZ/JNE(ZF)=1-(ZF)=0JS-JNS(SF)=1-(SF)=0JP/JPE-JNP/JPO(PF)=0-(PF)=1JO-JNO(OF)=1-(OF)=0JC-JNC(CF)=1-(CF)=0,25,转移控制(ControlTransfer),转移指令-条件跳转(conditionalJump)Unsigned大小比较JB/JNAE-JNB/JAE(CF)=1-(CF)=0JA/JNBE-JNA/JBE(CF)=0loopCXtimes循环控制(Loop)LOOPZ/LOOPEshort_label;(loopwhilezero/equal)循环直到(CX)=0or(ZF=0)LOOPNE/LOOPNZshort_label;(LoopwhileNZ/NE)循环直到(CX)=0or(ZF=1)JCXZifCX=0Jumpto(JumpOnCXZero)CX为零控制调转.循环跳转超过-128/+127时?.Dowhile/whileDo/For(i=0;i100;i+)的实现,27,CALL段内段间:直接/间接调用(过程/子程序Subroutine)RET(RETF)过程返回(分远近,产生不同RET码(C3/CBH),过程调用指令(Callaprocedure),P66图2.11,28,过程调用指令(Callaprocedure),CALLNEAR_PROC;(SP)(SP)-2,(SP)+1,(SP)(IP);(IP)(IP)+proc_dispCALLreg16/mem16.;(IP)reg16/mem16CALLFAR_PROC;(SP)(SP)-2,(SP)+1,(SP)(CS);(CS)SEGF_PROC(SP)(SP)-2,(SP)+1,(SP)(IP);(IP)OFFSETF_PROCCALLMEM32;(CS)MEM32+2,(IP)MEM32例:CALL2000H;CALLBX;CALLNEARPTRES:SICALL2000:3000H;CALLFARPTR2000H,29,过程返回指令(ReturnFromCall),RET(C3H);(IP)(SP)+1:(SP),(SP)(SP)+2RETpop_value;(C2Hdata_lowdata_high)(IP)(SP)+1:(SP),(SP)(SP)+2;(SP)(SP)+pop_value=ADDSP,Pop_valueRETF(CBH);(IP)(SP)+1:(SP),(SP)(SP)+2(CS)(SP)+1:(SP),(SP)(SP)+2RETFpop_value;(CAHdata_lowdata_high)IP:CS弹出(SP)(SP)+pop_value,30,子程序(Subroutine)与函数(Function),C函数调用传递参数从右到左压入堆栈,再压入返回地址(W/DW)后转移,返回后修改SP(ADDSP,n);(Small/Compact)IntT_PROC(inta,intb);C函数_T_PROCprocNEAR;汇编子程序(过程)PUSHBP;MOVBP,SP:BP=保存BP,BP+2=RET_IP,BP+4=aBP+6=b,POPBPRET;返回后ADDSP,4-C_DECL返回值:char,short,int=AX,float,double:AX=EA,long:DX,AX;NearPointer:AX,FarPointer:DX,AX其他模式Large,Huge,PASCAL函数调用传递参数地址从左到右,先参数后转移,返回同时修改SP(RETn),31,中断指令Interrupt,INT(Interrupt)INTn;(SP)(SP)-2,(SP)+1,(SP)(FLAGS);(IF)0(TF)0(SP)(SP)-2,(SP)+1,(SP)(CS);(CS)0:n*4+2书6.3(SP)(SP)-2,(SP)+1,(SP)(IP);(IP)0:n*4IRET(InterruptReturn)(IP)(SP)+1,(SP),(SP)(SP)2(CS)(SP)+1,(SP),(SP)(SP)2(FALGS)(SP)+1,(SP)(IP),(SP)(SP)2特例:INTO(Interruopifoverflow)=INT4(CS)(0:12H),(IP)(0:10H)单字节指令,(n中断类型号)中断向量xxxxCS:xxxxIP,32,MPU控制(ProcessorControl,CLC(ClearCarryflag)CF=0STC(SetCarryflag)CF=1CMC(CoMplementCarryflag)CF=NOTCFCLD(CLearDirectionflag)DF=0UpSTD(SeTDirectionFlag)DF=1DownCLI(CLearInterruptflag)IF=0STI(SeTInterruptflag)IF=1空操作/暂停NOP;NoOPeration)(3*T)HLT(halt)CPU暂停-(有效INTR/NMI/RESET退出),标志位操作,33,MPU控制(ProcessorControl),(WAIT(WAITwhileTEST#pinnotasserted)有效INTR/TEST#=0结束-CPU与外部硬件同步ESC(Escape)扩展指令:使其他器件(ExternalDevice)使用8086/88的寻址方式。11011xxxmodxxxr/m-8087FLDFSTFSTPFMULFTEST,FSTSWZ,PI,Log2,loge.LOCK(lockbus)-指令前缀。控制总线锁定信号LOCK#=0(有效)直到执行完下一条指令,等待、扩展和锁定,34,MPU控制(ProcessorControl),段超越、重复前缀段超越前缀ES:/CS:/DS:/SSMOVAL,BX;8A07MOVAL,ES:BX268A07重复前缀REP/REPE/REPZ/REPNE/REPNMOVSBA4REPMOVSBF3A4,35,IA-16指令汇总,80286以后IA-16:扩展:PUSHSRC;PUSH2000HSALdst,count(不再限于1);IMULsrc;(AL/AX*src)IMULreg16,data;(reg16)(reg16)*data三操作数:IMULreg16-1,reg16-2/mem16,data;(reg16-1)(reg16-2/mem16)*dataIMULDLIMULAX,10IMULDI,BX,3IMULBX,CX,6新指令:PUSHAPOPAREPINS/OUTS(B,W)(DX)ES:DI虚地址保护模式指令(16M,24位AB),P430-4458086/8088指令,第3章汇编程序,36,微机计算机原理,三80486微处理器简介,37,微机计算机原理,基本部件运算部分:进行定点运算时需要算术逻辑运算单元、移位器和寄存器组;进行浮点运算时需要浮点运算单元和浮点寄存器组。高速缓存:用来存放最近运行程序所需要的指令代码和数据。减少访问内存次数从而提高CPU运行速度。存储器段页管理:为实现虚以存储器而设置。指令译码与控制:根据指令的信息产生微指令对CPU内部进行控制。80486外部地址线有32根,主存空间为4GB。数据线有32根,同时可访问4个字节的内存数据。,38,微机计算机原理,基本结构寄存器8个32位的通用寄存器,6个16位的段寄存器,1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 长春大学旅游学院《义务教育阶段音乐教材教法》2024-2025学年第一学期期末试卷
- 浙江东方职业技术学院《HTM项目实战》2024-2025学年第一学期期末试卷
- 地坪漆产品知识培训课件
- 抹灰专项施工方案(3篇)
- 宜城地形地貌概述
- 井堡施工方案(3篇)
- 可持续能源在化工中的利用
- 肛周脓肿病人的护理查房
- 直播电商供应链柔性化升级对GMV增长的赋能机制研究
- 医院过渡留观室应急预案(3篇)
- 八年级年级主任工作计划
- 英汉互译单词练习打印纸
- 四川JS-004竣工验收报告
- 花卉栽植施工方案
- 水工闸门课件
- 水泥生产企业生产安全事故综合应急预案
- 全自动血液细胞分析仪产品技术要求深圳迈瑞
- 找对英语学习方法的第一本书
- 《诺丁山》经典台词
- 对铁路机车乘务员规章培训的探讨与实践
- 临床医学实验室 仪器设备一览表格模板
评论
0/150
提交评论