第3章+汇编语言_课件1

PPT
  • 阅读 42 次
  • 下载 0 次
  • 页数 52 页
  • 大小 417.000 KB
  • 2022-11-24 上传
  • 收藏
  • 违规举报
  • © 版权认领
下载文档30.00 元 加入VIP免费下载
此文档由【小橙橙】提供上传,收益归文档提供者,本网站只提供存储服务。若此文档侵犯了您的版权,欢迎进行违规举报版权认领
第3章+汇编语言_课件1
可在后台配置第一页与第二页中间广告代码
第3章+汇编语言_课件1
可在后台配置第二页与第三页中间广告代码
第3章+汇编语言_课件1
可在后台配置第三页与第四页中间广告代码
第3章+汇编语言_课件1
第3章+汇编语言_课件1
还剩10页未读,继续阅读
【这是免费文档,您可以免费阅读】
/ 52
  • 收藏
  • 违规举报
  • © 版权认领
下载文档30.00 元 加入VIP免费下载
文本内容

【文档说明】第3章+汇编语言_课件1.ppt,共(52)页,417.000 KB,由小橙橙上传

转载请保留链接:https://www.ichengzhen.cn/view-44745.html

以下为本文档部分文字说明:

计算机原理讲义汇编语言第三章指令系统与汇编语言程序设计计算机原理讲义指令第3.1节基本概念一.指令与指令系统(一)指令(Instruction)指令是微处理器执行某种操作的命令。操作:传送类加工处理类:算术运算、逻辑运算、移位循环控制类:转移、调用、中断串操作类计算

机原理讲义指令系统与寻址方式(二)指令系统(InstructionSet)微处理器全部指令的集合称为指令系统。8086CPU包括133条指令(三)寻址方式一条指令通常包括两部分操作码:规定所要执行的操作类型操作数:所需要处理的数据或者数据的地址

信息我们把获得数据或者数据地址信息的方式称为寻址方式例:MOVAX,1234H在这条指令中有两个操作数,按照在指令中所处的位置,将前者称为目的操作数,后者称为源操作数。该指令将数据1234H传送到数据寄存器AX中,源操作数是“立

即”寻址方式,目的操作数是“寄存器”寻址方式。计算机原理讲义隐含寻址第3.2节8086寻址方式寻址方式:寻找指令中操作数地址的方式。一.数据寻址方式(一)隐含寻址指令已经默认对CPU中的某个寄存器进行操作,不用在指令

中指明所使用的寄存器,即隐含了规定的操作数,这样的寻址方式称为隐含寻址。例:DAA指令,只有操作码,无操作数,但已经规定是对AL中的内容进行十进制调整计算机原理讲义立即寻址与寄存器寻址(二)立即寻址操作

数直接写在指令中,在指令译码执行时,可以立即得到,同时把操作数又称作“立即数”例:MOVAL,5;(AL)5,操作数5采用的就是立即寻址(三)寄存器寻址操作数放在CPU内部的寄存器中,在指令中直接指

出寄存器的名字。例:MOVBX,AX;(BX)(AX)以上三种寻址方式都是直接在处理器内部获得数据,操作速度快。计算机原理讲义存储器寻址(四)存储器操作数寻址操作数存放在存储器中时,指令执行时必须通过总线在存储器中存取操作数。执行单元EU根据指令中给出的寻址方式计算出16

位的偏移量,称为有效地址(EA)送到总线接口单元BIU,经过加法器生成20位实际物理地址,在存储器读写总线周期对存储器进行操作,一般在表示EA时,用[操作数]表示。由于计算EA需要时间,进行总线操作比较慢,因此存储器操作寻址比前三种要慢。1.直接寻址指令中直接给出了

操作数的有效地址例:MOVSI,[2000H];(SI)(2000H)上例中默认使用数据段,若需使用其他段可使用段超越,MOVSI,ES:[2000H]计算机原理讲义间接寻址2.间接寻址指令中寄存器的值是操作数的

