微机原理与接口技术教学课件(共9章)第3章--指令系统

举报
资源描述
第三章 8088/8086的指令系统第 3 章指令的基本格式指令的基本格式8086/80888086/8088的寻址方式的寻址方式8086/80888086/8088指令系统指令系统3.13.23.3微机原理与接口技术3.1 指令的基本格式1.操作码:表示计算机要执行的操作类型 如:MOV数据传送 IN 数据输入2.操作数:指令执行所需的数 1)大部分指令有2个操作数:目的操作数和源操作数 如:MOV AL,45H ;逗号前面的AL是目的操作数,后面45H是源操作数 2)少数指令只有一个操作数,可能是源操作数,也可能是目的操作数 如:INC BX ;BX既是源操作数,又是目的操作数 PUSH AX ;AX是源操作数 POP AX ;AX是目的操作数 3)少数指令没有操作数 如:DAA ;加法的十进制调整指令,操作数隐含在AL中汇编指令由两部分组成:操作码 操作数寻找操作数来源的方式,称为寻址方式,共6种。操作数的可能来源只有三个:(1)直接包含在指令中;立即寻址 (2)CPU的寄存器中;寄存器寻址 (3)存储器中。;4种寻址方式,具体是哪种方式,就看怎样表达存储器单元的地址 操作数来源不同,即寻址方式不同。3.1 指令的基本格式3.1 指令的基本格式3.1 指令的基本格式3.23.2 8086/8088 8086/8088 的寻址方式的寻址方式1、立即立即寻址址 例:MOV AL,34H MOV AX,3000H 特点:操作数是立即数,直接放在指令中 注意:立即数只能做源操作数3.2 3.2 8086/8088 8086/8088 的寻址方式的寻址方式2、寄存器、寄存器寻址址 例:MOV AL,BL;MOV DS,AX;特点:操作数包含在寄存器中 注意:寄存器位数要一致 MOV AL,BX;MOV AX,BL;这两种寻址方式,数据都来源于CPU内部,无须访问总线,所以执行速度相对快。3.1 指令的基本格式3.1 指令的基本格式3.1 指令的基本格式3.23.2 8086/8088 8086/8088 的寻址方式的寻址方式 后面4种寻址方式,操作数都来源于存储器。表3-1存储单元的表示方法。不同的表示方法,表示不同的寻址方式。3.直接寻址 例:MOV AX,2000H 特点:操作数的偏移地址2000H直接在指令中物理地址PA的计算:默认PADS16+偏移地址例如:MOV AL,2000H ;此时,PADS16+2000H若有超越,则PA超越到的段寄存器16+偏移地址例如:MOV AX,ES:4000H;此时,PAES16+4000H执行结果:AX=1234H3.2 3.2 8086/8088 8086/8088 的寻址方式的寻址方式4.寄存器间接寻址 例:MOV BX,SI 注意:1)可间接寻址的寄存器只有四个:BX、BP、SI、DI。其中存放操作数所在的偏移地址 2)以SI/DI/BX间接寻址时,默认DS段 3)以BP间接寻址时,默认SS段 PA=SS16+BP 4)允许段超越MOV BX,SIDS=1000H,SI=3000H结果:BX=2345H3.2 3.2 8086/8088 8086/8088 的寻址方式的寻址方式MOV BX,SS:SI5.变址寻址寄存器间接寻址的基础上加一个8/16位的偏移量,注意事项同上 例:MOV BX,SI+4000H 设:DS=3000H,SI=2000H,位移量为4000H,(36000H)=5678H 则:PA=DS16+SI+COUNT =30000H+2000H+4000H =36000H 执行结果为BX=5678H。3.2 3.2 8086/8088 8086/8088 的寻址方式的寻址方式.基址加变址寻址例:MOV AX,BX+SI16位偏移量;红色部分加不加都可以 有的教材会把加红色部分称作相对基址变址寻址 注意:BXBP不能共存,SIDI不能共存 若用BX:默认操作数在数据段DS中 若用BP:默认操作数在堆栈段SS中 上例中:DS=3000H,BX=2000H,SI=5000H 则:PA=DS16+BX+SI=37000H 指令执行后,AX=5577H 该指令还可写成:MOV AX,BXSI MOV AX,BX+DI+偏移量3.2 3.2 8086/8088 8086/8088 的寻址方式的寻址方式寻址方式小结(看源操作数,不用看目的操作数):立即寻址:MOV AX,3000H寄存器寻址:MOV AX,BX直接寻址:MOV AX,3000H寄存器间接寻址:MOV AX,BX 变址寻址:MOV AX,BX+800H基址加变址寻址:MOV AX,【BX+SI+900H】Intel 8086/8088指令系统共有133条基本指令,可分成6个功能组:数据传送类指令 算术运算类指令 逻辑运算类指令 串操作类指令 控制转移类指令 处理器控制类指令3.3.3 8088/8086 3 8088/8086的指令系统的指令系统六种格式:通用寄存器之间传送(r/r),MOV BL,AL MOV DI,AX 通用寄存器和段寄存器之间传送(r/SEG),MOV DS,AX MOV AX,ES 通用寄存器和存储单元之间传送(r/M),MOV AL,2000H MOV DI,AX 段寄存器和存储单元之间传送(seg/M),MOV DS,2000H MOV BX SI,SS;立即数到通用寄存器(r Imm),MOV BX,2000H;立即数到存储单元(M Imm),MOV 4000H,30H;3.3.3 3.1.1 数据传送指令数据传送指令基本格式:MOV dst,src;将源操作数src传送到目的操作数dst;后面是注释,不参与编译;功能相当于复制src,粘贴到dst,即src不变,dst被覆盖.位数一致 MOV AL,2000H;MOV AL,BX;MOV AX,BL;.不允许存储单元间传送数据 MOV 2000H,3000H;MOV DI,SI ;.不能用CS和IP作目的操作数 MOV CS,3000H;MOV IP,2000H;3.3.3 3.1.1 数据传送指令数据传送指令1通用数据传送指令 (1)MOV传送指令 2)注意事项段寄存器之间不能直接传送数据。MOV SS,DS;立即数不能作目的操作数。MOV 2000H,AX;MOV 34H,AL;不能向段寄存器送立即数 MOV DS,4000H;应改为:MOV AX,4000H;MOV DS,AX(2)堆栈指令 入栈:PUSH src ;SP-2后,将src压入堆栈 出栈:OP dst ;当前栈顶2个数据弹出到dst,后SP+2 堆栈:用SS:SP管理,其地址表示当前栈顶单元地址 SP总是指向栈顶 SP初值决定了栈的深度,栈深度 64kB。原则:操作数必须是16位寄存器/存储器 PUSH AX ;PUSH AL ;PUSH 2345H;不可以是立即数 后进先出(LIFO)例:PUSH AX PUSH BX .POP BX POP AX 3.3.3 3.1.1 数据传送指令数据传送指令(3)交换指令格式:XCHG dst,src;dst与src内容互换 是唯一的把源操作数也刷新了的汇编指令。交换可以发生在:通用寄存器之间、通用寄存器与存储器 例:XCHG AL,BL ;AL和BL数据互换 XCHG AL,2000H;AL与2000H;数据互换 3.3.3 3.1.1 数据传送指令数据传送指令注意:位数一致 XCHG AL,CX ;段寄存器和立即数不能作为一个操作数;XCHG DS,AX;XCHG BX,2000H;.不能在存储器与存储器之间交换数据 XCHG 3000H,2000H;3.地址目标传送指令LEA例如:LEA BX,table;将table的地址送到B能等价于 MOV BX,offset table比较下面三条指令:MOV BX,1700H ;将1700H送到BXMOV BX,1700H;地址为1700H存储单元的内容送到BX,执行完BX=1700H单元的内容LEA BX,1700H;地址为1700H存储单元的地址1700H送到BX,执行完BX=1700H 3.3.3 3.1.1 数据传送指令数据传送指令2累加器专用传送指令 输入/输出指令(CPU与I/O口之间的数据传送)当I/O地址FFH时 IN AL,DX ;ALDX IN AX,DX ;AXDX+1DXOUT 同理如下 OUT n,AL ;ALn OUT n,AX ;AXn+1n OUT DX,AL;ALDX OUT DX,AX;AXDX+1DX3.3.3 3.1.1 数据传送指令数据传送指令例:IN AL,86H;从86H端口读入一个字节到ALIN AX,0F0H;F0H口的数据到AL,F1H口的到AHMOV DX,280H;IN A L,DX ;端口280H读一个字节到ALOUT 83H,AL;AL内容输出到端口83HMOV DX,281H;OUT DX,AX ;AL到端口281H,AH到端口282H(2)换码指令XLATXLAT (表首地址);括号可有可无AL=(DS)16(BX)+(AL)条件:建立表格,有规律可查 BX指向表首地址AL存放待查的码执行XLAT后:转换后的结果存放在AL中。n常用于无规律的代码转换3.3.3 3.1.1 数据传送指令数据传送指令例3-3 若十进制数字09的LED七段码(共阳极,小数点常亮)对照表如下表所示,试用XLAT指令求数字N(N=09)的七段码值。TABLE DB 40H,79H,24H,30H,19H,12H,02H,78H,00H,18H.MOV BX,OFFSET TABLE ;table的偏移地址 MOV AL,N XLAT 若N=5,执行上述指令后AL=12H,若需输出,可采用OUT DX,AL,输出到LED显示数据传送类小结数据传送类小结1.通用传送类:MOV dst,src;PUSH src;src压入堆栈 POP dst;当前栈顶的内容弹出到dst XCHG dst,src;dst与src内容互换2.累加器专用指令 IN AL/AX,n/DX OUT n/DX,AL/AX XLAT(表首地址)3.3.3 3.1.1 数据传送指令数据传送指令1加法指令 ADD dst,src ;dstdst+src(2)ADC dst,src ;dstdst+src+CF(3)INC dst ;dst dst+1,不影响CF其中:dst:通用寄存器或存储器。src:通用寄存器、存储器或立即数 dst与src不能同为存储器影响OF、SF、ZF、AF、PF、CF(INC不影响CF)例:MOV AL,0FFH ADD AL,1;AL=00H,CF=1 OF=0 SF=0,ZF=1,AF=1,PF=1MOV AL,0FFH INC AL ;AL=00H,CF不变,其他标志位同上3.3.3 3.2.2 算术运算指令算术运算指令加法调整指令(4)DAA;加法结果的十进制调整指令加法结果的十进制调整指令(5)AAA;加法结果的加法结果的ASCIIASCII调整调整 被调整的操作数隐含在AL中。例3-8 若AL=BCD 28,BL=BCD 47 ADD AL,BL ;执行完AL=6FH DAA ;执行完AL=75H,即28+47 若DAA换成AAA,执行后AX=0705H 2.减法类指令(Subtract)以下指令与加法类似(1)SUB SUB dst,src ;dst=dst-src (2)SBB dst,src;dst=dst-src-CF (3)DEC dst;dst=dst-1,不影响CF(4)DAS(5)AAS3.3.3 3.2.2 算术运算指令算术运算指令比较指令是减法CMP dst,src;比较之后产生分支结构 dst与src做差,但不产生结果,影响标 志位,以判断被比较的两数大小 例:CMP AL,60 JC FAIL;CF=1,转到FAIL JMP PASS;否则转到PASS算术运算类指令小结加法:ADD、ADC
展开阅读全文
温馨提示:
金锄头文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
相关搜索

当前位置:首页 > 高等教育 > 大学课件


电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号