书签 分享 收藏 举报 版权申诉 / 194
上传文档赚钱

类型微机原理与接口技术课件-2.ppt

  • 上传人(卖家):晟晟文业
  • 文档编号:4092600
  • 上传时间:2022-11-10
  • 格式:PPT
  • 页数:194
  • 大小:762.04KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《微机原理与接口技术课件-2.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    微机 原理 接口 技术 课件 _2
    资源描述:

    1、第3章 8086/8088指令系统11/10/20221第3章 8086/8088指令系统 n3.1 8086/8088指令格式 n3.2 8086/8088寻址方式 n3.3 8086/8088指令系统 11/10/202223.1 8086/8088指令格式 11/10/202233.2 8086/8088寻址方式 n一条指令包含操作码(OP)和操作数两部分:操作码指明该指令进行什么操作操作数指出该指令在执行规定操作时所需的信息 n规定操作数的方法,即指令中用于说明操作数所在地址的方法称为寻址方式。8086/8088 的寻址方式分为两类:数据寻址方式转移地址寻址方式 11/10/20224

    2、3.2.1 数据寻址方式 n指令中用于说明操作数所在地址的方 法11/10/202251.立即寻址 n当数据为 8 位或 16 位时,可直接放在指令本身的最后一个字节(8位)或两个字节(16 位)中。这样的数据常称为立即操作数 MOV AL,80H;将8位立即数80H送入AL寄存器中 MOV AX,1234H;将16位立即数1234H送入AX寄存器中,其中(AX)=1234H 11/10/20226立即数寻址方式举例 11/10/202272.寄存器寻址 n数据存放在指令规定的寄存器中n对于 16 位数据,寄存器可以是AX,BX,CX,DX,SI,DI,SP或者BPn对于 8 位数据,寄存器可

    3、以是AL,AH,BL,BH,CL,CH,DL或DH MOV CL,DL MOV AX,BX 如果(DL)=50H,(BX)=1234H,执行结果为:(CL)=50H,(AX)=1234H 11/10/20228寄存器寻址方式的指令执行情况 11/10/202293.直接寻址 n操作数在存储单元中,其 16 位有效地址,即段内偏移地址在指令码之中,占两个字节。此存储单元的实际物理地址是由段寄存器内容和指令码中直接给出的有效地址之和形成的 MOV AL,1064H 如果(DS)=2000H,执行结果为:(AL)=45H。11/10/202210直接寻址示意图 11/10/2022114.寄存器间接

    4、寻址 n操作数在存储单元中,其有效地址在指令码指明的基址寄存器BX、BP或变址寄存器SI或DI之中n寄存器间接寻址的操作数一定存放在存储单元中。BX、SI和DI间接寻址默认的段寄存器为DS,而BP间接寻址默认的段寄存器为SS n有效地址)()()()(DISIBPBXEA11/10/202212举例MOV AX,SIMOV BX,AL如果(DS)=3000H,(SI)=2000H,(BX)=1000H,(AL)=64H,执行结果为:(AX)=4050H,(31000H)=64H 11/10/2022135.寄存器相对寻址 n有效地址 disp16disp8DISIBPBXEA位位)()()()

    5、(在一般情况下,若指令中指定的寄存器是BX、SI、DI,则操作数默认为存放在数据段(DS)中;若指令中指定的寄存器是BP,则操作数默认为存放在堆栈段(SS)中 11/10/202214举例MOV SI+10H,AXMOV CX,BX+COUNT 如果(DS)=3000H,(SI)=2000H,(BX)=1000H,COUNT=1050H,(AX)=4050H,执行结果为:(32010H)=4050H,(CX)=4030H。11/10/2022156.基址变址寻址 n有效地址)()()()(DISIBPBXEA在一般情况下,由基址寄存器决定操作数在哪个段中。若用BX的内容作为基地址,则操作数在数

    6、据段(DS)中;若用BP的内容作为基地址,则操作数在堆栈段(SS)中。11/10/202216举例MOV BX+DI,AXMOV CX,BPSI 设当前(DS)=3000H,(SS)=4000H,(BX)=1000H,(DI)=1100H,(AX)=0050H,(BP)=2000H,(SI)=1200H,执行结果为:(32100H)=0050H,(CX)=1234H。11/10/2022177.基址变址且相对寻址 n有效地址 disp16disp8DISIBPBXEA位位)()()()(当基址寄存器为BX时,操作数在数据段(DS)中;基址寄存器为BP时,操作数在堆栈段(SS)中。基址变址相对寻

    7、址方式同样也允许段超越。11/10/202218举例 MOV AX,BX+DI+1200HMOV BP+SI+200H,CX 若(DS)=8000H,(SS)=6000H,(BX)=1000H,(DI)=1500H,(BP)=1000H,(SI)=1600H,(CX)=7856H,执行结果为:(AX)=8056H,(62800H)=7856H 11/10/2022198.隐含寻址 n有些指令的指令码中不包含指明操作数地址的部分,而其操作码本身隐含地指明了操作数地址n字符串操作类指令就属于这种寻址 11/10/202220举例n若(BX)=1200H,(SI)=0A00H,位移量=0710H,(

    8、DS)=3200H,(SS)=5000H,(BP)=2200H,段寄存器按默认段寄存器,则相对于各种寻址方式的有效地址和物理地址 11/10/202221举例(续)(1)直接寻址:EA=0710H 物理地址=32000H+0710H=32710H(2)寄存器间接寻址(假设寄存器为BP):EA=2200H 物理地址=50000H+2200H=52200H(3)寄存器相对寻址(假设寄存器为BX):EA=1200H+0710H=1910H 物理地址=32000H+1910H=33910H(4)基址变址寻址(假设寄存器为BP和SI):EA=2200H+0A00H=2C00H 物理地址=50000H+2

    9、C00H=52C00H(5)基址变址且相对寻址(假设寄存器为BX和SI):EA=1200H+0A00H+0710H=2310H 物理地址=32000H+2310H=34310H 11/10/2022223.2.2 转移地址寻址方式 n程序转移是在程序转移指令的控制下实现的n程序转移指令通过改变IP和CS的内容,就可以改变程序的正常执行顺序n转移地址的寻址方式有 4 种 11/10/2022231.段内直接寻址 n指令码中包括一个位移量disp,转移的有效地址为(IP)+dispndisp在指令码中都是用补码表示的有正负符号的数。当位移量是8位时,称为短转移,转移范围为128+127;位移量是1

    10、6位时,称为近转移,转移范围为32768+32767 n位移量是相对于当前IP的内容来计算的,所以又称为相对寻址 JMP NEAR PTR PROGIAJMP SHORT QUEST 其中,PROGIA和QUEST均为转向的目标地址,在机器指令中,用位移量来表示 11/10/2022242.段内间接寻址 n在同一代码段内,要转移到的地址的 16 位段内偏移地址(即有效地址)在一个 16 位寄存器中或在存储器相邻两个单元中n存放转移地址寄存器或相邻两个单元的第一个单元的地址,是在指令码中以上面讨论的数据的寻址方式给出的JMP BXJMP WORD PTR BP+10H 其中WORD PTR为操作

    11、符,用以指出其后的寻址方式所取得的目标地址是一个字的有效地址 11/10/2022253.段间直接寻址 n令码中直接给出 16 位的段地址和 16 位的有效地址JMP FAR PTR LABEL_NAME 其中,LABEL_NAME是一个在另外的代码段内已定义的远标号 11/10/2022264.段间间接寻址 n与段内间接寻址相似,转移地址为 32 位(16 位段地址和 16 位有效地址)n指令中一定给出某种访问内存单元的寻址方式。用这种寻址方式计算出的存储单元地址开始的连续4个单元的内容就是要转移的地址,其中前两个单元内的16位值为有效地址,后两个单元内的 16 位值为段地址 JMP VAR

    12、_DOUBLEWORD JMP DWORD PTR BX 上面第一条指令中,VAR_DOUBLEWORD应是一个已定义为32位的存储器变量;第二条指令中,利用操作符PTR将存储器操作数的类型定义为DWORD(双字)11/10/202227程序转移地址的寻址方式 位移量指令IPEA有效转移地址(a)寻址方式指令根据寻址方式计算EA有效转移地址有效转移地址寄存器存储器或(b)偏移量段地址指令CSIP(c)寻址方式指令根据寻址方式计算EA转移地址偏移量段地址内存中两个连续的字(d)(a)段内直接(相对)寻址;(b)段内间接寻址;(c)段间直接寻址;(d)段间间接寻址11/10/2022283.3 8

    13、086/8088指令系统 n数据传送(Data Transfer)指令;n算术运算(Arithmetic)指令;n逻辑运算(Logic)指令;n控制转移(Control Transfer)指令;n串操作(String Manipulation)指令;n处理器控制(Processor Control)指令。11/10/2022293.3.1 数据传送指令 n通用数据传送指令;n地址传送指令;n累加器专用传送(输入/输出指令);n标志传送指令。11/10/2022301.通用数据传送指令 n传送指令MOVn数据交换指令XCHGn堆栈指令PUSH和POP 11/10/202231(1)通用传送指令M

    14、OV(MOVe)n格式:MOV DST,SRC;(DST)(SRC)nDST:目的操作数,SRC:源操作数。n功能:把一个字节或字从源操作数SRC传送至目的操作数DSTn源和目的操作数不允许同时为存储器操作数;n源和目的操作数数据类型必须一致;n源和目的操作数不允许同时为段寄存器;n目的操作数不允许为CS和立即数;n当源操作数为立即数时,目的操作数不允许为段寄存器;n传送操作不影响标志位。11/10/202232通用传送指令数据流 11/10/202233举例MOV AL,DH;(AL)(DH)MOV DS,AX;(DS)(AX)MOV BX,AX;(BX)(AX)MOV AL,BLOCK;B

    15、LOCK为字节型变量名MOV BLOCK,12H;(BLOCK)12HMOV AX,1234H ;(AX)1234H11/10/202234(2)交换指令XCHG(Exchange)n格式:XCHG DST,SRC;(DST)(SRC)n功能:交换操作数DST和SRC的值,操作数数据类型为字节或字。允许通用寄存器之间,通用寄存器和存储器之间交换数据。n操作数DST和SRC不允许同为存储器操作数;n操作数数据类型必须一致;n交换指令不影响标志位。11/10/202235举例XCHG AX,BX ;通用寄存器之间交换数据XCHG BX,SI;通用寄存器和存储器之间交换数据XCHG AL,BX;通用

    16、寄存器和存储器之间交换数据如要实现存储器操作数交换,若BLOCK1和BLOCK2为已定义字变量,可用如下指令实现:MOV AX,BLOCK1XCHG AX,BLOCK2MOV BLOCK1,AX 11/10/202236(3)堆栈操作指令 n堆栈是以后进先出(LIFO)的规则存取信息的一种存储机构 n堆栈通常是存储器的一部分n为了保证堆栈区的存储器能按后进先出的规则存取信息,用堆栈指针SP来管理该存储区的存取地址n在信息的存与取的过程中,栈顶是不断移动的,也称它为堆栈区的动端,而堆栈区的另端则是固定不变的,这端又称其为栈底 n堆栈操作指令不影响标志位 11/10/202237举例11/10/2

    17、02238 压栈指令PUSH(Push onto the stack)n格式:PUSH SRC;(SP)(SP)-2,(SP)+1,(SP)(SRC)n功能:将源操作数SRC压下堆栈,源操作数允许为16位通用寄存器、存储器和段寄存器,但不允许是立即数。操作数数据类型为字类型,压栈操作使SP值减2。11/10/202239举例PUSH AX;通用寄存器操作数入栈PUSH SI ;存储器操作数入栈PUSH CS 11/10/202240出栈指令POP(Pop from the stack)n格式:POP DST;(DST)(SP+1),(SP),(SP)(SP)+2n功能:从栈顶弹出操作数送入目的

    18、操作数。目的操作数允许为16位通用寄存器、存储器和段寄存器,但不允许是CS和立即数。操作数数据类型为字类型,出栈操作使SP加2 11/10/202241举例POP AX ;操作数出栈送寄存器POP BX;操作数出栈送存储器POP DS 11/10/2022422.地址传送指令 n地址传送指令对标志位无影响 11/10/202243(1)取有效地址指令LEA(Load effective address)n格式:LEA REG,SRC;(REG)SRC的有效地址n功能:将源操作数SRC的有效地址传送到通用寄存器,操作数REG为16位通用寄存器,源操作数为存储器操作数 11/10/202244举例

    19、LEA BX,1200H;(BX)=1200HMOV BX,1200H;(BX)=58A0H 图3-12 LEA和MOV指令示意图 11/10/202245(2)指针送寄存器DS指令 LDS(Load DS with pointer)n格式:LDS REG,SRC;(REG)(SRC),(DS)(SRC+2)n功能:根据源操作数SRC指定的偏移地址,在数据段中取出段地址和偏移地址分别送指定的段寄存器DS和指定的通用寄存器 11/10/202246举例LDS BX,SI;将32位地址指针分别送DS和BXDATA DD 40003500HLDS BX,DATA;(DS)4000H,(BX)3500

    20、H 11/10/2022473.累加器专用传送(输入/输出指令)n输入/输出指令(IN/OUT)n查表指令XLAT(Translate)11/10/202248(1)输入/输出指令(IN/OUT)n输入IN指令是将数据(字节/字数据)从一个输入端口传送到累加器(AL或AX)中。输出OUT指令是将数据(字节/字数据)从累加器(AL或AX)传送到一个输出端口中。n输入/输出指令可以分为两大类:一类是直接端口(Port)寻址的输入/输出指令;另一类是通过DX寄存器间接寻址的输入/输出指令。在直接寻址的指令中只能寻址0255个端口,而间接寻址的指令中可寻址整个64K(0000FFFFH)个端口。n输入

    21、/输出指令不影响标志位。11/10/202249输入指令IN(Input)n直接寻址格式:IN Acc,Port。此指令是将8/16位数据经输入端口Port(地址号0255)送入AL/AX累加器中;n间接寻址格式:IN Acc,DX。此指令是从DX寄存器内容指定的端口中将8/16位数据送入AL/AX寄存器中。这种寻址方式端口地址可由16位地址号表示,执行此指令前应将16位地址号存入DX寄存器中 11/10/202250输出指令OUT(Output)n直接寻址格式:OUT Port,Acc。此指令是从AL或AX累加器输出8/16位数据到指令直接指定的I/O端口Port中;n间接寻址格式:OUT

    22、DX,Acc。此指令是从AL或AX累加器中输出8/16位数据到由DX寄存器内容指定的I/O端口中 11/10/202251举例IN AL,10HOUT 20H,AXOUT DX,ALIN AL,DX 11/10/202252(2)查表指令XLAT(Translate)n格式:XLAT;(AL)(BX)+(AL)n功能:将寄存器AL中的内容转换成存储器表格中的对应值。实现直接查表功能。n查表指令不影响标志位 11/10/202253举例【例 3-1】内存中有一起始地址为TABLE的编码表,试编程将表中顺序号为3的存储单元内容送寄存器AL。TABLE DB 10H,20H,30H,40H,50H,

    23、60H编码表MOV AL,3 ;(AL)3LEA BX,TABLE;BXTABLE表首地址XLAT;结果在AL中,(AL)=40H 11/10/2022544.标志寄存器传送指令(1)标志送AH指令 LAHF(Load AH with flags)n格式:LAHF;(AH)(PSW)低8位n功能:将标志寄存器中低8位送AH中。不影响标志位 图3-13 LAHF指令示意图 11/10/202255(2)AH送标志寄存器指令SAHF(Store AH into flags)n格式:SAHF;(PSW)低8位(AH)n功能:将AH中内容送标志寄存器中低8位。影响标志位 11/10/202256(3)

    24、标志进栈指令PUSHF(Push the flags)n格式:PUSHF;(SP)(SP)-2,(SP)+1,(SP)(PSW)n功能:将标志寄存器内容压入堆栈,(SP)(SP)-2。不影响标志位 11/10/202257(4)标志出栈指令POPF(Pop the flags)n格式:POPF;(PSW)(SP)+1,(SP),(SP)(SP)+2,n功能:将当前栈顶一个字传送到标志寄存器中,(SP)(SP)+2。影响标志位 11/10/2022583.3.2 算术运算指令 n包括加、减、乘、除四种基本算术运算操作及符号扩展指令和十进制算术运算调整指令n二进制加、减法指令,带符号操作数采用补码

    25、表示时,无符号数和带符号数据运算可以使用相同的指令n二进制乘、除法指令分带符号数和无符号数运算指令 11/10/2022591.加法指令 n加法指令ADD(Add)n带进位加法指令ADC(Add with carry)11/10/202260(1)加法指令ADD(Add)n格式:ADD DST,SRC;(DST)(DST)+(SRC)n功能:ADD是将源操作数与目的操作数相加,结果传送到目的操作数。n源操作数SRC可以是通用寄存器、存储器或立即数。目的操作数DST可以是通用寄存器或存储器操作数。SRC和DST都不能为段寄存器 11/10/202261(2)带进位加法指令ADC(Add with

    26、 carry)n格式:ADC DST,SRC;(DST)(DST)+(SRC)+CFn功能:ADC是将源操作数与目的操作数以及CF(低位进位)值相加,结果传送到目的操作数。nADD,ADC指令影响标志位为OF,SF,ZF,AF,PF,CF11/10/202262举例MOV AX,9876HADD AH,AL;(AX)=0E76HCF=1SF=0OF=0ZF=0AF=0PF=0ADC AH,AL;(AX)=8576HCF=0SF=1OF=1ZF=0AF=1PF=0 11/10/2022632.减法指令 n减法指令SUB(Subtract)n带借位减法指令SBB(Subtract with bor

    27、row)11/10/202264(1)减法指令SUB(Subtract)n格式:SUB DST,SRC;(DST)(DST)-(SRC)n功能:SUB将目的操作数减源操作数,结果送目的操作数。n源操作数SRC可以是通用寄存器、存储器或立即数。目的操作数DST可以是通用寄存器或存储器操作数。SRC和DST都不能为段寄存器 11/10/202265(2)带借位减法指令SBB(Subtract with borrow)n格式:SBB DST,SRC;(DST)(DST)-(SRC)-CFn功能:SBB将目的操作数DST减源操作数SRC,还要减CF(低位借位)值,结果送目的操作数。nSUB,SBB指令

    28、影响标志位为OF,SF,ZF,AF,PF,CF 11/10/202266举例MOV AX,9966H;(AX)=9966HSUB AL,80H;(AL)=0E6H,CF=1,SF=1,OF=1,ZF=0,AF=0,PF=0SBB AH,80H;(AH)=18H,CF=0,SF=0,OF=0,ZF=0,AF=0,PF=1 11/10/2022673.增量和减量指令 n增量指令INC(Increment)n减量指令DEC(Decrement)11/10/202268(1)增量指令INC(Increment)n格式:INC DST;(DST)(DST)+1n功能:INC指令将目的操作数加1,结果送目

    29、的操作数DST。目的操作数为通用寄存器或存储器操作数。DST不能为立即数和段寄存器 11/10/202269(2)减量指令DEC(Decrement)n格式:DEC DST;(DST)(DST)-1n功能:DEC指令将目的操作数DST减1,结果送目的操作数。nINC,DEC指令影响标志位为OF,SF,ZF,AF,PF 11/10/202270举例INC BL;(BL)(BL)+1DEC AX;(AX)(AX)-1INC WORD PTR BX;(BX)(BX)+1 11/10/2022714.比较指令CMP(Compare)n格式:CMP DST,SRC;(DST)-(SRC)只影响标志位n功

    30、能:目的操作数DST减源操作数SRC,结果不回送,只影响标志位。源操作数为通用寄存器、存储器和立即数。目的操作数为通用寄存器、存储器操作数。nCMP指令影响标志位为OF,SF,ZF,AF,PF,CF 11/10/202272举例CMP CX,DXCMP WORD PTR SI,3CMP AX,BLOCK;BLOCK为已定义字变量 11/10/202273应用若(AX)和(BX)中已存储有数,执行比较指令后,对于两个数的比较(AX)-(BX)有以下2种情况:n两个无符号数比较,使用CF标志位判断。CF=0,则(AX)(BX),若ZF=1,则(AX)=(BX)CF=1,则(AX)(BX)n两个带符

    31、号数比较,使用OF标志位判断。当OF=0,SF=0,则(AX)(BX),若ZF=1,则(AX)=(BX)SF=1,则(AX)(BX)当OF=1,SF=0,则(AX)9或(AF)=1 则(AL)(AL)+06H,(AF)1 如果(AL)9FH或(CF)=1 则(AL)(AL)+60H,(CF)1nDAA指令一般紧跟在ADD或ADC指令之后使用,影响标志位为SF,ZF,AF,PF,CF。OF无定义 11/10/202289举例ADD AL,BLDAA 11/10/202290(2)压缩BCD码减法调整指令DAS(Decimal adjust for subtraction)n格式:DASn功能:将

    32、存放在AL中的二进制差数,调整为压缩的BCD码表示形式。n调整方法:如果(AL)0FH)9或(AF)=1 则(AL)(AL)06H,(AF)1 如果(AL)9FH或(CF)=1 则(AL)(AL)60H,(CF)1nDAS指令一般紧跟在SUB或SBB指令之后使用,影响标志位为SF,ZF,AF,PF,CF。OF无定义 11/10/202291举例SUB AL,BLDAS 11/10/20229210.非压缩BCD码算术运算 n非压缩BCD数是以一个字节存储1位BCD码,用BCD码来表示十进制数。BCD码的算术运算是在二进制运算基础上进行调整n调整指令有加、减、乘、除四种调整指令 11/10/20

    33、2293(1)非压缩BCD码加法调整指令AAA(ASCII adjust for addition)n格式:AAAn功能:将存放在AL中的二进制和数,调整为ASCII码表示的结果。n调整方法:如果((AL)0FH)9或(AF)=1 则(AL)(AL)+06H,(AH)(AH)+1,(AF)1,(CF)(AF)(AL)(AL)0FH)否则(AL)(AL)0FH)nAAA指令一般紧跟在ADD或ADC指令之后使用,影响标志位为AF,CF。其它标志位无定义 11/10/202294举例MOV AX,0006HADD AL,05HAAA;(AX)=0101H 11/10/202295(2)非压缩BCD码

    34、减法调整指令AAS(ASCII Adjust for subtraction)n格式:AASn功能:将存放在AL中的二进制差数,调整为ASCII码表示形式。n调整方法:如果((AL)0FH)9或(AF)=1 则(AL)(AL)06H,(AH)(AH)1,(AF)1,(CF)(AF)(AL)(AL)0FH)否则(AL)(AL)0FH)nAAS指令一般紧跟在SUB,SBB指令之后使用,影响标志位为AF,CF。其它标志位无定义 11/10/202296(3)非压缩BCD码的乘法调整指令AAM(ASCII Adjust for multiply)n格式:AAMn功能:将存放在AL中的二进制积数,调整为

    35、ASCII码表示形式。n调整方法:(AH)(AL)/0AH的商,即(AL)除以10,商送(AH)。(AL)(AL)/0AH的余数,即(AL)除以10,余数送(AL)。nAAM指令一般紧跟在MUL指令之后使用,影响标志位为SF,ZF,PF。其它标志位无定义 11/10/202297举例MOV AL,07HMOV BL,09HMUL BL;(AX)=003FHAAM;(AX)=0603H 11/10/202298(4)非压缩BCD码的除法调整指令AAD(ASCII Adjust for division)n格式:AADn功能:将AX中两位非压缩BCD码(一个字节存放一位BCD码),转换为二进制数的

    36、表示形式。n调整方法:(AL)(AH)0AH+(AL),(AH)0nAAD指令用于二进制除法DIV操作之前,影响的标志位为SF,ZF,PF。其它标志位无定义 11/10/202299举例MOV AX,0605HMOV BL,09HAAD;AX=0041HDIV BL;AX=0207H 11/10/2022100使用算术运算类指令应注意 n如果没有特别规定,参与运算的两个操作数数据类型必须一致,且只允许一个为存储器操作数;n如果参与运算的操作数只有一个,且为存储器操作数,必须使用PTR伪指令说明数据类型;n操作数不允许为段寄存器;目的操作数不允许为立即数;n如果是存储器寻址,则存储器各种寻址方式

    37、均可使用。11/10/20221013.3.3逻辑运算指令 n逻辑运算指令n移位指令 n循环移位指令 11/10/20221021.逻辑运算指令(1)逻辑与指令AND(And)n格式:AND DST,SRC;(DST)(DST)(SRC)n功能:目的操作数DST和源操作数SRC按位进行逻辑与运算,结果存目的操作数中。源操作数可以是通用寄存器、存储器或立即数。目的操作数可以是通用寄存器或存储器操作数。nAND指令影响标志位为SF,ZF,PF,并且使OF=CF=0 11/10/2022103举例AND DI,BXAND AL,0FH;(AL)(AL)0FH nAND指令常用于将操作数中某位清0(称

    38、屏蔽),只须将要清0的位与0,其它不变的位与1即可11/10/2022104(2)逻辑或指令OR(OR)n格式:OR DST,SRC;(DST)(DST)(SRC)n功能:目的操作数DST和源操作数SRC按位进行逻辑或运算,结果存目的操作数中。源操作数可以是通用寄存器、存储器或立即数。目的操作数可以是通用寄存器或存储器操作数。nOR指令影响标志位为SF,ZF,PF。并且使OF=CF=0n OR指令常用于将操作数中某位置1,只需将要置1的位或1,其它不改变的位或0即可。例如:OR AL,80H;将AL中最高位置111/10/2022105(3)逻辑异或指令XOR(Exclusive or)n格式

    39、:XOR DST,SRC;(DST)(DST)(SRC)n功能:目的操作数DST和源操作数SRC按位进行逻辑异或运算,结果送目的操作数。源操作数可以是通用寄存器、存储器或立即数。目的操作数可以是通用寄存器或存储器操作数。nXOR指令影响标志位为SF,ZF,PF,并且使OF=CF=0 nXOR指令常用于将操作数中某些位取反,只需将要取反的位异或1,其它不改变的位异或0即可。例如:XOR AL,OFH;将AL中低4位取反,高4位保持不变11/10/2022106(4)逻辑非指令NOT(NOT)n格式:NOT DST;(DST)n功能:对目的操作数DST按位取反,结果回送目的操作数。目的操作数可以为

    40、通用寄存器或存储器。NOT指令对标志位无影响)(DST11/10/2022107(5)测试指令TEST(Test)n格式:TEST DST,SRC;(DST)(SRC)影响标志位n功能:目的操作数DST和源操作数SRC按位进行逻辑与操作,结果不回送目的操作数。源操作数可以为通用寄存器、存储器或立即数。目的操作数可以为通用寄存器或存储器操作数 nTEST指令影响标志位为SF,ZF,PF,并且使OF=CF=0 11/10/2022108举例TEST AL,80H;测试AL中最高位JZ NEXT;如果最高位为0,转到标志NEXT处 11/10/20221092.移位指令 n移位指令对操作数按某种方式

    41、左移或右移,当移位位数为1时可以由立即数直接给出,否则由CL间接给出。移位指令分移位指令和循环移位指令 11/10/2022110(1)移位指令 n移位指令目的操作数DST可以为通用寄存器或存储器操作数图 3-14 移位指令示意图(a)逻辑和算术左移指令;(b)算术右移指令;(c)逻辑右移指令 11/10/2022111算术左移指令SAL(Shift arithmetic left)n格式:SAL DST,CNTn功能:按照操作数CNT规定的移位位数,对目的操作数进行左移操作,最高位移入CF中。每移动一位,右边补一位0n目的操作数可以为通用寄存器或存储器操作数 11/10/2022112逻辑左

    42、移指令SHL(Shift logical left)n格式:SHL DST,CNTn功能:与SAL相同。nSAL,SHL指令影响标志位OF,SF,ZF,PF,CF 11/10/2022113举例SHL BYTE PTR DI,1SAL BX,CL 11/10/2022114算术右移指令SAR(Shift arithmetic right)n格式:SAR DST,CNTn功能:按照操作数CNT规定的移位次数,对目的操作数进行右移操作,最低位移至CF中,最高位(即符号位)保持不变,如图3-14(b)所示。目的操作数可以为通用寄存器或存储器操作数 11/10/2022115逻辑右移指令SHR(Shi

    43、ft logical right)n格式:SHR DST,SRCn功能:按照操作数CNT规定的移位位数,对目的操作数进行右移操作,最低位移至CF中。每移动一位,左边补一位0n目的操作数可以为通用寄存器或存储器操作数nSAR、SHR指令影响标志位OF,SF,ZF,PF,CF 11/10/2022116举例SAR BYTE PTR SI,1SHR DX,CL 11/10/2022117应用n算术/逻辑左移,只要结果未超出目的操作数所能表达的范围,每左移一次相当于原数乘2n算术右移只要无溢出,每右移一次相当于原数除以2 11/10/20221183.循环移位指令 n循环移位指令目的操作数DST可以为

    44、通用寄存器或存储器操作数。循环移位指令影响标志位CF,OF。其它标志位无定义 图 3-15 循环移位指令(a)循环左移指令;(b)循环右移指令;(c)带进位循环左移指令;(d)带进位循环右移指令 11/10/2022119循环左移指令ROL(Rotate left)n格式:ROL DST,CNTn功能:循环左移指令ROL,目的操作数左移,每移位一次,其最高位移入最低位,同时最高位也移入进位标志CF11/10/2022120循环右移指令ROR(Rotate right)n格式:ROR DST,CNTn功能:循环右移指令 ROR,目的操作数右移,每移位一次,其最低位移入最高位,同时最低位也移入进位

    45、标志CF 11/10/2022121带进位循环左移指令RCL(Rotate left through carry)n格式:RCL DST,CNT n功能:带进位循环左移指令RCL,目的操作数左移,每移动一次,其最高位移入进位标志CF,CF移入最低位 11/10/2022122带进位循环右移指令RCR(Rotate right through carry)n格式:RCR DST,CNTn功能:目的操作数右移,每移动一次,其最低位移入进位标志CF,CF移入最高位 11/10/2022123举例【例3-2】将一个2位数压缩的BCD码转换成二进制数。BCD DB 59HBIN DB?MOV AL,BC

    46、DMOV BL,ALAND BL,0FHAND AL,0F0HMOV CL,4ROR AL,CLMOV BH,0AHMUL BHADD AL,BLMOV BIN,AL11/10/20221243.3.4控制转移类指令 n用于控制程序流程的指令包括转移、循环、过程调用和中断调用 11/10/20221251.转移指令 n无条件转移指令JMP(Jump)n条件转移指令11/10/2022126(1)无条件转移指令JMP(Jump)n功能是使程序无条件地转移到指令规定的目的地址去执行指令n转移分为短转移、段内转移(近程转移)和段间转移(远程转移)11/10/2022127段内直接转移 n格式:JMP

    47、 SHORT OPR;段内短转移(IP)(IP)+D8 JMP NEAR PTR OPR;段内近程转移(IP)(IP)+D16n功能:采用相对寻址将当前IP值(即JMP指令下一条指令的地址)与JMP指令中给出的偏移量之和送IP中n段内短转移(SHORT)指令偏移量D8为8 位,允许转移偏移值的范围为-128+127。段内近程转移(NEAR)指令偏移量D16为16位,允许转移偏移值范围为-215+215-1nOPR为标号或标号加常量表达式 11/10/2022128举例JMP SHORT NEXT NEXT:MOV AL,BL为无条件转移到本段内,标号为NEXT的地址去执行指令,汇编程序可以确定

    48、目的地址与JMP指令的距离 11/10/2022129段内间接转移 n格式:JMP REG JMP WORD PTR REG JMP OPR1;OPR1为字变量n功能:段内间接转移,其中JMP REG指令的转移地址在通用寄存器中,将其内容直接送IP实现程序转移。JMP WORD PTR REG指令和JMP OPR1的转移地址在存储器中,默认段寄存器根据参与寻址的通用寄存器来确定,将指定存储单元的字取出直接送IP实现程序转移nJMP指令转移偏移值范围为-215215-1 11/10/2022130举例设DS=3000H,BX=0100H。JMP BX;(IP)=0100HJMP WORD PTR

    49、 BX;将地址3000 0100H单元存放的一个字送IP 11/10/2022131段间直接转移 n格式:JMP FAR PTR OPRn功能:段间直接转移,FAR PTR说明标号OPR具有远程属性。将指令中由OPR指定的段值送CS,偏移地址送IP。例如:JMP FAR PTR NEXT11/10/2022132段间间接转移 n格式:JMP DWORD PTR REG JMP OPR1;OPR1为双字变量n功能:段间间接转移,由FAR PTR REG和OPR1指定的存储器操作数作为转移地址。存储器操作数为32位,包括16位段地址和16位偏移地址。例如:JMP DWORD PTR BX ;数据段

    50、双字存储单元低字内容送IP ;数据段双字存储单元高字内容送CS 11/10/2022133(2)条件转移指令 n功能:根据上一条指令对标志寄存器中标志位的影响来决定程序执行的流程,若满足指令规定的条件,则程序转移;否则程序顺序执行 n条件转移指令的转移范围为段内短转移,即(IP)(IP)+D8转移量为8位。段内转移偏移值范围为-128+127n条件转移指令包括四类:单标志位条件转移指令;无符号数比较条件转移指令;带符号数比较条件转移指令;测试CX条件转移指令nOPR:标号或标号加常量表达式 11/10/20221341)单标志位条件转移指令 JZ(或JE)(Jump if zero,or eq

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:微机原理与接口技术课件-2.ppt
    链接地址:https://www.163wenku.com/p-4092600.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库