《【教学课件】第二章微型计算机指令系统.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第二章微型计算机指令系统.ppt(24页珍藏版)》请在三一办公上搜索。
1、1,第二章 微型计算机指令系统,重点:*1、目标地址传送*寻址方式 2、标志传送 3、转移控制(转移指令、过程调用、中断),指令-微机算术、逻辑和控制功能的实现基础,2,指令(Instruction)指令集或指令系统(Instruction Set)指令的表示,指令与指令系统,指示CPU执行某种规定操作的命令,某一CPU所能执行的全部指令的集合 定义了程序员能使硬件完成的基本操作(CPU基本性能)。,F8H=CLC指令 F5H=CMC F9H=STC05H 00H 10H ADD AX,1000H B9H 25H 00H MOV CX,0025H01H C8H ADD AX,CX机器码(指令)
2、汇编语言/助记符(Mnemonic Symbol),3,软件程序与指令的关系,编辑器(Editor)程序设计编译器(Compiler)高级语言程序(与机器无关)汇编器(Assembler)汇编语言(与机器有关)链接器(Linker)待装配的BIN指令代码 可执行BIN指令代码(软件)SOFTWAREFIRMWARE(固件),4,指令体系与8086指令,05H 00H 10H ADD AX,1000H指令功能 对应CPU执行的某种规定操作(算术/逻辑/控制)指令码=操作码(Opcode)+操作数(Operand)(目标/源操作数)解决:1 什么操作 2 涉及的数和结果如何存放寻址(Address
3、ing)方式,复杂指令计算机(CISCComplex Instruction Set Computer)例:80X86/Pentium 变字节 1-16字节,种类多,代码利用率低8086指令向下兼容8080/8085指令,共92种基本指令(P434),指令-指示CPU执行某种规定操作的命令,精简指令计算机(RISCReduced Instruction Set Computer)APARC,PowerPC,Alpha 指令简单,复杂功能代码存储器利用率低,5,8086/8088指令格式,操作码(Opcode)+操作数(Operand=OPrd1,Oprd2),Prefix14字节,OP Cod
4、e12字节,Mode r/m 1字节,s-i-b 1字节,disp 0,1,2,4,data 字节,字段1 字段2 字段3 字段4 字段5 字段6,操作码 指定操作类型(操作数类型、寄存器、方向),寻址(Addressing)方式 粗分4种,细分7种 源操作数值在何处(Oprd1,Oprd2)目标操作数结果送往何处;(Oprd1)转移控制指令JMP/CALL/INT目标地址 特例-无/默认操作数(NOP,CLI,EI,STD,CLD),6,第一节 指令寻址方式,1、立即寻址(Immediate Addressing)MOV AL,100;MOV CX,2000H;(MOV DS,200H)2、
5、寄存器寻址(Register Addressing)MOV DS,AX;MOVCX,BX;MOVSI,DX3、直接寻址(Direct Addressing)MOV AX,2000H;MOV AL,BUFFER(内存);4、寄存器间(接寻)址(Register Indirect Addressing)MOV AX,SI;MOV BL,DI;MOV CH,BX;MOV DX,BP,7,寻址:物理地址获取,存储器访问:单元/变量物理地址PA逻辑地址:段基地址SA+偏移地址EA(Effective Addr)两部分 PA=SA*16+EA 书面表示 SA:EA 1000:2000H.DS:2000H有
6、效地址EA=偏移(Offset)地址(直接寻址/寄存器间址表示)MOV AX,8000H;MOV BX,8000H;MOV AX,BX MOV CL,CS:2000H,8,各种寻址方式(二),5、变址寻址(Indexed Addressing)索引-源变值R:SI/目标变址R:DI EA=SI/DI+位移量 MOV AX,SI+6;MOV DL,TABLESI 一维数组6、基址寻址(Based Addressing)BX/BP MOV AL,BX+100;MOV DX,TABLEBP7、基址-变址寻址(Based Indexed Addressing)EA=BX/BP+SI/DI+COUNT
7、MOV AL,BXSICOUNT,MOV DX,BP+DI+COUNT 二维数组,9,存储器操作数,存储器寻址方式 直接寻址 寄存器间(接寻)址、变址寻址、基址寻址、基址-变址寻址=存储器操作数 存储方式 高位结束(Big-Endian)数据类型 1/2/4字节(8/10)(BYTE/WORD/DOUBLE WORD)指针 NEAR/FAR/SHORT访问速度:直接寻址寄存器间址,L,H ML,3B0003B0013B0023B003,MH,H,物理存储格式,10,第二节8086/8088指令系统(六大类),数据传送 通用/I/O/目标地址传送/标志传送 算术运算 整型数据处理逻辑运算与位操作
8、 逻辑数据处理串操作 字符型数据处理转移控制 程序流控制处理(条件/无条件)MPU控制 系统控制管理,11,数据传送指令(一),通用传送(GP transfer)MOV,PUSH/POP,XCHG,(XLAT),1MOV BYTE/WORD传送;各寻址方式;MOV DST,SRC(LD)MOV AX,80A0H(BX,SI,3000)RR/M,I(直接数)R/M;R/MSR(段寄存器)禁止:MM;ISR;SRSR(例:数据块移动),要点:OPRD1不能是立即数 不能同时为存储单元 CS IP不能作为OPRD1 不改变标志,12,将设在DS=3000H始偏0100H的内存单元100个数传送到02
9、00H为始地址的区域MOVAX,3000HMOV DS,AXMOVSI,0100HMOVDI,0200HMOVCX,100MOVCX,100/2NT:MOVAL,SIMOV AX,SIMOVDI,ALMOV DI,AXINCSIINCSIINCSIINCDIINCDIINCDIDECCXDECCXJNZNTINT20H,13,PUSHSP=SP-1OPRDH SPSP=SP-1OPRDL SP,2PUSH SRC;(SP)(SP)-2;(SP)+1:(SP)(SRC)POP DST;(DST)(SP)+1:(SP);(SP)(SP)+2;SRC/DST R/M/SR(但DST不可为CS!)SP
10、偶数!,POP(SP)OPRDLSP=SP+1(SP)OPRDHSP=SP+1,14,通用传送指令-堆栈(STACK),用途 临时保存数据(INT断点/CALL返回地址/数据)传递信息(函数/子程序)特点与规则操作 按字(2字节)进行 P65PUSH指令 从高地址低地址增长,POP相反操作规则 FILO(First-In-Last-Out)栈底 0FFFFH(堆栈的最大地址)SP 为当前栈顶指针(EA)(末指针),堆栈:内存特殊区域,15,通用传送指令-堆栈传递数据(PUSH AX之前),16,通用传送指令-堆栈传递数据(PUSH AX之前),17,通用传送指令-堆栈传递数据(PUSH AX之
11、后),18,执行PUSH AX前(a)后(b)堆栈及指针变化,19,执行POP BX前(a)后(b)堆栈及指针变化,20,通用传送指令-堆栈应用(一),使用过程/关键堆栈平衡 防止溢出PUSH/POP配对使用/CALL-RET/INT-IRET)8086:堆栈段SS:SP用途:保护/传递数据 例:CALL(嵌套)-INT(嵌套)函数调用;,MOV BP,SP;PUSH AX;PUSH BXPUSH CX;.MOVAX,BP-2;访问堆栈内容MOV BX,BP-4;MOV CX,BP-6;恢复AX,BX,CX;.ADD SP,6;代替POP平衡堆栈,21,数据传送-通用传送指令(二),3XCHG
12、 dest,src;(dest)(src)RR/M;禁止MM 例 XCHG AL,AH;XCHG X1SI,AX,4XLAT src_table;(AL)(BX)+(AL)查表转换;可段超越 例 ES:XLAT运行前BX须赋值,例 LEA BX,src_table;MOV AX,SEG src_table;MOV DS,AX;MOV,22,数据传送-I/O端口(Port)传送指令,IN AL/AX,portNo;8位立即数portNo:0255OUT portNo,AL/AX;INAL/AX,DX;DX:064K(0FFFFH)OUT DX,AL/AX;字IN/OUT L,H例 IN AL,4
13、0H OUT 40H,AL MOV DX,3F8H IN AL,DX;PC读COM1 接收 OUT DX,AL;发送,23,数据传送-地址对象传送指令,LEA reg16,mem16;取有效地址,近地址指针(段内)reg16 比较MOV/LEA AX,BUFFER,直接-mem=offset xxxx 例 LEA AX,V1BXSI 当BX=2000H,LEA SI,BX300HSi=2300HFAR Pointer 16位段址:16位偏址 存放格式:(例)LDS SI,BX/LES DI,BX,(Address-object Transfer),LDS reg16,mem32;mem32存放FAR P数据(4bytes)DS:reg16(IP:CSL-H存放)LES reg16,mem32;mem32存放FAR P数据(4bytes)ES:reg16,24,数据传送-标志传送指令(Flag Register Transfer),LAHF;(Load AH from flags);F低8位AH(SF ZF XX AF XX PF XX CF)SAHF;(Store AH to Flags)AHFlags 低8位,指令(2),PUSHF;(SP)(SP)-2;(SP)+1:(SP)(FLAGS)POPF;(FLAGS)(SP)+1:(SP);(SP)(SP)+2;,