有效地址,可间接寻址的寄存器有:BX、BP、SI、DI例:MOVAL,[BX];(AL)((BX))BX用于间接寻址时,默认段寄存器为DS,允许段超越BP用于间接寻址时,默认段寄存器为SS,允许段超越SI用于间接寻址时,默认段寄存器

为DS,允许段超越DI用于间接寻址时,只有在串操作指令中,默认段寄存器为ES,其余情况默认段寄存器均为DS,不允许段超越直接寻址时,默认段寄存器为DS,允许段超越注:IP只能在代码段中(CS)寻址,SP只能在堆栈段(SS)中寻址计算机原理讲义相对寻址3.相对寻址①基址寻址操作数的有效地址是

一个基址寄存器的内容加上一个8位或者16位的偏移量,基址寄存器是BX或者BP。例:MOVAX,[BX+1000H];(AX)((BX)+1000H)有时也写成MOVAX,1000H[BX]或MOVAX,[BX]1000H②变址寻址操作数的有效地址是

一个变址寄存器的内容加上一个8位或者16位的偏移量,变址寄存器是SI和DI。例:MOVAX,ARRAY[SI];(AX)((SI)+ARRAY)在C语言中,常使用全局数组,例如定义了一个全局数组A[3],具有三个元素,分别为A[0]、A[1]、A[2],实

计算机原理讲义际上A在编译时就转换成具体的在数据段中分配的位置,例如1000H,下标0、1、2一般就存放在寄存器中,如SI,通过1000H[SI]就可以访问到具体的数据。4.基址变址寻址操作数的有效地址是由基址寄存器和

变址寄存器的内容相加产生例:MOVAX,[BP+SI];(AX)((BP)+(SI))5.相对基址变址寻址操作数的有效地址是由基址寄存器、变址寄存器和偏移量三者相加产生。例:MOVAX,[BX+SI+3H];(AX)((BX)+

(SI)+3H)有时也可写成MOVAX,3H[BX][SI]或MOVAX,3H[BX+SI]基址变址寻址计算机原理讲义I/O端口寻址6.数据串寻址DS:SI指示源串,ES:DI指示目的串,串长度计数用CX,并自动修改指针和计数器值,只用于串操

作命令。例:MOVSB;((ES:DI))((DS:SI)),(CX)=(CX)-1,;(SI)=(SI)+1,(DI)=(DI)+1(五)I/O端口寻址操作数存放在I/O端口中,指令执行时必须通过累加器(AX或AL)实现对端口的访问。1.直接端口寻址指令直接提供8位端口的地址。例:INAL,6

3H;(AL)(0063H)在端口寻址时,地址可以不需要加[],当端口地址用一个字节来表示时,可使用直接端口寻址计算机原理讲义I/O端口寻址2.间接端口寻址由DX寄存器给出16位端口地址。例:MOVDX,162HINAX,DX从端口162H读取一个字的数据到AX中,实质是用

DX间接表示端口地址。比较:MOVAX,DX;(AX)(DX)INAX,DX;(AX)((DX))计算机原理讲义程序寻址二.程序寻址方式(一)段内直接寻址短跳转:把IP的内容加上一个字节的补码数作为新的

IP,往前最多跳-128个字节,往后最多跳127个字节。近跳转:把IP的内容加上两个字节的补码数作为新的IP,往前最多跳-32768个字节,往后最多跳32767个字节。(二)段内间接寻址将寄存器或存储器操作数的内容赋给IP,计算机原理讲义程序寻址(三)段间直接寻址直接在指令中给出新的CS和IP

内容(四)段间间接寻址用存储器操作数的内容赋给CS和IP计算机原理讲义第3.3节8086指令格式1.指令格式指令一般由1~6个字节组成,具体格式如下:76543210OPCODEDW76543210MODREGR/M字节1字节2字节3字节4LOWDISP或DATAHIGH

