




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第3章章 80 x86的指令系统和寻址方式的指令系统和寻址方式 3.180 x86的寻址方式的寻址方式 3.3 80 x86的指令系统的指令系统 3.4 80 x86的机器语言指令概况的机器语言指令概况基本概念指令系统每一种计算机都有一组指令集供用户使用,这组指令集称为该计算机的指令系统。指令集中的每条指令在汇编语言中都是用助记符来表示的。基本概念指令的构成w 指令由操作码和操作数两部分组成w 操作码说明计算机要执行哪种操作,如传送、运算、移位、跳转等操作,它是指令中不可缺少的组成部分w 操作数是指令执行的参与者,即各种操作的对象w 有些指令不需要操作数,通常的指令都有一个或两个操作数,也有
2、个别指令有3个甚至4个操作数操作码操作码操作数操作数基本概念8086指令的基本格式w 操作码 目的操作数,源操作数 ;注释DESTSRCw 内的内容可缺省w 书写注意事项: 操作码与操作数至少有一个空格或制表符分隔 操作数之间必须用“,”相分隔, DEST在前, SRC在后w 每种指令的操作码:n用一个唯一的助记符表示(指令功能的英文缩写)n对应着机器指令的一个二进制编码w 指令中的操作数:n可以是一个具体的数值n可以是存放数据的寄存器n或指明数据在主存位置的存储器地址基本概念寻址方式w 在指令中为了取得操作数地址所使用的方式w 寻找操作数的过程就是操作数的寻址w 不同的指令系统都规定一些寻址
3、方式供编程时选用w 指令的寻址方式主要由操作数的形式表示出来w 操作数采取哪一种寻址方式,会影响机器运行的速度和效率 3.1 80 x86的寻址方式的寻址方式一、与数据有关的寻址方式一、与数据有关的寻址方式二、与转移地址有关的寻址方式二、与转移地址有关的寻址方式n立即(数)寻址立即(数)寻址n寄存器寻址寄存器寻址n直接寻址直接寻址n寄存器间接寻址寄存器间接寻址n寄存器相对寻址寄存器相对寻址n基址变址寻址基址变址寻址n相对基址变址寻址相对基址变址寻址n串操作寻址串操作寻址n端口寻址端口寻址1.立即(数)寻址立即(数)寻址w 指令中的操作数直接存放在机器代码中,紧跟在操作码之后(操作数作为指令的一
4、部分存放在操作码之后的主存单元中)w 这种操作数被称为立即数immn它可以是8位数值i8(00HFFH)n也可以是16位数值i16(0000HFFFFH)w 立即数寻址方式常用来给R/M赋值w 立即数只能用于源操作数立即数寻址指令MOV AL,05H ;AL05HMOV AX,0102H;AX0102H立即数寻址的功能立即数寻址的执行2. 寄存器寻址寄存器寻址w 操作数存放在CPU的内部寄存器reg中,可以是:n8位寄存器:AH、AL、BH、BL、CH、CL、DH、DLn16位寄存器:AX、BX、CX、DX、SI、DI、BP、SPn4个段寄存器seg:CS、DS、SS、ESMOV AX,123
5、4H;AX1234HMOV BX,AX;BXAX寄存器寻址的功能寄存器寻址的执行存储器操作数的寻址w 当操作数存放在内存中时,寻找操作数归结为当操作数存放在内存中时,寻找操作数归结为如何确定存储单元的地址如何确定存储单元的地址w 逻辑地址逻辑地址段基值:偏移量段基值:偏移量由段寄存器的内容给出由段寄存器的内容给出 主要确定该部分的内容主要确定该部分的内容(EA)w 物理地址物理地址=(段寄存器)(段寄存器) 16 + EA位移量:指令中给出位移量:指令中给出16位数(常数、符号)位数(常数、符号) EA 基地址:有基址寄存器基地址:有基址寄存器BX或基址指针或基址指针BP给出给出 由变址寄存器
6、(由变址寄存器(SI或或DI)给出给出 在和,可在在和,可在64KB范围内寻址。实际寻范围内寻址。实际寻址过程中,可能包含不同部分,址过程中,可能包含不同部分,EA为它为它们的相加之构成们的相加之构成EA的的3个分量的不同组合,个分量的不同组合,形成了不同的寻址方式。形成了不同的寻址方式。3. 直接寻址直接寻址w 有效地址在指令中直接给出有效地址在指令中直接给出操作数的操作数的16位偏移量直接包含在指令中,与操作码位偏移量直接包含在指令中,与操作码一起放在代码段中一起放在代码段中w 用符号表示的位移量用符号表示的位移量MOV BX,VAR MOV BX,DS:VAR;表示将用符号表示将用符号V
7、AR表示的字单元的内容表示的字单元的内容 AX;不声明段则默认为数据段,指明段寄存器则可实现;不声明段则默认为数据段,指明段寄存器则可实现段跨越段跨越w 用常数表示的位移量用常数表示的位移量MOV AX,DS:2000H;表示将数据段偏移表示将数据段偏移2000H字节的字单元的内容字节的字单元的内容 AX直接寻址的功能MOV AX,DS:2000H直接寻址的执行MOV AX,DS:2000H4. 寄存器间接寻址寄存器间接寻址w 有效地址存放在寄存器中,如BX、BP、SI、DIw 所使用的寄存器相当于地址指针,当修改其内容后可指向不同的存储单元w 书写时用括住寄存器名,以区别于寄存器寻址w 若以
8、BX、SI、DI间址,操作数默认在数据段;若以BP间址,操作数默认在堆栈段;使用段超越前缀改变段MOV AX,SI MOV AX, DS:SIMOV CL,BX MOV CL, DS:BXMOV BL,BP MOV BL, SS:BP寄存器间接寻址的功能寄存器间接寻址的执行5.寄存器相对寻址方式寄存器相对寻址方式w 直接变址寻址,基址寻址,变址寻址w 有效地址是寄存器内容与有符号8位或16位位移量之和,寄存器可以是BX、BP或SI、DIEA BX/BP 或 SI/DI 0/8/16位位移量w 段地址对应BX/SI/DI寄存器默认是DS,对应BP寄存器默认是SS;可用段超越前缀改变w 该方式不仅
9、可以修改指针,还可以修改位移量,对数组操作十分方便基址寻址基址寻址变址寻址变址寻址5.寄存器相对寻址方式寄存器相对寻址方式MOV AX,10HSI MOV AX,DS:10HSIMOV AX,ARRAYBX MOV AX,DS:ARRAYBXMOV TABLEDI,AL MOV DS:TABLEDI,ALMOV TABZBP,BL MOV SS:TABZBP,BL 寄存器相对寻址的功能寄存器相对寻址的执行代码段DS数据段操作码24H00H12H34H56H78H9AHMOV AL,0024HSI0024H(SI)=0(AL)=12H(SI)=1(AL)=34H(SI)=2(AL)=56H(SI
10、)=3(AL)=78H(SI)=4(AL)=9AHEA=24H+(SI)(SI)可看作数据起始单元可看作数据起始单元的偏移量的偏移量数组内某元素距数组数组内某元素距数组起始单元的偏移起始单元的偏移通过修改通过修改SI可遍历整个数组可遍历整个数组6.基址变址寻址方式基址变址寻址方式w 有效地址由基址寄存器(有效地址由基址寄存器(BX或或BP)的内的内容加上变址寄存器(容加上变址寄存器(SI或或DI)的内容构成:的内容构成:EABX/BPSI/DIw 段地址对应段地址对应BX基址寄存器默认是基址寄存器默认是DS,对对应应BP基址寄存器默认是基址寄存器默认是SS;可用段超越可用段超越前缀改变前缀改变
11、6.基址变址寻址方式基址变址寻址方式MOV AX,BXSI MOV AX,DS:BX+SIMOV AX,BPDI MOV AX,SS:BP+DIMOV AX,DS:BPDI MOV AX, DS:BP+DI基址变址寻址的功能基址变址寻址的执行7.相对基址变址寻址方式相对基址变址寻址方式w 有效地址是基址寄存器(有效地址是基址寄存器(BX/BP)、)、变址寄存变址寄存器(器(SI/DI)与一个与一个8位或位或16位位移量之和:位位移量之和:EABX/BPSI/DI8/16位位移量位位移量w 该方式中,该方式中,BX/BP选一,选一,SI/DI选一选一w 段地址对应段地址对应BX基址寄存器默认是基
12、址寄存器默认是DS,对应对应BP基址寄存器默认是基址寄存器默认是SS;可用段超越前缀改变可用段超越前缀改变7.相对基址变址寻址方式相对基址变址寻址方式MOV AX, 06HBX+SI MOV AX, DS:BX+SI+06HMOV AL,TABBXDI MOV AL,DS:TABLEBXDI MOV DWORDBPSI,DX MOV SS:DWORDBPSI,DX MOV AX,ARRAYBXBP MOV AX,DASIDI 31A003000:1A00BX、SI分别存放数组的脚标MOV AL,ARRAYBXSIDS数据段ARRAYSIBX二维数组起始单元二维数组起始单元 EA 之间表示相加的
13、关系之间表示相加的关系 BXSI BX+SI二、与转移地址有关的寻址方式二、与转移地址有关的寻址方式 程序代码亦存放在存储器中,如何程序代码亦存放在存储器中,如何控制程序的走向(转移位置的地址控制程序的走向(转移位置的地址CS:IP)是本部分所涉及的内容,由是本部分所涉及的内容,由于它们与具体的指令相关,他们的于它们与具体的指令相关,他们的介绍放在指令中讲解。介绍放在指令中讲解。 3.3 80 x86的指令系统的指令系统w 指令分类指令分类n功能功能n格式格式w 数据传送指令数据传送指令w 算术运算指令算术运算指令w 逻辑指令逻辑指令w 串操作指令串操作指令w 程序转移指令程序转移指令w 处理
14、器控制指令处理器控制指令w 双操作数指令(双操作数指令(DEST,SRC)w 单操作数指令(单操作数指令(DEST)w 无操作数指令(隐含,按约定寻找操作数)无操作数指令(隐含,按约定寻找操作数)一、数据传送指令w 数据传送是计算机中最基本、最重要的一数据传送是计算机中最基本、最重要的一种操作种操作w 传送指令也是最常使用的一类指令传送指令也是最常使用的一类指令w 传送指令把数据从一个位置传送到另一个传送指令把数据从一个位置传送到另一个位置位置w 除标志寄存器传送指令外,均除标志寄存器传送指令外,均不影响标志不影响标志位位w 重点掌握重点掌握MOV XCHG XLAT PUSH POP LEA
15、1. 通用数据传送指令w提供方便灵活的通用传送操作w有3条指令MOVXCHGXLAT1)传送指令传送指令MOV(move)w 格式:MOV DEST,SRCw 功能:将源操作数的内容传送至目的操作数中即(DEST) (SRC)w 说明:nDEST可以是8/16位的R(CS、IP除外)/MnSRC可以是8/16位的R/M/立即数只能出现在源操只能出现在源操作数的位置作数的位置1)传送指令传送指令MOV立即数传送立即数传送MOV reg/mem,immMOV reg/mem,imm;立即数送寄存器或主存立即数送寄存器或主存mov al,4mov al,4;(;(alal)44,字节传送字节传送mo
16、v cx,0ffhmov cx,0ffh;(;(cxcx)00ffh00ffh,字传字传送送mov si,200hmov si,200h;(;(sisi)0200h0200h,字传字传送送mov byte ptr si,0ahmov byte ptr si,0ah;byte ptr byte ptr 说明是字节操作说明是字节操作mov word ptr si+2,0bhmov word ptr si+2,0bh;word ptr word ptr 说明是字操作说明是字操作 注意立即数是字节量还是字量注意立即数是字节量还是字量 明确指令是字节操作还是字操作明确指令是字节操作还是字操作1)传送指令
17、传送指令MOV寄存器之间数据传送寄存器之间数据传送MOV reg,regMOV reg,regmov ax,bxmov ax,bx;(ax) (bx) (ax) (bx) ,字传送字传送mov ah,almov ah,al;(ah) (al) (ah) (al) ,字节传送字节传送mov ds,axmov ds,ax;(ds) (ax) (ds) (ax) ,字传送字传送 CS只能出现在只能出现在SRC的位置的位置1)传送指令传送指令MOV寄存器与存储器之间数据传送寄存器与存储器之间数据传送MOV AL,D_BYTEMOV AL,D_BYTEMOV DX,BPMOV DX,BP;DXSS:BP
18、DXSS:BPMOV DL,SIMOV DL,SI;DLDS:SIDLDS:SI1)传送指令传送指令MOV使用该指令应注意的问题使用该指令应注意的问题w SRC与DEST的长度必须一致 错误示例:错误示例:MOV AX,BLMOV CL,3824Hw DEST不能为CS、IP及立即数 错误示例:错误示例:MOV VAR1,VAR2 正确实现:正确实现:MOV AL,VAR2MOV VAR1,ALw SRC与DEST不能同时为存储器操作数8086不支持两个存储单元间数据的直接传送w SRC与DEST不能同时为段寄存器 例:例:DS ES 错误:错误:MOV DS,ES正确实现:正确实现:MOV
19、AX,ESMOV DS,AXw 不能将立即数直接传送到段寄存器例:例:MOV AX,ESMOV DS,AX1)传送指令传送指令MOV数据传送方向示意数据传送方向示意立即数立即数 段寄存器段寄存器CSCS DS ES SS DS ES SS通用寄存器通用寄存器AX BX CX DXAX BX CX DXBP SP SI DIBP SP SI DI存存储储器器2)交换指令交换指令XCHG(exchange)w 指令格式:指令格式:XCHG DEST,SRCw 指令功能:指令功能: (DEST) (SRC)n寄存器与寄存器之间对换数据寄存器与寄存器之间对换数据n寄存器与存储器之间对换数据寄存器与存储
20、器之间对换数据注意:注意:不能在存储器与存储器之不能在存储器与存储器之间对换数据间对换数据2)交换指令交换指令XCHG寄存器间交换寄存器间交换mov ax,1234hmov ax,1234h;ax=1234hax=1234hmov bx,5678hmov bx,5678h;bx=5678hbx=5678hxchg ax,bxxchg ax,bx;ax=5678hax=5678h,bx=1234hbx=1234hxchg ah,alxchg ah,al;ax=7856hax=7856h2)交换指令交换指令XCHG寄存器与存储器交换寄存器与存储器交换xchg ax,ds:2000hxchg ax,
21、ds:2000h;字交换字交换;等同于;等同于 xchg ds:2000h,axxchg ds:2000h,axxchg al, ds:2000h xchg al, ds:2000h ;字节交换字节交换;等同于;等同于 xchg ds:2000h,alxchg ds:2000h,al2)交换指令交换指令XCHG例题分析例题分析w 例例: (BX)=6F30H, (BP)=0200H, (SI)=0046H, (SS)=2F00H,(2F246H)=4154H,在指令在指令 XCHG BX,BP+SI执行后,相关寄存器和执行后,相关寄存器和存储器的内容是什么?存储器的内容是什么?w 分析:源操作
22、数的物理地址分析:源操作数的物理地址=(SS) 16+(BP)+(SI)=2F000H+0200H+0046H=2F246Hw 指令的功能:指令的功能:(BX) (2F246H)w 指令执行结果:指令执行结果:(BX)=4154H,(2F246H)=6F30H3)换码指令换码指令XLAT(translate)w 指令格式:指令格式: XLATw 指令功能指令功能: ALDS:BX+ALDS:BX+AL,将将BX指定的缓指定的缓冲区中、冲区中、AL指定的位移处的一个字节数据取出指定的位移处的一个字节数据取出赋给赋给ALw 换码指令执行前:换码指令执行前:在主存建立一个字节量表格,内含要转换成的目
23、的代码在主存建立一个字节量表格,内含要转换成的目的代码表格首地址存放于表格首地址存放于BXBX,ALAL存放相对表格首地址的位移量存放相对表格首地址的位移量w 换码指令执行后:换码指令执行后:将将ALAL寄存器的内容转换为目标代码寄存器的内容转换为目标代码mov bx,100hmov bx,100hmov al,03hmov al,03hxlatxlat(BX)(AL)DS数据段12H34H56H78H9AH78H(AL)=78H3)换码指令换码指令XLAT例题例题2.堆栈操作指令堆栈操作指令进栈指令PUSHw 格式:格式: PUSH SRCw 功能:功能:SPSPSPSP2 2,SS:SPS
24、S:SP(r16/m16/segr16/m16/seg)例:例:push axpush axpush DS:2000hpush DS:2000h2.堆栈操作指令堆栈操作指令出栈指令POPw 格式:格式:POP DESTw 功能:功能: (r16/m16/segr16/m16/seg) SS:SP SS:SP SPSP+2SPSP+2,例:例:pop DXpop DXpop DS:2000hpop DS:2000h2.堆栈操作指令堆栈操作指令应用举例应用举例push axpush ax;进入子程序后进入子程序后push bxpush bxpush dspush ds.pop dspop ds;返
25、回主程序前返回主程序前pop bxpop bxpop axpop ax3. 标志寄存器传送指令标志寄存器传送指令w标志寄存器传送指令用来传送标志寄标志寄存器传送指令用来传送标志寄存器存器FLAGS的内容,方便进行对各的内容,方便进行对各个标志位的直接操作个标志位的直接操作w有有2对对4条指令条指令n低低8位传送:位传送:LAHF和和SAHFn16位传送:位传送:PUSHF和和POPF标志寄存器传送指令标志寄存器传送指令标志低字节进出标志低字节进出AH指令指令格式:格式:LAHFLAHF功能:功能:( (AH)FLAGSAH)FLAGS的低的低字节字节w LAHFLAHF指令将标志寄存器指令将标
26、志寄存器的低字节送寄存器的低字节送寄存器AHAHw SF/ZF/AF/PF/CFSF/ZF/AF/PF/CF状态标状态标志位分别送入志位分别送入AHAH的第的第7/6/4/2/07/6/4/2/0位,而位,而AHAH的的第第5/3/15/3/1位任意位任意格式:格式: SAHF SAHF功能:功能: FLAGSFLAGS的低字节的低字节(AH)AH)w SAHFSAHF将将AHAH寄存器内容寄存器内容送送FLAGSFLAGS的低字节的低字节w 用用AHAH的第的第7/6/4/2/07/6/4/2/0位位相应设置相应设置SF/ZF/AF/ SF/ZF/AF/ PF/CFPF/CF标志标志3.标志
27、寄存器传送指令标志寄存器传送指令标志寄存器进出堆栈指令标志寄存器进出堆栈指令格式:格式:PUSHFPUSHF功能:功能:SPSP-2 SPSP-2 SS:SPFLAGSSS:SPFLAGSw PUSHFPUSHF指令将标志指令将标志寄存器的内容压入寄存器的内容压入堆栈,同时栈顶指堆栈,同时栈顶指针针SPSP减减2 2格式:格式: POPF POPF功能:功能:FLAGSSS:SP FLAGSSS:SP SPSPSPSP2 2w POPFPOPF指令将栈顶字单指令将栈顶字单元内容送标志寄存器,元内容送标志寄存器,同时栈顶指针同时栈顶指针SPSP加加2 2 3.标志寄存器传送指令标志寄存器传送指令
28、 标志寄存器进出堆栈指令(标志寄存器进出堆栈指令(置位单步标志)置位单步标志)pushfpushf;保存全部标志到堆栈保存全部标志到堆栈pop axpop ax;从堆栈中取出全部标志从堆栈中取出全部标志or ax,0100hor ax,0100h;设置设置D D8 8=TF=1=TF=1,axax其它位不变其它位不变push axpush ax;将将axax压入堆栈压入堆栈popfpopf;FLAGSAXFLAGSAX;将堆栈内容取到标志寄存器将堆栈内容取到标志寄存器4. 地址传送指令地址传送指令w地址传送指令将存储器单元的逻辑地地址传送指令将存储器单元的逻辑地址送至指定的寄存器址送至指定的寄
29、存器n有效地址传送指令有效地址传送指令 LEAn指针传送指令指针传送指令 LDS和和LESw注意不是获取存储器单元的内容注意不是获取存储器单元的内容4. 地址传送指令地址传送指令有效地址传送指令有效地址传送指令LEA(load EA)格式:格式:LEA DEST,SRCLEA DEST,SRC1616位寄存器位寄存器存储器操作数存储器操作数功能:功能:DESTDESTSRCSRC的有效地址的有效地址EAEA将存储器操作数的有效地址传送至指定的将存储器操作数的有效地址传送至指定的16位寄存器中位寄存器中LEA BX,BUFRLEA BX,BUFR9A78H(BX)=9A78H4. 地址传送指令地
30、址传送指令有效地址传送指令有效地址传送指令LEA(例)例)23H093A0HBUFR78H9AH093AHDS093C3H(BX)=0023H错误!错误! 获得主存单元的有效地址;不是获得主存单元的有效地址;不是物理地址,也不是该单元的内容物理地址,也不是该单元的内容 可以实现计算功能可以实现计算功能4. 地址传送指令地址传送指令地址地址指针指针w 存储单元的逻辑地址存储单元的逻辑地址段基值(段基值(16位)位)段内偏移量(段内偏移量(16位)位)w 地址指针(地址指针(32位)位)M的逻辑地址在的逻辑地址在M中需中需4个连续的存储单元个连续的存储单元段基值段基值AD_POINTXXXX偏移量
31、偏移量XXXX4. 地址传送指令地址传送指令指针传送指令指针传送指令格式:格式:LDS DEST,SRCLDS DEST,SRC功能:功能: ( (DEST)(SRCDEST)(SRC) )段内偏移量段内偏移量 DS (SRC+2 )DS (SRC+2 )段基值段基值w LDSLDS指令将主存中指令将主存中SRCSRC 指定的字送至指定的字送至1616位寄存位寄存器器DESTDEST,并将,并将SRCSRC的下的下一字送一字送DSDS寄存器寄存器格式:格式:LES DEST,SRCLES DEST,SRC功能:功能: ( (DEST)(SRCDEST)(SRC) )段内偏移量段内偏移量 ES
32、(SRC+2 )ES (SRC+2 )段基值段基值w LDSLDS指令将主存中指令将主存中SRCSRC 指定的字送至指定的字送至1616位寄存位寄存器器DESTDEST,并将,并将SRCSRC的下的下一字送一字送ESES寄存器寄存器w 例例: (DS)=B000H, (BX)=080AH, (0B080AH)=05AEH, (0B80CH)=4000H, (405AEH)=9634H,在在执行指令执行指令LDS DI,BXMOV AX,DI后,后,(AX)=?BX=080AHB0000H0B80AH40000H34H96HAEH05H00H40H405AEH05AEH0B80EH( (DI)=
33、05AEHDI)=05AEH( (DS)=4000HDS)=4000Hw 结果结果: (DS)=4000H (DI)=05AEH (AX)=9634H二、算术运算指令二、算术运算指令(部分)w四则运算是计算机经常进行的一种操四则运算是计算机经常进行的一种操作。算术运算指令实现二进制(和十作。算术运算指令实现二进制(和十进制)数据的四则运算进制)数据的四则运算w请注意算术运算类指令对标志的影响请注意算术运算类指令对标志的影响1.加加/减法指令减法指令w 格式:格式:ADD DEST,SRCSUB DEST,SRCw 功能:功能:(DEST) (DEST)+/-(SRC)w 受影响标志:受影响标志
34、:CF,PF,AF,ZF,SF,OFw 说明:说明:n操作数可以是字节或字操作数可以是字节或字nSRC可以是通用可以是通用R、M、immnDEST可以是通用可以是通用R、MnDEST和和 SRC不能同时为不能同时为M1.加法指令加法指令举例举例ADD AX,BXADD AL,BLSUB CX,20HADD DL,DA_BYTESUB DA_WORD,DX若若(AL)=0E5H,执行执行ADD AL,0A4H 后,后,AL及各标志位的情及各标志位的情况?况?11110 01011010 01001000 1001+CF=1,AF=0,PF=0,ZF=0,SF=1,OF=0w若认为是无符号数,若认
35、为是无符号数,则为则为229+164=393=256+137229+164=393=256+137w若认为是有符号数,若认为是有符号数,则为则为(-27)+(-92)=-119(-27)+(-92)=-1192. 减法指令减法指令举例举例w 例:执行指令例:执行指令MOV AL,-73SUB AL,-87后,后,AL及个标志及个标志位的情况位的情况1011 01111010 10010000 1110CF=0,AF=1,PF=0,ZF=0,SF=0,OF=0-73的补码表示的补码表示14-87的补码表示的补码表示AL=0EH2.带进带进/借位的加借位的加/减法指令减法指令w 格式:格式:ADC
36、 DEST,SRCSBB DEST,SRCw 功能:功能:(DEST) (DEST)+/-(SRC)+/-CFw 受影响标志:受影响标志:CF,PF,AF,ZF,SF,OFw 说明:说明:n操作数可以是字节或字操作数可以是字节或字nSRC可以是通用可以是通用R、M、immnDEST可以是通用可以是通用R、MnDEST和和 SRC不能同时为不能同时为M2.带进带进/借位的加借位的加/减法指令减法指令举例举例w 例:实现例:实现2F365H和和5E024H的加法的加法运算运算MOV DX,2MOV AX,0F365HADD AX,0E024HADC DX,52 F3655 E0248 D389+手
37、工计算手工计算2 F3655 E0248 D389+1F365E024D389+CF=1,AF=0,PF=0,ZF=0,SF=1,OF=0000200050008+ 0001CF=0,AF=0,PF=0,ZF=0,SF=0,OF=0AXDX3.加加/减减1指令指令w 格式:格式:INC DESTDEC DESTw 功能:功能:(DEST) (DEST)+/-1w 受影响标志:受影响标志:PF,AF,ZF,SF,OFw 说明:说明:nDEST可以是字节或字可以是字节或字R、Mn功能与功能与ADD/SUB相似,但占用字节少,且不影响标相似,但占用字节少,且不影响标志位志位CF 。常用于修改地址指针
38、及循环计数器。常用于修改地址指针及循环计数器。4.求补指令(求负数)求补指令(求负数)w 格式:格式:NEG DESTw 功能:功能:(DEST) 0-0-(DEST)w 受影响标志:受影响标志: CF ,PF,AF,ZF,SF,OFw 说明:说明:nDEST可以是字节或字可以是字节或字R、Mn操作对象是有符号的数操作对象是有符号的数n当操作数取最小值(当操作数取最小值(-128或或-32768)时,执行该指令)时,执行该指令后,操作数无变化,后,操作数无变化, OF=1n当操作数为当操作数为0时,结果为时,结果为0,但,但CF=0,其他情况其他情况CF=14.求补指令求补指令(举例)(举例)
39、例:例:AL=13H,执行指令执行指令NEG AL后后AL的值的值10000 00000001 00111110 1101ALAL=-13H1001 00100000 00011001 0011+5.比较指令比较指令CMP(compare)w 格式:格式:CMP DEST,SRCw 功能:功能:(DEST) - -(SRC)w 受影响标志:受影响标志: CF ,PF,AF,ZF,SF,OFw 说明:说明:nDEST ,SRC可以是字节或字可以是字节或字R、M,长度必须一致长度必须一致nSRC还可以是还可以是immnDEST和和 SRC不能同时为不能同时为Mn该指令主要用于比较两数的关系该指令主
40、要用于比较两数的关系5.比较指令比较指令CMP应用应用w ZF=1;两数相等两数相等w 两个无符号数比较两个无符号数比较CMP AX,BX ;0 AX BX1 AX SRCSF与与OF不同,不同,(DEST)SRC5.比较指令比较指令CMP(CMP AL,BL)AL=-2BL=1271111 11100111 11110111 1111-SF=0OF=1相异,相异,ALBLAL=-2BL=-111111 11101111 11111111 1111-SF=1OF=0相异,相异,ALBLAL=127BL=-210111 11111111 11101000 0001-SF=1OF=1相同,相同,A
41、LBL6.乘法指令乘法指令MUL r8/m8MUL r8/m8;无符号字节乘法无符号字节乘法;AXALAXALr8/m8r8/m8MUL r16/m16MUL r16/m16;无符号字乘法无符号字乘法;DX.AXAXDX.AXAXr16/m16r16/m16IMUL r8/m8IMUL r8/m8;有符号字节乘法有符号字节乘法;AXALAXALr8/m8r8/m8IMUL r16/m16IMUL r16/m16;有符号字乘法有符号字乘法;DX.AXAXDX.AXAXr16/m16r16/m166.乘法指令乘法指令功能功能w 乘法指令乘法指令分无符号和有符号乘法指令分无符号和有符号乘法指令w 乘
42、法指令的源操作数显式给出,乘法指令的源操作数显式给出,隐含使用隐含使用另一个操作数另一个操作数AX和和DXn字节相乘:字节相乘:AL与与r8/m8相乘,得到相乘,得到16位的结位的结果,存入果,存入AXn字相乘:字相乘:AX与与r16/m16相乘,得到相乘,得到32位的结位的结果,其高字存入果,其高字存入DX,低字存入低字存入AXw 乘法指令利用乘法指令利用OF和和CF判断乘积的高一半判断乘积的高一半是否具有有效数值是否具有有效数值6.乘法指令乘法指令对标志的影响对标志的影响乘法指令如下影响乘法指令如下影响OF和和CF标志:标志:nMUL指令指令若乘积的高一半(若乘积的高一半(AH或或DX)为
43、为0,则,则OF=CF=0;否则否则OF=CF=1nIMUL指令指令若乘积的高一半是低一若乘积的高一半是低一半的符号扩展,则半的符号扩展,则OF=CF=0;否则均否则均为为16.乘法指令乘法指令(例)(例)mov al,0b4hmov al,0b4h;al=b4h=180al=b4h=180mov bl,11hmov bl,11h;bl=11h=17bl=11h=17mul blmul bl;ax=Obf4h=3060ax=Obf4h=3060,OF=CF=1OF=CF=1,AXAX高高8 8位不为位不为0 0mov al,0b4hmov al,0b4h;al=b4h=al=b4h=7676m
44、ov bl,11hmov bl,11h;bl=11h=17bl=11h=17imul blimul bl;ax=faf4h=ax=faf4h=12921292,OF=CF=1OF=CF=1,AXAX高高8 8位有效位有效6.除法指令除法指令DIV r8/m8DIV r8/m8;无符号字节除法无符号字节除法ALAXALAXr8/m8r8/m8的商,的商,AhAXAhAXr8/m8r8/m8的余数的余数DIV r16/m16DIV r16/m16;无符号字除法无符号字除法;AXDX.AXAXDX.AXr16/m16r16/m16的商,的商,DXDX.AXDXDX.AXr16/m16r16/m16的
45、余数的余数IDIV r8/m8IDIV r8/m8;有符号字节除法:有符号字节除法:ALAXALAXr8/m8r8/m8的商,的商,AhAXAhAXr8/m8r8/m8的余数的余数IDIV r16/m16IDIV r16/m16;有符号字除法:有符号字除法:;AXDX.AXAXDX.AXr16/m16r16/m16的商,的商,DXDX.AXDXDX.AXr16/m16r16/m16的余数的余数6.除法指令除法指令功能功能w 除法指令分无符号和有符号除法指令除法指令分无符号和有符号除法指令w 除法指令的除数显式给出,隐含使用另一除法指令的除数显式给出,隐含使用另一个操作数个操作数AX和和DX作为
46、被除数作为被除数n字节量除法:字节量除法:AX除以除以r8/m8,8位商存入位商存入AL,8位余数存入位余数存入AHn字量除法:字量除法:DX.AX除以除以r16/m16,16位商存入位商存入AX,16位余数存入位余数存入DXw 除法指令对标志没有影响除法指令对标志没有影响w 除法指令会产生结果溢出除法指令会产生结果溢出6.除法指令除法指令除法错中断除法错中断w 当被除数远大于除数时,所得的商就有可当被除数远大于除数时,所得的商就有可能超出它所能表达的范围。如果存放商的能超出它所能表达的范围。如果存放商的寄存器寄存器AL/AX不能表达,便产生溢出,不能表达,便产生溢出,8086CPU中就产生编
47、号为中就产生编号为0的内部中断的内部中断除法错中断除法错中断n对对DIV指令,除数为指令,除数为0,或者在字节除时商超过,或者在字节除时商超过8位,或者在字除时商超过位,或者在字除时商超过16位,则发生除法位,则发生除法溢出溢出n对对IDIV指令,除数为指令,除数为0,或者在字节除时商不,或者在字节除时商不在在-128127范围内,或者在字除时商不在范围内,或者在字除时商不在-3276832767范围内,则发生除法溢范围内,则发生除法溢6.除法指令除法指令(例)(例)mov ax,0400hmov ax,0400h;ax=400h=1024ax=400h=1024mov bl,0b4hmov
48、bl,0b4h;bl=b4h=180bl=b4h=180div bldiv bl;商商alal05h05h5 5,余数余数ahah7ch7ch124124mov ax,0400hmov ax,0400h;ax=400h=1024ax=400h=1024mov bl,0b4hmov bl,0b4h;bl=b4h=bl=b4h=7676idiv blidiv bl;商商alalf3hf3h1313,余数余数ahah24h24h36367.符号扩展指令符号扩展指令符号扩展的概念符号扩展的概念w 符号扩展是指用一个操作数的符号位(即最符号扩展是指用一个操作数的符号位(即最高位)形成另一个操作数,后一个
49、操作数的高位)形成另一个操作数,后一个操作数的各位是全各位是全0(正数)或全(正数)或全1(负数)。(负数)。符号扩符号扩展不改变数据大小展不改变数据大小n对于数据对于数据64H(表示数据表示数据100),其最高位),其最高位D7为为0,符号扩展后高,符号扩展后高8位都是位都是0,成为,成为0064H(仍表仍表示数据示数据100)n对于数据对于数据ff00H(表示有符号数表示有符号数256),其最),其最高位高位D15为为1,符号扩展后高,符号扩展后高16位都是位都是1,成为,成为ffffff00H(仍表示有符号数仍表示有符号数256)7.符号扩展指令符号扩展指令CBWCBW;ALAL的符号扩
50、展至的符号扩展至AHAH;如如ALAL的最高有效位是的最高有效位是0 0,则,则AHAH0000;ALAL的最高有效位为的最高有效位为1 1,则,则AHAHFFHFFH。ALAL不变不变CWDCWD;AXAX的符号扩展至的符号扩展至DXDX;如如AXAX的最高有效位是的最高有效位是0 0,则,则DXDX0000;AXAX的最高有效位为的最高有效位为1 1,则,则DXDXFFFFHFFFFH。AXAX不变不变w符号扩展指令常用于获得双倍长的数据符号扩展指令常用于获得双倍长的数据7.符号扩展指令符号扩展指令(例:(例:AX/BX)cwdcwd;DX.AXAXDX.AXAXidiv bxidiv b
51、x;AXDX.AXAXDX.AXBXBX 利用符号扩展指令得到除法指令所需要的利用符号扩展指令得到除法指令所需要的倍长于除数的被除数倍长于除数的被除数 对无符号数除法应该采用直接使高对无符号数除法应该采用直接使高8位或位或高高16位清位清0的方法,获得倍长的被除数的方法,获得倍长的被除数8.十进制调整指令十进制调整指令w 十进制数调整指令对二进制运算的结果进行十进制数调整指令对二进制运算的结果进行十进制调整,以得到十进制的运算结果十进制调整,以得到十进制的运算结果w 分成压缩分成压缩BCDBCD码和非压缩码和非压缩BCDBCD码调整码调整8.十进制调整指令十进制调整指令压缩压缩BCD码加、减调
52、整指令码加、减调整指令(ADD AL,i8/r8/m8ADD AL,i8/r8/m8)(ADC AL,i8/r8/m8ADC AL,i8/r8/m8)DAADAA;ALAL将将ALAL的加和调整的加和调整为压缩为压缩BCDBCD码码(SUB AL,i8/r8/m8SUB AL,i8/r8/m8)(SBB AL,i8/r8/m8SBB AL,i8/r8/m8)DASDAS;ALAL将将ALAL的减差调整为压的减差调整为压缩缩BCDBCD码码使用使用DAA或或DAS指令前,应先执行以指令前,应先执行以AL为目的操作为目的操作数的加法或减法指令数的加法或减法指令DAA和和DAS指令对指令对OF标志无
53、影响,按结果影响其他标志无影响,按结果影响其他标志标志8.十进制调整指令十进制调整指令 压缩压缩BCD码加、减调整指令(例)码加、减调整指令(例)mov al,68hmov al,68h;al=68hal=68h,压缩压缩BCDBCD码表示真值码表示真值6868mov bl,28hmov bl,28h;bl=28hbl=28h,压缩压缩BCDBCD码表示真值码表示真值2828add al,bladd al,bl;二进制加法:二进制加法:al=68h+28h=90hal=68h+28h=90hdaadaa;十进制调整:十进制调整:al=96hal=96h;实现压缩实现压缩BCDBCD码加法:码加
54、法:686828289696mov al,68hmov al,68h;al=68hal=68h,压缩压缩BCDBCD码表示真值码表示真值6868mov bl,28hmov bl,28h;bl=28hbl=28h,压缩压缩BCDBCD码表示真值码表示真值2828sub al,blsub al,bl;二进制减法:二进制减法:al=68h-28h=40hal=68h-28h=40hdasdas;十进制调整:十进制调整:al=40hal=40h;实现压缩实现压缩BCDBCD码加法:码加法:68-2868-2840408.十进制调整指令十进制调整指令非压缩非压缩BCD码加、减调整指令码加、减调整指令(A
55、DD AL,i8/r8/m8ADD AL,i8/r8/m8)(ADC AL,i8/r8/m8ADC AL,i8/r8/m8)AAAAAA;ALAL将将ALAL的加和调整的加和调整为非压缩为非压缩BCDBCD码码;AHAHAHAH调整的进位调整的进位(SUB AL,i8/r8/m8SUB AL,i8/r8/m8)(SBB AL,i8/r8/m8SBB AL,i8/r8/m8)AASAAS;ALAL将将ALAL的减差调整为的减差调整为非压缩非压缩BCDBCD码码;AHAHAHAH调整的借位调整的借位使用使用AAA或或AAS指令前,应先执行以指令前,应先执行以AL为目的操作数的加为目的操作数的加法或
56、减法指令法或减法指令AAA和和AAS指令在调整中产生了进位或借位,则指令在调整中产生了进位或借位,则AHAH要加上要加上进位或减去借位,同时进位或减去借位,同时CF=AF=1,否则否则CF=AF=0;它们对它们对其他标志无影响其他标志无影响8.十进制调整指令十进制调整指令非压缩非压缩BCD码加、减调整指令(例)码加、减调整指令(例)mov ax,0608hmov ax,0608h;ax=0608hax=0608h,非压缩非压缩BCDBCD码表示真值码表示真值6868mov bl,09hmov bl,09h;bl=09hbl=09h,非压缩非压缩BCDBCD码表示真值码表示真值9 9add al
57、,bladd al,bl;二进制加法:二进制加法:al=08h+09h=11hal=08h+09h=11haaaaaa;十进制调整:十进制调整:ax=0707hax=0707h;实现非压缩实现非压缩BCDBCD码加法:码加法:68689 97777mov ax,0608hmov ax,0608h;ax=0608hax=0608h,非压缩非压缩BCDBCD码表示真值码表示真值6868mov bl,09hmov bl,09h;bl=09hbl=09h,非压缩非压缩BCDBCD码表示真值码表示真值9 9sub al,blsub al,bl;二进制减法:二进制减法:al=08h-09h=ffhal=0
58、8h-09h=ffhaasaas;十进制调整:十进制调整:ax=0509hax=0509h;实现非压缩实现非压缩BCDBCD码减法:码减法:68-968-95959例:用乘法指令实现例:用乘法指令实现32位二进制数位二进制数的相乘的相乘c cd da ab baxaxdxdxaxaxdxdxdxdxaxaxdxdxaxax + b bd da ad db bc ca ac cDSEG SEGMENT PARA Datanum1 dw 1220h,48a2hnum2 dw 2398h,0ae41hprodu dw 4 dup(0)DSEG ENDSa ab bc cd dnum1num1num1
59、+2num1+2num2num2num2+2num2+2produproduprodu+2produ+2 produ+4produ+4 produ+6produ+6三、逻辑指令三、逻辑指令(逻辑逻辑)位操作类指令以二进制位为基本单位操作类指令以二进制位为基本单位进行数据的操作;这是一类常用的指位进行数据的操作;这是一类常用的指令,都应该特别掌握令,都应该特别掌握w 逻辑运算指令逻辑运算指令w 测试指令测试指令w 移位指令移位指令1.逻辑运算指令逻辑运算指令w 格式:格式:AND DEST,SRCOR DEST,SRCXOR DEST,SRCNOT DESTw 功能:功能:(DEST) (DES
60、T) (SRC)(DEST) (DEST) 受影响标志:受影响标志: CF=0, OF=0, PF, ZF,SF,NOT对标志无影响对标志无影响1.逻辑运算指令逻辑运算指令应用应用mov al,45hmov al,45h;逻辑与逻辑与 al=01hal=01hand al,31hand al,31h;CF=OF=0CF=OF=0,SF=0SF=0、ZF=0ZF=0、PF=0PF=0mov al,45hmov al,45h;逻辑或逻辑或 al=75hal=75hor al,31hor al,31h ;CF=OF=0CF=OF=0,SF=0SF=0、ZF=0ZF=0、PF=0PF=0mov al,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安徽省蚌埠市禹会区北京师范大学蚌埠附属学校2025届高考化学四模试卷含解析
- 山东省青岛市黄岛区致远中学2025年高三第三次测评化学试卷含解析
- 家政服务技能培训
- 幼儿园中班冬至主题教育
- 幻听常见护理诊断及措施
- 急性呼吸衰竭护理查房
- 2025年金刚石触媒材料合作协议书
- 大兴机场工程项目管理
- 2025年医用激光仪器设备项目建议书
- 2025届安徽马鞍山市高考仿真卷化学试卷含解析
- 【版】(4月4日)清明守规平安同行- 清明节假期安全教育主题班会 高中主题班会课件
- 《愿望的实现》读书分享课件
- 2024年安庆迎江区招聘社区工作人员考试真题
- 事故隐患内部报告奖励制度
- 贸易安全培训
- 2025年长春汽车职业技术大学单招职业技能测试题库必考题
- 血小板减少怎预防出血
- 2025年湖南省长沙市一中教育集团中考一模数学试题(原卷版+解析版)
- 会计毕业论文范文:大数据时代的会计变革
- 中央戏剧学院招聘真题2024
- 2024年山东电力中心医院高层次卫技人才招聘笔试历年参考题库频考点附带答案
评论
0/150
提交评论