《微机原理与接口技术汇编语言指令详解吐血版.docx》由会员分享,可在线阅读,更多相关《微机原理与接口技术汇编语言指令详解吐血版.docx(28页珍藏版)》请在课桌文档上搜索。
1、第一讲第三章指令系统一寻址方式国耳:8086/8088的内部结构和寄存器,地址分段的概念,8086/8088的工作过桓。支点和纲要:指令系统一寻址方式。有关寻址的概念:6种基本的寻址方式及有效地址的计算。教学方注、实见“同安排*EJ顾5X2板书讲投40X2计算机提问3-2投影仪小a2”X2多媒体i?件等讲授内容:3.18086/8088寻址方式首先,就洁讲解并描述一下指令的一般格式:操作码操作数操作数计舁机中的指令由操作码字段和操作数字段组成。操作码:指计算机所要执行的操作,或称为指出操作类型,是一种助记符。操作效:指在楮令执行操作的过程中所然要的操作数。该字段除可以是榇作教本身外,也可以是操
2、作数地址或是地址的一部分,还可以是指向操作数地址的指针或其它有关操作敷的信息。寻址方式就是指令中用于说明操作数所在比址的方法,或者说是找寻操作数有效地址的方法。8086/8088的基本寻址方式有六种。1 .马上寻址所供应的操作数千腌包含在指令中.它紧跟在操作码的后面,与操作码一起放在代码段区域中.如图所示。例如:MOVAX,3000H马上数可以是8位的,也可以是16位的.若是16位的,则存器时低位在前,高位在后。马上寻址主妥用来给寄存客或存储客赋初值。2 .千JIt寻址操作会地址的16位偏移量干瓶包含在指令中。它与操作马一起存放在代妈段区域,操作数一般在数据段区域中,它的地址为数据段寄存器DS
3、加上这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的内部寄存苕中,如寄存器A
4、X、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)若在指令中规
5、定是我超越的,则BP的内容也可以与其它的段等存器相加,彩成操作领地址。例如:MOVAX,DS:BP揉作致地址是:(DS)*16+(BP)5.变址寻址由指定的寄存方内发,加上指令中给出的8位或16位偏移量(当然要由一个段寄存器作为地址基准)作为操作数的体移地址。(操作数在存心第中)可以作为寄存落变址寻址的四个寄存若是SI、DKBX.BPs若用SI、D1.和BX作为变址,则与数据段寄存给相加,取成操作数的地址即取认在教据段:数的偏移地址,如图所示.若用BP变址,则与堆栈段寄存器相加,彩成操作数的地址即默认在堆栈段例如:MOVAX,UNTS;操作数地址是:(DS)*16+(SI)+UNT但是,只要在
6、指令中指定是我超越的,6.公址加史珏寻it把BX和BP看成是基址寄存器,杞则可以用别的段等存器作为地址基准。S1.D1.看#是变址寄存把一个基址寄存器(BX,BP)的内容加上一个变址寄存器(S1.或D1.)的内容,再加上指令中指定的8位或16位偏移量(当然要以一个段寄存影作为地址贰准)作为操作代码段/据段操作数在存QX中,其偏移地址由(基址寄存+(变址寄存去)+相对偏移量再成基址寄存器一一BX:敦据段、BP:堆板段:变址寄存器一一SKD1.例如:MOVAX,BXSI或MOVAX,BX+SI也可放犬一个相对偏移量,如COUNT、MASK等等,用于表示相对寻址。MOVAX,MASKBXSIMOVB
7、H,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=
8、0100H.BP=OOIOH,好据变量VA1.的偏移迫址为0050H,请指出下列指令源操作教走什么寻址方式?其物理地址是多少?MOVAX.OABHMOVAX,VA1.MOVA1.1VA1.BXMOVVA1.SI,BX(2)4)MOV(6)MOV(8)MOVMOVAX,100HBX.SIC1.1BXSI,BPSI,1002.已知SS=OFFAOH.SP=OOBOH.先执行两条把8057H和0F79H分别进板的PUSH指令.再执行一&POP和令,试生出堆浅区和SP内容支出的过假示电:图.标出存型单元的地址其次讲3.2指令系统一数据传输、算术运算SJM:8086/8088的内部结构和寄存器,8086
9、/8088的工作过程。8086/8088的寻址方式及操作数地址的计算。直点和纲要:要求学生了解指令的功能,驾驭数据传送类,算术运算类指令的运用方法。(驾驭指令内涵,会用)级学方法、实此步我学手段回顾5-2板书计授40-2计算林蜒问3”X2投券仪小鳍2X2多媒体源件等讲授内容:3.28086/8088指令系统8086/8088的指令系统可以分为以下六个功能,铀。1.数据传送(DataTranster)2.算术运算(ArithmetiC)3.这料运算(1.Ogie)4.本操作(Stringn1.eniPU1.atiOn)5.程序限制(PrOgran1.Contro1.)6.处理器限制(PrOCeS
10、SOrContro1.)一、数据传送指令主要介绍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
11、以外)与存储给(全部导址方式)之间的敷据传送OMOVA1.,BUFFERMOVAX,SIMOVDI,CXMOVSI,B1.OCKBPMOVDS,DATASI+BXMOVDESTBP+DI,ES(4) 能实现用马上数给存毡单元赋值例如:MOV2000H,25HMOVSI,35H对于MoV指令应留意几个问起:存储器传送指令中,不允许对CS和IP进行榇作:两个操作数中,除马上寻址之外必需有一个为寄存粉寻址方式,即两个存储器操作数之间不允许干舱进行信息传送:如我们须要杷比址(即段内的地址倜移量)为AREA1.的存储单元的内容,传送至同一段内的比址为AREA2的存储单元中去,MOV指令不能干脆完成这样的
12、传送,但我们可以用CPU内部寄存器为桥梁来完成这样的传送:MOVA1.AREAIMOVAREA2,A1.两个段寄存器之间不能干脆传送信息,也不允许用马上寻址方式为段寄存器趺.初依:如:MOVAX.0:MOVDS.AX目的操作效,不能用马上寻址方式。2 .唯税指令(简述堆板的疑念及存取特点,加先进后出)包括入栈(PUSH)和出板(POP)指令两美。仅能进行字运算。(操作数不能是马上效)入栈指令PUSH一般辂式:PUSHOPRD漉操作数可以是CPU内部的16位通用寄存器、段寄存器(CS除外)和内存操作数(全部寻址方式)。入栈操作对象必需是16位数。功能:将数据注入堆栈执行步骤为:SP=SP-2:S
13、P=操作数低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.XC
14、HGAX,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
15、.: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
16、 .地址传送界令(有三条地址传送指令)(1) 1.EA(1.oadEffectiveAddress)一般格式:1.EAOPRD1,0PRD2功能:杷源操作数0PRD2的地址偏移量传送至目的操作数OPRD1。要求:源操作数必需是一个内存操作效,目的操作数必需用.一个16位的通用岑存器.这条指令通常用来建立串操作指令所须的寄存器指针。例:1.EABX.BUFR:把变量BUFR的地址偏移量都分送到BX1.DS(1.oadpointerintoDS)一般格式:1.DS0PRD1,0PRD2功能:完成一个地址指针的传送。地址指针包括段电址部分和偏移量部分。指令将段地址送入DS.偏移量部分送入一个16位的
17、指针寄存器或变及寄存器。要求:源操作数是一个内存操作数,目的操作数是一个逋用寄存器/变址寄存器。例加: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寄存去的指定位,空位没有定义。
18、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/
19、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有影响
20、.一般彩式:ADC0PRD1,0PRD2:带进位的加法功能:OPRD1.OPRDI+0PRD2+CF这条指令与上一条指令奂似,只是在两个操作数相加时,要把进住标记CF的现行位加上去,结果送至目的操作数。ADC指令主要用于多字节运算中。若有两个四字节的数,已分别放在自FIRSTSECOND起先的存储区中,每个数占四个存储单元。存放时,最低字节在地址最低处,则可用以下程序段实现相加。MOVAX,FIRSTADDAX,SECOND:进行字运算MOVTHIRD,AXMOVAX,FIRST+2ADCAX,SEC0ND+2MOVTHIRD+2.AX这条楮令对标记住的影响与ADD相同。一般形式:INCOPR
21、D;功能: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类似,只是在两个操作
22、我相减时,还妥减去借住标记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)则取补后为
23、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标记即可推断
24、两者是否相等。相等的比莪:若两老相等,相减以后结果为零,ZF标记为1,否则为0。若两者不相等,财可在比就指令之后利用其它标记位的状态来确定两者的大小。大小的比较:假如是两个无符号数(如CMPAX.BX)进行比较,则可以依据CF标记的状态推断两数大小。若结果没有产生借位(CF=Or明显AXJBX:若产生了借位(即CF=D,AXBX0习题与思索:1 .设有关等存器及存宏单元的内容加下:DS=2000H,BX=O100H,AX=1200H,SI=0002H120100H=12H,(20101H=34H,20102H=56H,20103=78H.2120O=2AH.21201H=4CH,21202H=
25、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-22.RDX=1100100110111001B.C1.=3.CF=I.送确定下列各条指令单独执行后DX的伍。(1)SHRDX,1(2)SH1.D1.1(3) SA1.DH,1(4)SARDX,C1.(5) RORDX1C1.(6)
26、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
27、的工作过程8086/8088的寻址方式及操作数地址的计算。重点和纲要:要求学生了解串操作指令的功能。指令系统一循环、子程序调用、中断、其他(驾驭指令内涵,会用)蒙学方法、实*步讨同安持*回顾5”X2板书计算机投影仪多媒体课件寻讲授35”2问3X2小fi2X2H论5X2讲授内容:四、聿操作奏指令(选讲或简洁介绍)串操作美楮令可以用来实现内存区域的教据串操作。这些数据串可以是字节串,也可以是字串。1 .重复指令前假串操作类指令可以与次复指令前缀捺作运用。从而可以使操作得以重复进,刚好停止。重复指令前缀的几种形式见表2-3所示。表2-3虫汇通衿式执歼过钱引响给今REP(1)(CX)=0.购退出:(2
28、)CX=CX-1:(3)执行后侯茹令:(4)IU1)-(3)MOVS.STOS.1.OOSREPE/REPZ(1)(CX)=OZF=O.电送th:(2)CX=CX-I:执行后线挂令:(4)ft(1)-CUPS,SCASREPNE/REPNZ(1)(CX)-OAZF=I1e:(2)CX=CX-I:执行后续折令;(4)女及(1)-CMPS.SCAS2 .申指令串指令共有五种,详细见表2-4。对串指令要留意以下几个问题:(1)各指令所运用的.联认等存器是:S1.(源申地址),D1.(目的地址),CX(字串长度),A1.(存取或搜寻的我认值)。(2)源串在数据段,目的电在附加段。*.2-4牟操作希令功能无今拈K执行掇作*传送MOVSDST,SRC由操作皴也明是字节我字操作:火金P1.wOVS8*MOVSWNOVSBMOVSA(ES:DIA1.:SI=SI1:/垦*假,&制的两步(DS:SIAX;SI=SI2:艮疆展限小用的步(3)方向标记与地址指针的修改。DF=I.则修改地址指针时用减法:DF=O时,则修改地址指针时用加法.MOVS,STOS.1.ODS指令不影响标记位。MoVS指令的功能.把数据段中由S1.间接寻址的一个字节(或一个字)传送到附加段中由D1.间接寻址的一个字节单元(或一个字单元)中去,然后,