DISP或DATA字节5字节6LOWDATAHIGHDATA(一)说明1.字节1①OPCODE:指令操作码②D:操作数传输方向(立即数指令和串操作指令除外)D=0,Reg为源操作数D=1,Reg为目的

操作数③W:操作数字节长度W=0,字节操作W=1,字操作计算机原理讲义指令格式2.字节2,寻址方式①MOD:寻址方式字段00=存储器方式,指令中无偏移量01=存储器方式,指令中有8位偏移量10=

存储器方式,指令中有16位偏移量11=寄存器方式,指令中无偏移量②Reg:寄存器编码字段000=AL/AX100=AH/SP001=CL/CX101=CH/BP010=DL/DX110=DH/SI0

11=BL/BX111=BH/DI计算机原理讲义指令格式③R/M:寄存器/存储器字段在MOD=11,寄存器模式下,R/M给出第二个操作数的寄存器编码。在MOD≠11,存储器模式下,R/M给出计算有效地址的方法。R/MW=0W=1R/MMOD=00MOD=01MOD=1000

0ALAX000BX+SIBX+SI+D8BX+SI+D16001CLCX001BX+DIBX+DI+D8BX+DI+D16010DLDX010BP+SIBP+SI+D8BP+SI+D16011BLBX011BP+DIBP+DI+D8BP+DI

+D16100AHSP100SISI+D8SI+D16101CHBP101DIDI+D8DI+D16110DHSI110直接地址BP+D8BP+D16111BHDI111BXBX+D8BX+D16MOD=11MOD≠11有

效地址计算方法计算机原理讲义指令格式3.字节3~字节6DISP:存储器操作数地址偏移量,长度由MOD字段定义DATA:指令中的立即数例:MOVAX,[BX]指令码为:8B07MOV[BX+SI+2000H],2

345H指令码为:C78000204523MOVAX,BX指令码为:89D8计算机原理讲义第3.4节、8086指令系统•一、操作数符号表示–DST:目的操作数–SRC:源操作数–TARGET:循环、转移和调用指令操作数–reg:寄存

器操作数,字节或字–reg8:寄存器操作数,字节–reg16:寄存器操作数,字–mem:存储器操作数,字节或字–mem8:字节型存储器操作数–mem16:字型存储器操作数–mem32:双字型存储器操作数–acc:累加器AL或AX–seg_r

eg:段寄存器–imm:立即操作数,字节或字–imm8:8位立即操作数–imm16:16位立即操作数–short_label:短标号(8位偏移量)–near_label:近标号(16位地址或偏移)–far_label:远标号(32位地址)计算机原理讲义二、数据传送指令

•(一)通用数据传送指令•MOVDST,SRC;(DST)←(SRC)•具体指令:–movmem,acc–movacc,mem–movreg,reg–movreg,mem–movmem,reg–movreg,imm–movmem,imm

–movseg_reg,reg16;CS除外–movseg_reg,mem16;CS除外–movreg16,seg_reg–movmem16,seg_reg•例:•合法指令:–MOVAX,[SI];(AX)←((SI))–MOVAL,[SI];(AL)←((SI))–MOVDS,AX;(

DS)←(AX)–MOVAX,DS;(AX)←(DS)–MOVSI,2000H;(SI)←2000H–MOV[SI],20H;((SI))←20H–MOVSI,[2000H];(SI)←(2000H)–MOVSI,[SI+6];(SI)←((SI)+6)–MOVAX,AX;(AX)

←(AX)•非法指令:–MOV[SI],[2000H]–MOVCS,BX–MOVDS,2000H计算机原理讲义(二)堆栈及堆栈操作•1堆栈–堆栈是一种按先进后出(FILO)原则存取的存储器,它由堆栈指针寄存器SS:SP和RAM中的一

部分组成,主要用于保护现场和恢复现场。–SP的内容总是指向栈顶,即最后推入信息所在单元。•2进栈指令–PUSHSRC;(SP)←(SP)-2,((SP)+1,(SP))←(SRC)–具体指令:•PUSHreg16•PUSHseg_reg•PUSHmem16•3出栈指令–POPDS

