微机原理与接口技术汇编语言指令详解吐血版.docx
第一讲第三章指令系统一寻址方式国耳:8086/8088的内部结构和寄存器,地址分段的概念,8086/8088的工作过桓。支点和纲要:指令系统一寻址方式。有关寻址的概念:6种基本的寻址方式及有效地址的计算。教学方注、实见“同安排*÷EJ顾5"X2板书讲投40"X2计算机提问3-×2投影仪小a2”X2多媒体i?件等讲授内容:3.18086/8088寻址方式首先,就洁讲解并描述一下指令的一般格式:操作码操作数操作数计舁机中的指令由操作码字段和操作数字段组成。操作码:指计算机所要执行的操作,或称为指出操作类型,是一种助记符。操作效:指在楮令执行操作的过程中所然要的操作数。该字段除可以是榇作教本身外,也可以是操作数地址或是地址的一部分,还可以是指向操作数地址的指针或其它有关操作敷的信息。寻址方式就是指令中用于说明操作数所在比址的方法,或者说是找寻操作数有效地址的方法。8086/8088的基本寻址方式有六种。1 .马上寻址所供应的操作数千腌包含在指令中.它紧跟在操作码的后面,与操作码一起放在代码段区域中.如图所示。例如:MOVAX,3000H马上数可以是8位的,也可以是16位的.若是16位的,则存器时低位在前,高位在后。马上寻址主妥用来给寄存客或存储客赋初值。2 .千JIt寻址操作会地址的16位偏移量干瓶包含在指令中。它与操作马一起存放在代妈段区域,操作数一般在数据段区域中,它的地址为数据段寄存器DS加上这16位地址偏移量。如图2-2所示。例如:MOVAX1DS:2000H:代码段数笫殷国2-2(对DS来洲可以省略成MOVAX,2000H,系统.默认为数据我)这种寻址方法是以数据我的地址为基础,可在多达64KB的范阳内找寻掾作教。8086/8088中允许段超越,即还允许操作敷在以代码段、堆栈段或附加段为基准的区域中。此时只要在楮令中指明是段超越的,则16位地址偏移量可以与CSA.SS或ES相加,作为操作数的地址。MOVAX,2000H:数据及MOVBX.ES:3000H:段趣越,操作较在附加及即肯定地址=(ES)*16+3000H3 .孑存石寻珏操作数包含在CPU的内部寄存苕中,如寄存器AX、BX,CX,DX等.例加:MOVDS.AXMOVA1.BH4 .寄存片间接寻At操作会是在存储器中,但是,操作敷地址的16位偏科量包含在以下四个寄存琴SI、DKBP、BX之一中。可以分成两种状况:通常掾作数在现行数据段区域(1) 以SI、D1.、BX间接寻址,则中,即数据段寄存客(DS)*16量.为操作坡的地址,例如:MOVAX,SI操作加上S1.DI.BX中的16位偏移数地址是:(DS)*16+(SI)(2) 以寄存器BP间接寻址,则操作数在堆栈段区域中。即堆栈段寄存器(SS)*16与BP的内容相加作为操作数的地址,例如:MoVAX.BP操作数地址是:(SS)*16+(BP)若在指令中规定是我超越的,则BP的内容也可以与其它的段等存器相加,彩成操作领地址。例如:MOVAX,DS:BP揉作致地址是:(DS)*16+(BP)5.变址寻址由指定的寄存方内发,加上指令中给出的8位或16位偏移量(当然要由一个段寄存器作为地址基准)作为操作数的体移地址。(操作数在存心第中)可以作为寄存落变址寻址的四个寄存若是SI、DKBX.BPs若用SI、D1.和BX作为变址,则与数据段寄存给相加,取成操作数的地址即取认在教据段:数的偏移地址,如图所示.若用BP变址,则与堆栈段寄存器相加,彩成操作数的地址即默认在堆栈段例如:MOVAX,UNTS;操作数地址是:(DS)*16+(SI)+UNT但是,只要在指令中指定是我超越的,6.公址加史珏寻it把BX和BP看成是基址寄存器,杞则可以用别的段等存器作为地址基准。S1.D1.看#是变址寄存把一个基址寄存器(BX,BP)的内容加上一个变址寄存器(S1.或D1.)的内容,再加上指令中指定的8位或16位偏移量(当然要以一个段寄存影作为地址贰准)作为操作代码段/据段操作数在存QX中,其偏移地址由(基址寄存+(变址寄存去)+相对偏移量再成基址寄存器一一BX:敦据段、BP:堆板段:变址寄存器一一SKD1.例如:MOVAX,BXSI或MOVAX,BX+SI也可放犬一个相对偏移量,如COUNT、MASK等等,用于表示相对寻址。MOVAX,MASKBXSIMOVBH,COUNTDIBP:MOVBH,COUNTBP+DI。若用BX作为照地址,则操作数在数据段区域若用BP作为基地址,则操作数在堆栈段区域但若在指令中规定我是超越的,则可用其它段寄存器作为地址基准。P.28表2-1段可存;S运用的基本约定访问存储店矢变我认收寄存否Iir希定依寄存器段内偏砂地址来渔取林令修CS龙IP地假排件SS无SP小慢作傲地址DSCS、ES.SSS1.4H&作月的地ES无D1.8P用作盘及手存名SSCS.OSsES尔据耳母方式求件有/地址DSCS,ES.SS尔相乎址方式求谷省找地址习题与思索:1,假定DS=2000H.ES=210W,SS=1500H,SI=OOAOH.BX=0100H.BP=OOIOH,好据变量VA1.的偏移迫址为0050H,请指出下列指令源操作教走什么寻址方式?其物理地址是多少?MOVAX.OABHMOVAX,VA1.MOVA1.1VA1.BXMOVVA1.SI,BX(2)<4)MOV(6)MOV(8)MOVMOV'AX,100HBX.SIC1.1BXSI,BPSI,1002.已知SS=OFFAOH.SP=OOBOH.先执行两条把8057H和0F79H分别进板的PUSH指令.再执行一&POP和令,试生出堆浅区和SP内容支出的过假示电:图.标出存型单元的地址其次讲3.2指令系统一数据传输、算术运算SJM:8086/8088的内部结构和寄存器,8086/8088的工作过程。8086/8088的寻址方式及操作数地址的计算。直点和纲要:要求学生了解指令的功能,驾驭数据传送类,算术运算类指令的运用方法。(驾驭指令内涵,会用)级学方法、实此步我学手段回顾5-×2板书计授40-×2计算林蜒问3”X2投券仪小鳍2"X2多媒体源件等讲授内容:3.28086/8088指令系统8086/8088的指令系统可以分为以下六个功能,铀。1.数据传送(DataTranster)2.算术运算(ArithmetiC)3.这料运算(1.Ogie)4.本操作(Stringn1.eniPU1.atiOn)5.程序限制(PrOgran1.Contro1.)6.处理器限制(PrOCeSSOrContro1.)一、数据传送指令主要介绍MOV.XCHG.堆栈和地址传送指令。1 .效据传送MoV指令一般格式:MOV0PRD1,0PRD2MOV是操作码,OPRDI和OPRD2分别是目的操作数和源操作效。功能:完成数据传送详细来说,一条敷据传送指令能实现:(1)CP内部寄存粉之间数据的随意传送(除了代码段寄存器CS和指令指针IP以外)。MOVA1.,B1.;字节传送MOVCX,BX;字传送MOVDS,BX马上敢传送至CPU内部的通用寄存器组(即AX、BX.CXsDX.BP.SP,SkD1.),MOVC1.,4MOVAX,03FFHMOVSI,057BHCPU内部寄存器(除了CS和IP以外)与存储给(全部导址方式)之间的敷据传送OMOVA1.,BUFFERMOVAX,SIMOVDI,CXMOVSI,B1.OCKBPMOVDS,DATASI+BXMOVDESTBP+DI,ES(4) 能实现用马上数给存毡单元赋值例如:MOV2000H,25HMOVSI,35H对于MoV指令应留意几个问起:存储器传送指令中,不允许对CS和IP进行榇作:两个操作数中,除马上寻址之外必需有一个为寄存粉寻址方式,即两个存储器操作数之间不允许干舱进行信息传送:如我们须要杷比址(即段内的地址倜移量)为AREA1.的存储单元的内容,传送至同一段内的比址为AREA2的存储单元中去,MOV指令不能干脆完成这样的传送,但我们可以用CPU内部寄存器为桥梁来完成这样的传送:MOVA1.AREAIMOVAREA2,A1.两个段寄存器之间不能干脆传送信息,也不允许用马上寻址方式为段寄存器趺.初依:如:MOVAX.0:MOVDS.AX目的操作效,不能用马上寻址方式。2 .唯税指令(简述堆板的疑念及存取特点,加先进后出)包括入栈(PUSH)和出板(POP)指令两美。仅能进行字运算。(操作数不能是马上效)入栈指令PUSH一般辂式:PUSHOPRD漉操作数可以是CPU内部的16位通用寄存器、段寄存器(CS除外)和内存操作数(全部寻址方式)。入栈操作对象必需是16位数。功能:将数据注入堆栈执行步骤为:SP=SP-2:SP=操作数低8位:SP+1=操作数高8位例如:PUSHBX执行前执行后图2-8执行过程为:SP=SP-1,SP=BH:SP=SP-I,SP=B1.,如图2-8所示。出我指令POP一般格式:POPOPRD功能:将数据弹出堆栈对指令执行的要求同入栈指令。例如:POPAXPOPBXPOPDS3 .交接描令XCHO一殷格式:XCHG0PRD1,0PRD2功能:完成数据交换这起一条交换指令,把一个字节或一个字的源操作数与目的操作教秘交接。交接能在通用等存器与累加器之间、通用等存器之间、通用等存蓄与存储器之间进行。但我等存器和马上数不能作为一个操作数,不能在累加器之间进行。例如:XCHGA1.,C1.XCHGAX,D1.XCHGBX,S1.XCHGAX,BUFFERXCHGDATASI.DH4 .累加号者用传送指令(1)IN指令一般格式:INA1.nBA1.*-nWAX*-n+1nBA1.÷-DXWAX*-DX+1DX有三种,馀入、输出和查表指令。前两种又称为输入输出指令。INAX,nINA1.,DXINAX,DX功能:从I/O端口梳人数据至A1.或AX。椅入指令允许把一个字节或一个字由一个输人端口传送到A1.或AX中。若端口地址超过255时,则必需用DX保存端口地址,这样用DX作端口寻址最多可找(2)OUT指令一般格式:OUTn,A1.A1.T11OUTn,AXAXT11+1nOUTDX.A1.:A1.DXOUTDX.AX;AXDX+1DX功能:将A1.或AX的内容输出至I/O端u。该指令将A1.或AX中的内容传送到一个输出端口。端口寻址方式与IN指令标同。X1.AT指令一般格式:X1.AT;A1.=(DX)×16+(BX)+(A1.)功能:完成一个字节的查表转接。要求:等存器A1.的内容作为一个256字节的表的下标。表的基地址在BX中,转换后的结果存放在A1.中.TAB1.E:|例如:MOVBX.OFFSETTAB1.EIIMOVA1.,8INA1.1第9个字在IAHX1.AT:查表OUT1,A1.;(A1.)=AAH-长度256本指令可用在数制转慢、函数表查表、代码转换等场合。5 .地址传送界令(有三条地址传送指令)(1) 1.EA(1.oadEffectiveAddress)一般格式:1.EAOPRD1,0PRD2功能:杷源操作数0PRD2的地址偏移量传送至目的操作数OPRD1。要求:源操作数必需是一个内存操作效,目的操作数必需用.一个16位的通用岑存器.这条指令通常用来建立串操作指令所须的寄存器指针。例:1.EABX.BUFR:把变量BUFR的地址偏移量都分送到BX1.DS(1.oadpointerintoDS)一般格式:1.DS0PRD1,0PRD2功能:完成一个地址指针的传送。地址指针包括段电址部分和偏移量部分。指令将段地址送入DS.偏移量部分送入一个16位的指针寄存器或变及寄存器。要求:源操作数是一个内存操作数,目的操作数是一个逋用寄存器/变址寄存器。例加:1.DSSI,BX:将把BX所指的32位地址指针的段地址部分送入DS,偏移量部分送入S1.忸2-91.DS非令示意如图2-9所示。1.ES(1.oadpointerintoES)一般珞式:1.ES0PRD1,0PRD2这条指令除将地址指针的及地址部分送入ES外,与1.DS类似。例如:1.ESDI,BX+COUNT6 .标记寄存器传送有四条标记样Hue令)1.AHF(1.OADAHWITHF1.AG)将标记寄存云中的SF、ZF,AF.PF和CF(即低8位)传送至AH寄存去的指定位,空位没有定义。SAHF(STOREAHWITHF1.AG)将寄存器AH的指定位,送至标记寄存器的SF、ZF,AF、PF和CF位(即低8位)。依据AH的内容,影响上述怀记便,对OF、DF而IF无影响。(3) PUSHF(PUSHF1.AG)将标记省存器注入堆栈顶部,同时修改堆栈楮针,不影响标记位。(4) POPF(POPF1.AG)堆栈顶部的一个字,传送到标记寄存器,同时修改堆栈指针,影响标记位。二、算术运算指令8086/8088供应加、减、乘、除四种;本算术操,器,心7贮器作。这些操作都可用于字节Vz或字的运舁,也可以用于带jJ符号数与无符号数的运算.1.H通用'存上I存贮器带符号效用补码表示.同时8086/8088也供应了各种校正操作,故可以进行十进制用表运算。参加加、减运算的操作数可如上图所示。1 .加法指令(Addition)一般形式:ADDOPRDI.0PRD2功能:OPRD1.0PRD1+0PRD2完成两个操作数相加,结果送至目的操作致OPRDI目的操作数可以是累加器,任一通用寄存器以及存储器操作数。例如:ADDA1.,30:累加器与马上数相加ADDBX,3000H:通用寄存器与存禽单元内容相加ADDDI,CX:通用寄存器之间ADDDX,DATABX+S;通用寄存器与存鳍单元内容相加ADDBETASI,DX;存储器操作数与寄存器相加这些指令对标记位CF、DF、PF、SF,ZF和AF有影响.一般彩式:ADC0PRD1,0PRD2:带进位的加法功能:OPRD1.OPRDI+0PRD2+CF这条指令与上一条指令奂似,只是在两个操作数相加时,要把进住标记CF的现行位加上去,结果送至目的操作数。ADC指令主要用于多字节运算中。若有两个四字节的数,已分别放在自FIRSTSECOND起先的存储区中,每个数占四个存储单元。存放时,最低字节在地址最低处,则可用以下程序段实现相加。MOVAX,FIRSTADDAX,SECOND:进行字运算MOVTHIRD,AXMOVAX,FIRST+2ADCAX,SEC0ND+2MOVTHIRD+2.AX这条楮令对标记住的影响与ADD相同。一般形式:INCOPRD;功能:OPRD0PRD+1完成对指定的操作致OPRD加1,然后返回此操作数.此指令主要用于在循环程序中修改地址指针和循环次数等.这条指令执行的结果影响标记位AF、OF.PF、SF和ZF.而对进位标记没有翳响。如:INCA1.INCBX2 .减法界令(SUbtrction)一般形式:SUBOPRDI,0PRD2:功能:OPRD11-OPRD1-0PRD2完成两个操作数和减,也即从OPRD1.中减去OPRD2,姑果放在OPRD1.中。例如:SUBCX,BXSUBBP,C1.一般形式:SBB0PRD1,0PRD2:功能:0PRD10PRD1.-OPRD2-CF这条指令与SUB类似,只是在两个操作我相减时,还妥减去借住标记CF的现行值.本指令对标记位AF、CF,OF,PF,SF和ZF都有影响.同ADC指令一祥,本指令主要用于多字节操作致相减。一般形式:DECOPRD:功能:OPRD4-0PRD-1-CF对指令的操作数减1,然后送回此操作敷.在相减时.把操作教作为一个无持号二进制数来对待。指令执行的集果,彩响标记AF、OF、PF.SF和ZF.但对"CF标汜不影响(即保持此指令以前的值)。例如:DECSIDECC1.一般彩式:NEGOPRD功能:(NEGDate)取补时操作数取补,即用零减去操作数,再把结果送回操作教.例如:NEGA1.NEGMU1.RE(A1.=0011I100)则取补后为I1000100即OoOO0000-00111100=11000100若在字节操作时对-128,或在字操作时对-32768取补,则操作数没变更,但标记0F直位。此指令影响标记AF、CF,OF,PF.SFZF.此指令的姑果一般总是使标记CF=I,除非在操作数为零时,才使CF=0。一般形式:CMP0PRD1,0PRD2;功能:0PRD1-0PRD2比校指令完成两个操作数和减,使结果反映在标记位上,但并不送回结果(即不带回送的减法)。例如:CMPA1.100CMPDX,D1.CMPCX,COUHTBPCMPCOUNTSI,AX比较指令主要用于比较两个数之间的关系。在比较楮令之后,依据ZF标记即可推断两者是否相等。相等的比莪:若两老相等,相减以后结果为零,ZF标记为1,否则为0。若两者不相等,财可在比就指令之后利用其它标记位的状态来确定两者的大小。大小的比较:假如是两个无符号数(如CMPAX.BX)进行比较,则可以依据CF标记的状态推断两数大小。若结果没有产生借位(CF=Or明显AXJBX:若产生了借位(即CF=D,»'AX<BX0习题与思索:1 .设有关等存器及存宏单元的内容加下:DS=2000H,BX=O100H,AX=1200H,SI=0002H120100H=12H,(20101H=34H,20102H=56H,20103=78H.2120O=2AH.21201H=4CH,21202H=067H,21203H=65H试说明下列各条指令单独执行后相关寄存23或存储单元的内容。(1)MOVAX,18O0H(3)MOVBX,1200H(5)MOVBXSI,A1.(2)MOVAX.BX(4)MOVDX.1100BX(6)MOVAX,1100BXSI2.写出实理下列计总的指令序列。(1) Z=W*(Z+X)(软定X、Y、Z.W,R都为字变黄)(2) Z=W-<X+6)-(R+9)3.若在数据段中从字节变量TAB1.E相应的单元依先存放了015的平方值.试写出包在X1.AT指令的相令序列查找N(TI5)中的某个数的平方.(设N的值存放在C1.中)第三讲3.3指令系统-算术运算、逻辑运算、限制转移回廉:8086/8088的内部结构和寄存器,8086/8088的工作过程。8086/8088的寻址方式及操作数地址的计算。重点和纲要:要求学生了解指令的功能,驾驭算术运算类、逻辑运算和移位指令的功能和应用。(驾驭指令内涵,会用)救学方法、实施力赦学子盘回顽5”×2板书a4”×2计算机提问3-×2技教仪小姑2”×2多媒体浜件等讲解并描述内容:3 .柬法界令(分为无符号氽法指令和带符号祭法指令两臭)(1)无符号乘法指令MU1.一般格式:MU1.OPRD完成字节与字节相乘、字与字相来,且默认的操作数放在A1.我AX中,而源操作效由指令洽出。8位效相乘,结果为16位效,放在AX中;16位数相氽结果为32位数.高16位放在DX,低16位放在AX中。派操件数不能为马上数,例如:MOVA1.FIRST;MU1.SEND:晶果为AX=F1.RST*SEC0NDMOVAX1THIRD:MU1.AX:结果DX:AX=THIRD*THIRDMOVA1.30HCBW:字犷展AX=30HMOVBX12000HMU1.BX:(2)带符号散乘法指令IMU1.一般格式:IMU1.OPRD:OPRD为淞操作致这是一条带符号数的乘法指令,同MU1.一样可以进行字节与字节、字和字的乘法运算。结果放在AX或.DX.AX中。当结果的高芈部分不是结果的低半部分的符号犷展时,标记位CF和OF将犬位。4 .除法指令(1)无符号数除法指令DIV一般格式:DIVOPRD(2)带符号数除法IDIV一航格式:IDIVOPRD该指令执行过程同D1.V梢令,但IDIV指令认为操作数的最高位为符号位,除法运算的结果商的最高佳也为符号位。在除法指令中,在字节运舁时被除数在AX中;运算结果商在A1.中,余数在AH中。字运算时被除数为DX:AX构成的32位数,运算结果商在AX中,余数在DX中。例如:AX=2000H,DX=200H,BX=100OH,则D1.VBX执行后,AX=2002H,DX=OOOOo除法运算中,源操作数可为除马上寻址方式之外的任何一种寻址方式,且指令执行对全部的标记位都无定义。由于除法指令中的字节运算要求被除数为16位数,而字运算要求被除数是32位教,在8086/8088系统中往往须要用符号扩展的方法取得被除数所要的格式,因此指令系统中包括两条符号扩展指令.(3)字节扩展指令CBM一触格式:CBW该指令执行时将A1.寄存方的最高位犷展到AH,即若D7=0.则AH=O:否则AH=OFFHe(4)字犷展指令CM)一般格式:CM)该指令执行时将AX寄存豁的最高位犷展到DX,即若D15=0,则DX=O:否则DX=OFFFFH,CBW.CWD指令不影响标记位。5 .十进制调空指令计算机中的算术运算,都是针时二进制数的运算,而人们在日常生活中习惯运用十进制.为此在8086/8088系饶中,针对十进制算术运算有一类十进制调终指令。在计算机中人们用BeD码表示十进制数,对BCO码计算机中有两种表示方法:一类为压缩BCO码,即规定每个字节表示两位BCO数:另一类称为非压练BCD码,即用一个字节表示一位BCD数,在这字节的右四位用0填充。例如.十进制裁25D.表示为压缩BCD数时为:25H:表示为非压缩BCD数时为:0205H,用两字节表示。相关的BCD转换指令见表2-2。*:表2-2十遗例词攵指令ADDA1.,B1.卷令斑式林今说明DAADAA正咕的BC。玛加法调淤若执行前:A1.=28H.B1.=68H,则执行ADDDAS.庄筑的BCD码或金调整后:A1.=90H,AF=I;再执行DAA指令后,正确AAA心在筛的Ba)明加法涧桀的转果为:A1.=96H,CF=O,AF=I.AAS作瓜州的BCD法泗整MU1.B1.AAM表*总的BCD稿M箜AAMAAD险小游的BeD巧刈笑若执行前:A1.=07,B1.=09,则执行MU1.B1.后,AX=003FH,再执行AAM楮令后,正确的姑果为:AH=06H,A1.=O3H.Ir章:BCD码进行乘除法运算时,一律运用无符号数形式,因而AAM和AAD应固定地出现在MU1.之前和D1.V之后。三、运辑运算和移位指令包括逻辑运算、移位和相坏移位指令1 .逻辑运算指令(1) 一般格式:NOTOPRD功能:对操作数求反,然后送回原处,操作款可以是寄存器或存储器内容。此指令对标记无影响。例如:NOTA1.(2) 一艇格式:AND0PRD1,0PRD2功能:对两个操作数进行按位的逻辑“与”运算,结果送回目的操作数。其中目的操作数OPRD1.可以是累加器、任一通用寄存给,或内存操作数(全部寻址方式)。通操作数OPRD2可以是马上数、寄存器,也可以是内存操作效(全部寻址方式)。8086/8088的AND指令可以进行字节操作,也可以进行字操作.例如:ANDA1.,OFH:可完成拆字的动作ANDSI,S1.:将S1.沛0(3)一般格式:TEST0PRD1,0PRD2功能:完成与AND指令相同的操作,结果反映在标记位上,但并不送回。通常运用它进行测试.例如若要检测A1.中的最低位是否为1,为1则转移。可用以下指令:TESTA1.,01HJNZTHERETHERE:芳安检测CX中的内容是否为O.为O则转移。该如何做呢?(4) 一般格式:OR0PRD1,0PRD2功能:对指定的两个操作数进行泛辑“戏”运算。结果送回目的操作教。其中.目的操作数OPRD1,可以是累加粉,可以是任一通用寄存器.也可以是一个内存操作数(全部寻址方式)。源操作教OPRD2,可以是马上数、寄存器,也可以是内存操作数(全部寻址方式)。ANDA1.,OFHANDAH,OFOHORA1.,AH;完成拼字的动作ORAX.OFFFH;挣AX低12位其1ORBX,BX:沛相应标记(5) 一般格式:XOROPRD1,0PRD2功能:对两个指定的操作数进行“异或”运算,姑果送回目的操作教。其中,目的操作数OPRD1.可以是累加器,可以是任一个通用寄存器,也可以是一个内存操作数(全都寻址方式).源操作数可以是马上敦、寄存器,也可以是内存操作数(全部寻址方式).例如:XORA1.,A1.:使A1.清0XORSI,S1.:使S1.沛0XORC1.OFH:使低4位取反,高4位不变逻辑运算类指令巾,单操作数指令NOT的操作数不能为马上软,双操作致逻辑指令中,必需有一个榇作数为寄存器寻址方式,旦目的操作数不能为马上敷。它们对标记位的影响状况如下:NoT不影响标记住,其它四钟指令.将使CF=OF=0.AF无定义,而SF、ZF用PF则依据运算每果而定。2.移位指令(1)算术/逻辑移位指令算术左移或逻耨左移指令SMRHSB施作数1.£BSA1./SH1.OPRD.M;算术右移指令SAROPRD,M逻辑右移指令SHROPRD.MM是移位次效,可以是1或寄存器C1.这些指令可以对寄存客操作数或内存操作数进行指定的移Q,可以进行字节或字操作;可以一次只移1位,也可以移位由寄存器C1.中的内容规定的次数(2)锚环移位指令RO1.OPRD1M:左循环移位ROROPRD1M;右循环移位RC1.OPRD1M:带进位左循环移位:带进位右循环移位r*I"HRCROPRD1M前两条循环指令,未把标记位CF包含在循环的坏中,后两条把标记位CF包含在据坏的坏中,作为整个循环的一部分。循环指令可以对字节或字进行操作。操作数可以是寄存器操作效,也可以是内存操作数。可以是很坏移位一次,也可以锯坏移位由C1.的内容所璃定的次数。左移一位,只要左移以后的数未超出一个字节或一个字的表达范围,期原教的每一位的权增加了一倍,相当于原数来2。右移一位相当于除以2。在数的输入输出过程中乘10的操作是常常要进行的。而X1.O=X*2+X*8,也可以朱纳移位和相加的方法来实现*10。为保证结果完整,先将A1.中的字节扩展为字.MOVAH,0SA1.AX11:X*2MOVBX,AX:移至BX中情存SA1.AX.1;X*4SA1.AX11:X*8ADDAX.BX:X*10例1BCD码转换为ASe1.1.码若在内存某一陵冲区中存放着若干个单元的用BCD码表示的十进制效。每一个单元中放两位BCD码,要求把它们分别转换为ASCI1.码。高位的BCD码转换完后放在地址较高的单元。分析:分换公式:ASCII=BCQ÷30H算法:源申和目的本的表首分别设两个指针。SABCD-IfASCII后存入(先低便,后高位)MOVSI,OFFSETBCDBUFF:设置源地址指针MOVCX.COUNT:设计数初值MOVDI,OFFSETASCBUF:设置目的地址指针AGAIN:MOVA1.,sMOVB1.A1.ANDA1.OFH:取低位BCD码ORA1.30H:转换成ASCI1.码MOVDI,A1.;存入INCD1.:修改指针MOVA1.,B1.PUSHCXMOVC1.,4SHRA1.,C1.ORA1.30H:高位转换成ASCI1.码MOVDI,A1.:存入POPCXINCD1.INCSI;毋改相针1.OOPAGAIN:立复工作习题与思索:1 .药出实现下列计算的指令序列。(假定X、Y、Z、WxR都为字变M)(1) Z=(W*X)/(R+6)(2)Z=(W-X)5*Y>»22.R½DX=1100100110111001B.C1.=3.CF=I.送确定下列各条指令单独执行后DX的伍。(1)SHRDX,1(2)SH1.D1.1(3) SA1.DH,1(4)SARDX,C1.(5) RORDX1C1.(6)RO1.D1.1C1.(7) RCRD1.,1(8)RC1.DX.C1.3.试分析下列包年完成什么功能?MOVC1.4SH1.DX1C1.MOVB1.AHSH1.B1.C1.SHRB1.C1.ORD1.B1.4.已知程序段如下:MOVAX,1234HMOVC1.14RO1.AX.C1.DECAXMOVCX14MU1.CXINT2W送何:(1)每条非令执行后,AX寄存卷的内东是什么?(2)每条指令执行后.CF.SFZF的值分别是什么?(3)槌序运行站表时,AX及DX寄存后的值为多少?第四讲:3.4指令系统一循环、子程序调用、中断、其他回族:8086/8088的内部结构和寄存器,8086/8088的工作过程8086/8088的寻址方式及操作数地址的计算。重点和纲要:要求学生了解串操作指令的功能。指令系统一循环、子程序调用、中断、其他(驾驭指令内涵,会用)蒙学方法、实*步讨同安持*÷回顾5”X2板书计算机投影仪多媒体课件寻讲授35”×2«问3"X2小fi2"X2H论5"X2讲授内容:四、聿操作奏指令(选讲或简洁介绍)串操作美楮令可以用来实现内存区域的教据串操作。这些数据串可以是字节串,也可以是字串。1 .重复指令前假串操作类指令可以与次复指令前缀捺作运用。从而可以使操作得以重复进,刚好停止。重复指令前缀的几种形式见表2-3所示。表2-3虫汇通衿式执歼过钱引响给今REP(1)(CX)=0.购退出:(2)CX=CX-1:(3)执行后侯茹令:(4)IU<1)-(3)MOVS.STOS.1.OOSREPE/REPZ(1)(CX)=OZF=O.电送th:(2)CX=CX-I:<3>执行后线挂令:(4)ft(1)-CUPS,SCASREPNE/REPNZ(1)(CX)-OAZF=I1e:(2)CX=CX-I:<3>执行后续折令;(4)女及(1)-CMPS.SCAS2 .申指令串指令共有五种,详细见表2-4。对串指令要留意以下几个问题:(1)各指令所运用的.联认等存器是:S1.(源申地址),D1.(目的地址),CX(字串长度),A1.(存取或搜寻的我认值)。(2)源串在数据段,目的电在附加段。*.2-4牟操作希令功能无今拈K执行掇作*传送MOVSDST,SRC由操作皴也明是字节我字操作:火金P1.wOVS8*MOVSWNOVSBMOVSA(ES:DI><-(0S:SI):SI=SI±1.DI=01.±1:REPf1.I创立复时两方(ES:DI><-(OS:SI):SI=SI±2.DI=OI±2:REPf1.1.创重复时的方辛比核CMPSDST.SRCCWPSBMSM由操作n巩明是字节改字糠作:其余同PS8或.*sw(ES:DI)-(DS:SI):SI=SI±1.DI=01.±1:重«.时版侬初琳再步(ES:D1.)-(DS:SI):SI=SI±2,DI=01.±2;#复/煨限出前丙步搜寻SCASDSTSCASBScASN业操作孰说明义字节辰牙操作:其余问SCAS8或SCASWA1.-(ES:DI):01.=01.±1:/度打,笈限制防两步AX-KES:DI):DI=DI±2;立复忖填限M访两步4*STOSDSTSTOSBSTOSW曲操作较说明是字节改字操作:其余问$Y0S8KSIOSW1.(ES:DI):DI=01.±1:.疝城限制防两力AX(ES:D1.):DI=DI±2:土复前黑限制种两方取申1.SSRC1.SB1.oOSW由操作就说明是手书或字模作:再余同1.ODSe我1.OOSW(DS:SI>A1.:SI=SI±1:/垦*假,&制的两步(DS:SI>AX;SI=SI±2:£艮疆展限小用的步(3)方向标记与地址指针的修改。DF=I.则修改地址指针时用减法:DF=O时,则修改地址指针时用加法.MOVS,STOS.1.ODS指令不影响标记位。MoVS指令的功能.把数据段中由S1.间接寻址的一个字节(或一个字)传送到附加段中由D1.间接寻址的一个字节单元(或一个字单元)中去,然后,