T;(DST)←((SP)+1,(SP)),(SP)←(SP)+2)–具体指令:•POPreg16•POPseg_reg•POPmem16计算机原理讲义•4堆栈的应用–主要用于子程序调用或中断子程序的现场保护和恢复,以及参数传递等。–例1、保护现场MDSESAXBXSS:SP

010000FE00FC00FA00F8SS:SPfun:PUSHDSPUSHESPUSHAXPUSHBX;处理部分POPBXPOPAXPOPESPOPDSRET•例2、用堆栈交换数据•PUSHAX•PUSHBX•POPAX•POPBXMAXBXSS:S010000

FE00FCSS:S堆栈的应用计算机原理讲义(三)交换指令•(三)交换指令•XCHGDST,SRC•;(DST)<=>(SRC)•具体指令:–XCHGacc,reg–XCHGmem,reg–XCHGreg,reg•例1:–XCHGA

X,BX;(AX)<=>(BX)–XCHGAL,BL;(AL)<=>(BL)•例2:使用3种方法完成将寄存器AX和BX内容交换。•方法1–XCHGAX,BX;(AX)<=>(BX)•方法2–PUSHAX–PUSHBX–POPAX–POPBX•方法3:–MOVCX,AX–MOVAX,BX–M

OVBX,CX计算机原理讲义•1、输入指令–INAL,PORT;(AL)←(PORT)–INAX,PORT;(AX)←(PORT)–INAL,DX;(AL)←((DX))–INAX,DX;(AX)←((DX)

)•PORT为8位直接地址•2、输出指令–OUTPORT,AL;(PORT)←(AL)–OUTPORT,AX;(PORT)←(AX)–OUTDX,AL;((DX))←(AL)–OUTDX,AX;((DX))←(AX)(四)累加器专用传送指令•3、换码指令•XLA

TSRC;SRC仅做类型检查•或XLAT;(AL)←((BX)+(AL))•例:•MOVBX,offsetTABLE•XLATTABLETABLE:DB0DB1DB4DB9DB16DB2501491625M

TABLE计算机原理讲义–LEA(loadeffectiveaddress)–LDS(loadDSwithpointer)–LES(loadESwithpointer)•1、有效地址传送指令–LEAreg16,SRC;(reg16)←SRC•例:–MSGdb‘Hello$’–L

EADX,MSG;–指令执行后–(DX)=2000H–相当于:MOVDX,OFFSETMSG–如果指令:–MOVDX,MSG–则:(DH)=‘e’,(DL)=‘H’Hello$MMSG2000HDS:(五)地址传送指令计算机原理讲义•2、指针送寄存器和DS•LDSreg16,mem3

2–;(reg16)←(mem32)–;(DS)←(mem32+2)–把源操作数指定的4个字节传送到指定的寄存器及DS寄存器中。•例:–VECTDW01F0H–DW2018H–LDSBX,VECT;–执行后:–(DS)=2018H–(BX)=01F0HMVECT20

00HDS:F00118203、指针送寄存器和ESLESreg16,mem32;(reg16)←(mem32);(ES)←(mem32+2)把源操作数指定的4个字节传送到指定的寄存器及ES寄存器中。地址传送指令计算机原理讲

义(六)标志寄存器传送1、LAHF;(AH)←(flag低字节)2、SAHF;(flag低字节)←(AH)3、PUSHF;(SP)←(SP)-2,((SP)+1),(SP))←flag4、POPF;flag←((SP)+1),(SP)),(SP)←(SP)+2(六)标志寄存器传送

计算机原理讲义三、算术指令•(一)加法指令•1、ADDDST,SRC•;(DST)←(SRC)+(DST)•具体指令:–ADDreg,reg–ADDreg,mem–ADDmem,reg–ADDreg,imm–ADDmem,imm–ADDacc,imm•2、ADCDST,SRC•;(DST)←

(SRC)+(DST)+CF•具体指令:–ADCreg,reg–ADCreg,mem–ADCmem,reg–ADCreg,imm–ADCmem,imm–ADCacc,imm•3、INCDST•;(DST)←(DST)+1•具体指令:–INCreg16–INCreg8–INCm

em计算机原理讲义算术类指令间接寻址程序:LEASI,DATA1LEADI,DATA2LEABX,RESULTMOVAX,[SI]ADDAX,[DI]MOV[BX],AXMOVAX,[SI+2]ADCAX,[DI+2]MOV[B

X+2],AX直接寻址程序:MOVAX,DATA1ADDAX,DATA2MOVRESULT,AXMOVAX,DATA1+2ADCAX,DATA2+2MOVRESULT+2,AX•例:将数据段DATA1和DATA2中的32位二进制无符号数相

加,结果存放在RESULT单元中计算机原理讲义(二)减法指令•1、SUBDST,SRC•;(DST)←(DST)-(SRC)•具体指令:–SUBreg,reg–SUBreg,mem–SUBmem,reg–SUBr

eg,imm–SUBmem,imm–SUBacc,imm•2、SBBDST,SRC•;(DST)←(DST)-(SRC)-CF•具体指令:–SBBreg,reg–SBBreg,mem–SBBmem,reg–SBBreg,imm–SBBmem,imm–SBBacc,i

mm计算机原理讲义•5、CMPDST,SRC•;(DST)-(SRC),仅影响标志•具体指令:–CMPreg,reg–CMPreg,mem–CMPmem,reg–CMPreg,imm–CMPmem,imm–CMPacc,imm3、DECDST;(DST)←(DST)-1具体指令:DE

Creg16DECreg8DECmem4、NEGDST;(DST)=0-(DST)具体指令:NEGregNEGmem(二)减法指令计算机原理讲义•1、无符号数乘法•MULSRC•;(AX)←(AL)*(SRC)•(DX,AX)←(AX)*(SRC)•具体指令:–MULre

g8–MULreg16–MULmem8–MULmem16(三)乘法指令•2、有符号数乘法•IMULSRC•;(AX)←(AL)*(SRC)•(DX,AX)←(AX)*(SRC)•具体指令:–IMULreg8–IMULreg16–IMUL

mem8–IMULmem16计算机原理讲义(四)除法指令•1、无符号数除法指令•DIVSRC•;(AL)←(AX)/(SRC),•(AH)←(AX)%(SRC)•或(AX)←(DX,AX)/(SRC),•(DX)←(DX,AX)%(SRC)•具体指

令:–DIVreg8–DIVreg16–DIVmem8–DIVmem16•2、有符号数除法指令•IDIVSRC;操作与DIV相同•具体指令:–IDIVreg8–IDIVreg16–IDIVmem8–IDIVme

m16•3、字转换成字节指令(有符号数)•CBW;若(AL)<80H则(AH)←0,否则(AH←FFH。•4、有符号字转换成双字指令•CWD;若(AX)<8000H,则(DX)←0,否则(DX)←FFFFH.计算机原理讲义(五)BCD

码调整指令•1、8086支持两种BCD码运算–压缩BCD码,通常BCD码。每个字节2位BCD码。如:10010101B=95H,值为95–非压缩BCD码,低4位为BCD码,高4位为零。如:00000101B表示BCD码5。–加减运算

非压缩BCD码高4位的值可不为0,乘除时高4位必须是0。•2、压缩BCD码调整指令•DAA;对加法运算结果(AL)进行BCD码调整。•DAS;对减法运算结果(AL)进行BCD码调整。•3、非压缩BCD码调整•

AAA;对加法运算非压缩BCD码进行调整,进位送(AH)中•AAS;对减法运算非压缩BCD码进行调整•AAM;对乘法运算非压缩BCD码进行调整•AAD;对除法运算非压缩BCD码进行调整•例:下列程序段执行后(AL)=?CF=?–MOVAL,89H–ADDAL,43H–DAA计算机原

理讲义算术类指令例:将32位无符号数DATA1和DATA2相乘,结果存于RESULT中。DA1HDA1L*)DA2HDA2LDA1L2LHDA1L2LLDA1H2LHDA1H2LLDA2H1LHDA2H1LL+)DA1H2H

HDA1H2HL计算机原理讲义算术类指令LEASI,RESULTSUBAX,AXMOV[SI+4],AXMOV[SI+6],AXMOVAX,DATA1MULDATA2MOV[SI],AXMOV[SI+2],DXMOVAX,DATA1+2MULDATA2

ADD[SI+2],AXADC[SI+4],DXADC[SI+6],0MOVAX,DATA1MULDATA2+2ADD[SI+2],AXADC[SI+4],DXADC[SI+6],0MOVAX,DATA1+2MULDATA2+2ADD[SI+4],AXADC[SI+6],DX计算

机原理讲义四、逻辑指令•2、ORDST,SRC•;(DST)←(DST)|(SRC)•具体指令–ORreg,reg–ORreg,mem–ORmem,reg–ORreg,imm–ORmem,imm–ORacc,imm•3、NOTDST;(DST)←(

DST)•具体指令:–NOTreg–NOTmem•(一)逻辑运算指令•1、ANDDST,SRC•;(DST)←(DST)&(SRC)•具体指令–ANDreg,reg–ANDreg,mem–ANDmem,reg–ANDreg,imm–AN

Dmem,imm–ANDacc,imm计算机原理讲义逻辑指令•4、XORDST,SRC•;(DST)←(DST)^(SRC)•具体指令–XORreg,reg–XORreg,mem–XORmem,reg–

XORreg,imm–XORmem,imm–XORacc,imm•5、TESTDST,SRC;(DST)&(SRC),仅影响标志•具体指令–TESTreg,reg–TESTreg,mem–TESTreg,imm–TESTmem,imm–TESTacc,imm

计算机原理讲义(二)移位指令•1、逻辑左移指令•SHLDST,count;•;count可以为1,•;也可以为CL做移位计数。•具体指令:–SHLreg,1–SHLreg,CL–SHLmem,1–SHLmem,CL–;移位和循

环指令均雷同。2、算术左移指令SALDST,count;CFMSBLSBDST0CFMSBLSBDST0例:写出3条指令将寄存器AX中的数据乘2。1SALAX,12SHLAX,13ADDAX,AX计算机原理讲义•3、逻辑右移指令•SH

RDST,count;•4、算术右移指令•SARDST,count;•5、循环左移指令•ROLDST,count;•6、循环右移指令•RORDST,count;•7、带进位循环左移指令•RCLDST,count;•8、带进位循环右移指令•RCRDST,count;CFMSBLSBD

ST0CFMSBLSBDSTCFMSBLSBDSTCFMSBLSBDSTCFMSBLSBDSTCFMSBLSBDST计算机原理讲义五、串处理指令•(一)数据串传送指令•1、串传送指令–MOVSDST,SR

C;DST与SRC做类型检查,•具体指令:–MOVSB;((ES:DI))←((DS:SI)),–(SI)←(SI)±1,(DI)←(DI)±1–MOVSW;((ES:DI))←((DS:SI)),(SI)←(

SI)±2,(DI)←(DI)±2–其中,加、减地址指针SI和DI由FLAG中的DF决定,DF=0地址增加,DF=1地址减少。•2、建立方向标志指令–CLD;DF←0–STD;DF←1•3、重复串操作直到•(CX)=0–在串操作指令前,可加重复操作REP前缀,使串连续操作直到(CX)=0

•例:–REPMOVSB;以CX寄存器做计数器,每传送一个数(CX)减1,直到(CX)为0。计算机原理讲义串操作类指令例1:将1000H开始的10个字节移动到2000H开始的单元MOVSI,1000H;置源操作数起始地址MOVDI,2000H;置目的操作数起始地址MOVAX,DS;将DS和E

S段统一,比PUSHDSMOVES,AX;POPES要快MOVCX,0AH;初始化CX为10,移动10个字节CLD;使DF=0,使地址作增量变化REPMOVSB;(ES:DI)←(DS:SI),SI←SI+1,;(DI)←(

DI)+1INT3;断点指令计算机原理讲义•4、存入串指令•STOSDST;DST做类型检查•具体指令:•STOSB•;((ES:DI))←(AL),(DI)←(DI)±1•STOSW•;((ES:DI))←(AX),(DI)←(DI)±2–由DF决定方向,可加入前缀REP。•5、从串中取指令•

LODSSRC;SRC做类型检查•具体指令:•LODSB•;(AL)←((DS:SI)),(SI)←(SI)±1•LODSW•;(AX)←((DS:SI)),(SI)←(SI)±2–地址增减由DF决定。串操作类指令计算机原理讲义•1、串比较指令•CMPSSRC,DST–;S

RC和DST仅做类型检查•具体指令:•CMPSB;((DS:SI))-((ES:DI)),(SI)←(SI)±1,(DI)←(DI)±1•CMPSW;((DS:SI))-((ES:DI)),(SI)←(SI)±2,(

DI)←(DI)±2–串比较仅影响标志。–地址增减由DF决定。•2、条件重复前缀•(1)相等或为0时重复–REPZ–REPE–执行操作:若(CX)=0或ZF=0(比较不相等)时退出,否则继续执行。•(2)不相等或不为0时重复–REPNZ–REPNE–执行操作:若

(CX)≠0且ZF=0(比较不相等)时继续执行,否则退出。(二)字符串扫描和比较指令计算机原理讲义•3、串扫描指令•SCASDST;DST做类型检查•具体指令:–SCASB;(AL)-((ES:DI)),–

;(DI)←(DI)±1,影响标志–SCASW;(AX)-((ES:DI)),–;(DI)←(DI)±2,影响标志–地址增减由DF决定。–可加条件前缀。•例:REPNZSCASB•例:以ds:si为起始地址以NULL结束标志的字符串,计算其长度,结

果存于(AX)中•movdi,si;•movax,ds;•moves,ax;es:di指向字符串•xoral,al;(al)清零•movcx,0ffffh;(cx)置初值•cld•repnzscasb

;查找结束符•movax,cx•notax;(cx)含结束符长度•decax;去掉结束符•ret计算机原理讲义六、控制转移指令•(一)无条件转移指令•JMPTARGET•;转移到目的地址•具体指令:–JMPshort_label;(IP)<-(IP)+short_label–J

MPnear_label;(IP)<-(IP)+near_label–JMPfar_label;(CS:IP)<-far_label–JMPmem16;间接转移;(IP)<-(mem16)–JMPreg1

6;间接转移;(IP)<-(reg16)–JMPmem32;间接转移;(IP)<-(mem32),;(CS)<-(mem32+2)(二)条件转移指令•1、根据单个标志转移–JZshort_label;结果为0转移–JEshort_label;结果相等转移–测试条件

:ZF=1–JNZshort_label;结果不为0则转移–JNEshort_label;结果不相等则转移–测试条件:ZF=0计算机原理讲义•JSshort_label;结果为负则转移•测试条件:SF=1•JNSshort_label;结果非负则转移•测试条件:SF=0•

JNOshort_label;结果不溢出则转移•测试条件:OF=0•JOshort_label;结果溢出则转移•测试条件:OF=1•JPshort_label;奇偶为1则转移•JPEshort_label;偶转移

•测试标志:PF=1•JNPshort_label;奇偶为0则转移•JPOshort_label;奇转移•测试标志:PF=0•JBshort_label;有借位转移•JNAEshort_label;不大于等于转移•JCshort_label;有进位转移•测试条件:CF=1•

JNBshort_label;无借位转移•JAEshort_label;大于等于转移•JNCshort_label;无进位转移•测试条件:CF=0条件转移指令计算机原理讲义•2、两个无符号数比较转移–JB/JNAE/JC;CF=1–JNB/JAE/J

C;CF=0•JBEshort_label;小于等于转移•JNAshort_label;不大于转移•测试条件:CF|ZF=1•JNBEshort_label;不小于等于;转移•JAshort_label;大

于转移•测试条件:CF|ZF=0•3、两个有符号数比较转移•JLshort_label;小于转移•JNGEshort_label;不大于等于转移•测试条件:SF^OF=1•JNLshort_label;不

小于转移•JGEshort_label;大于等于转移•测试条件:SF^OF=0•JNLEshort_label;不小于等于转移•JGshort_label;大于转移•测试条件:(SF^OF)|ZF=0•JLEsho

rt_label;小于等于转移•JNGshort_label;不大于转移•测试条件:(SF^OF)|ZF=1条件转移指令计算机原理讲义•(三)循环指令•1、LOOPshort_label•;(CX)←(CX)

-1,(CX)≠0则转移•2、LOOPZshort_label•LOOPEshort_label•;(CX)←(CX)-1,(CX)≠0且ZF=1(为0)则转移•3、LOOPNZshort_label•LOOPNEs

hort_label•;(CX)←(CX)-1,(CX)≠0且ZF=0(非0)则转移4、测试CX值,为0则转移JCXZshort_label;(CX)=0则转移测试条件:(CX)=0(三)循环指令计算机原理讲义(四)子程序调用与返回

•1、子程序调用指令–CALLTARGET•具体指令–CALLnear_proc;段内调用–CALLfar_proc;段间调用–CALLmem16;–CALLregp16;–CALLmem32;•2、返回指令–RET;返回指令9A000100201000:0020CS:IPM2000

:0100指令1指令2RETCALL2000:01002FFE100000251000:0025M2FFASPSP堆栈计算机原理讲义3.RETIMM16带立即数返回说明:在RET指令的基础上,当从堆栈中弹出IP和CS后,再将SP加上一个字的立即数,使得返回后(SP)←(

SP)+IMM16(五)中断调用与返回1.中断调用①INTn操作:依次将FLAG,当前CS和IP(即断点地址)放入堆栈,清除IF和TF。执行中断类型码为n的中断服务程序。注:INTn的机器码为CDHnINT3的机器码特殊,为CC

H(五)中断调用与返回计算机原理讲义②INTO说明:在有符号数运算结束以后,可以使用INTO,若OF=1,则执行中断指令INT4,否则无操作。2.IRET中断返回指令从中断程序返回主程序,恢复断点和FLAG(六)控制类指令1.标志处理指令CLC/STC/CMC对CF清0/置位/取反C

LD/STD对DF清0/置位CLI/STI对IF清0/置位(六)控制类指令计算机原理讲义2.处理器控制指令①NOP空操作指令占用一个字节的机器码,不执行任何操作②HLT(Halt)停机指令该指令使处理器处于停机状态,以便等待一次外部中断到来。③WAIT等待指令该指令使

处理器处于空转状态,也可用来等待外部中断的到来④ESC(Escape)换码指令用作前缀格式:ESCMEM,其中MEM指出一个存储单元,ESC指令把该存储单元的内容送到数据总线去。⑤LOCK封锁指令用作前缀该指令与其他指

令联合,用来维持总线的封锁信号直到与其联合的指令执行完为止。处理器控制指令

小橙橙
小橙橙
文档分享,欢迎浏览!
  • 文档 25747
  • 被下载 7
  • 被收藏 0
相关资源
广告代码123
若发现您的权益受到侵害,请立即联系客服,我们会尽快为您处理。侵权客服QQ:395972555 (支持时间:9:00-21:00) 公众号
Powered by 太赞文库
×
确认删除?