《微机原理与应用教学资料》第三章(课件).ppt
《《微机原理与应用教学资料》第三章(课件).ppt》由会员分享,可在线阅读,更多相关《《微机原理与应用教学资料》第三章(课件).ppt(80页珍藏版)》请在三一办公上搜索。
1、1,第三章 8086的寻址方式和指令系统,电气学院学习部资料库,2,3-1 8086寻址方式指令:操作码:给出此指令应完成何种操作。告诉计算机 做什么 操作数:该指令的操作对象。告诉计算机对谁做指令格式:操作码 目的操作数,源操作数 源操作数:数据从何而来。操作过程中原值不变。目的操作数:送到哪里去。操作数原值不保留。寻址方式:说明操作数所在地址的方法。操作数来源:指令 CPU内部寄存器 内存单元,电气学院学习部资料库,3,一、立即寻址方式 指令中包含操作数,不必执行总线周期,指令执行速度快例1:MOV AL,80H;80HAL,(AL)=80H例2:MOV AX,1234H;1234HAX,
2、(AH)=12H,(AL)=34H*加上(),表示取寄存器或内存单元的内容 一般用于赋值。源操作数和目的操作数字长应相同 立即数只能做源操作数,不能做目的操作数 若是以字母打头的数,例:A0H在编程中必须表示为0A0H,电气学院学习部资料库,4,二、寄存器寻址操作数在寄存器中,不必执行总线周期,执行速度快例1:INC AL;(AL)+1AL,若(AL)=86H,指令执行完(AL)=87H例2:MOV AX,CX;(CX)AX,若指令执行前CX=3A68H,指令执行后AX=3A68H目的与源操作数都可用寄存器寻址注意数据匹配,源与目的操作数的长度必须一致 例:MOV AX,BL;错误。可用于寄存
3、器寻址的寄存器包括:4个通用寄存器,4个专用寄存器 16位操作数:AX,BX,CX,DX,SI,DI,SP,BP 8位操作数:AH,AL,BH,BL,CH,CL,DH,DL从第三种开始,指令的操作数都在内存中,须用不同的方法求出操作数的物理地址,来获得操作数。,电气学院学习部资料库,5,三、直接寻址 指令中直接给出操作数的有效地址EA,操作数在内存中,需执行总线周期 有效地址EA:操作数的偏移地址 物理地址=段地址*16+EA默认段地址为DS,指令中有效地址EA加,以区别于立即数。*加上,表示里面的内容是内存中偏移地址 例1:MOV AL,1064H;若(DS)=1000H,则(11064H)
4、AL 例2:MOV AX,1064H;(11064H)AL,(11065H)AH 若(11064H)=00H,(11065H)=12H,(AX)=1200H,电气学院学习部资料库,6,一个字在存储体中相邻的两个字节存放,字单元的地址以低位地址表示,存入时以低位字节在低地址,高位字节在高地址段超越前缀:若段地址为CS、SS、ES,应在指令中指定段超越前缀 例:MOV AX,ES:1064H;将ES段中1064H的内容AX ES:MOV AX,1064H 符号地址(给存储单元起一名字,变量名)例:MOV AX,AREA1;从符号地址为AREA1的存储单元中取一个字 AX 符号地址也允许段超越,电气
5、学院学习部资料库,7,四、寄存器间接寻址 指令中通过寄存器给出有效地址EA,寄存器中为地址,操作数在内存中,需执行总线周期可以用于寄存器间接寻址的寄存器有:SI、DI,BX、BP 变址寄存器 基址寄存器 寄存器名称外面必须加(SI)EA=(DI)DS(默认)(BX)(BP):SS物理地址=段地址*16+EA,电气学院学习部资料库,8,例:MOV BX,SI;若(DS)=1000H,(SI)=2000H,(12000H)=318BH。则(BH)=31H,(BL)=8BH 也可以通过指定超越前缀,改变段基地址 例:MOV BX,DS:BP;(DS:BP)BL,(DS:BP+1)BH,电气学院学习部
6、资料库,9,五、寄存器相对寻址 通过基址或变址寄存器的内容与指令中指定的8位或16位位移量(Displacement)给出EA,操作数在内存中,需执行总线周期(SI)8位 EA=(DI)DS+disp(BX)16位(BP):SS 物理地址=段地址*16+EA 例:MOV AX,BX+1000H;(DS:BX+1000H)AL,(DS:BX+1001H)AH MOV AX,1000HBX也可以通过指定超越前缀,改变段基地址 例:MOV AX,ES:1000HBX,电气学院学习部资料库,10,六、基址加变址寻址 由一个基址寄存器(BX或BP)和一个变址寄存器(SI或DI)之和给出EA BX SI
7、EA=+BP DI 物理地址=段地址*16+EA 默认的段地址:只需出现BP,即为SS,其余为DS例:MOV AX,BX+SI;(DS:BX+SI)AL,(DS:BX+SI+1)AH MOV AX,BXSI MOV AX,SI+BP;(SS:SI+BP)AL,(SS:SI+BP+1)AH MOV AX,BP+SI例:MOV AX,BX+BP;错误,BX、BP均为基址寄存器,电气学院学习部资料库,11,七、相对基址加变址寻址 由一个基址寄存器和一个变址寄存器的内容,再加上一个位移量,三者之和确定EA BX SI 8位 EA=+disp BP DI 16位例:MOV AX,BX+SI+1000H;
8、(DS:EA)AL,(DS:EA+1)AH MOV AX,1000H BXSI若 DS=2000H,BX=1500H,SI=0300H,disp=1000H,(22800H)=26BFH则 EA=1500H+0300H+1000H=2800H,物理地址=20000H+2800H=22800H,AX=26BFH,电气学院学习部资料库,12,八、其它 隐含寻址 例:DAA、AAA、AAS、DAS、AAM、AAD I/O端口寻址 例:IN AL,63H;OUT 85H,AL;MOV DX,0FF4H;OUT DX,AL;,电气学院学习部资料库,13,课堂练习:举例:指出下列指令中目的、源操作数各采用
9、何种寻址方式 目的操作数 源操作数 MOV SI,1000H;MOV SI,AL;MOV 1000H,AL;MOV BP,BX;MOV BP,BX;MOV AX,AREA1;AND DL,BX+SI+20H;PUSH DS;ADD AX,BX+SI;SUB AX,BX+1000H;IN AL,05H;,R寻址 立即数寻址 R间接寻址 R寻址 直接寻址 R寻址 R寻址 R寻址 R寻址 R间接寻址 R寻址 直接寻址 R寻址 相对基址加变址 R寻址 R寻址 基址加变址 R寻址 R相对寻址 R寻址 I/O端口寻址,电气学院学习部资料库,14,3.2 8086指令系统,一、数据传送指令1、通用数据传送指
10、令(1)MOV传送指令 格式:MOV 目的,源 功能:源操作数 目的操作数,可实现R R,R M,立即数 M的传送(参见图3-12)受影响的标志位:无 例:MOV AX,BX;BX AX,R R MOV AX,1064H;M R MOV 1064H,AX;R M MOV WORD PTR1000H,1000H;立即数 M,电气学院学习部资料库,15,注意:源操作数和目的操作数字长应相同立即数只能做源操作数,且不能被直接送进段寄存器IP寄存器不能用作源操作数,亦不能做目的操作数CS寄存器不能作目的操作数不能在两个内存单元,或两个段寄存器之间直接传送数据指令中至少要有一项操作数明确说明传送的是字节
11、还是字,电气学院学习部资料库,16,DATA SEGMENT AREA1 DB 14H,3BH;变量名 助记符 AREA2 DB 3 DUP(0);重复3个0存入AREA2起始的储存单元 ARRAY DW 3100H,01A6H STRING DB GOODDATA ENDS,D,O,O,G,01H,A6H,31H,00H,00H,00H,00H,3BH,14H,ARRAY,STRING,AREA1,AREA2,DATA:0000H,DATA:0002H,DATA:0005H,DATA:0009H,段定义符,电气学院学习部资料库,17,说明:1.SEGMENTENDS 段定义语句 DATA 数
12、据段段名2.DB、DW 数据定义语句 作用:将操作数存入变量名指定的存储单元 格式1:变量名 伪操作符(DB、DW)操作数,操作数,.格式2:变量名 伪操作符(DB、DW)n DUP(操作数,操作数,.)其中,DB 用来定义字节变量,DW用来定义字变量3.AREA1:变量名,将此变量的助记符后的第一个字节的偏移地址作为它的符号地址例:STRING1 DB OK STRING2 DW OK 例:STRING2 DW GOOD;错误,电气学院学习部资料库,18,(2)堆栈、出栈指令 PUSH、POP 格式:PUSH 源 POP 目的 功能:PUSH 将源操作数压到堆栈中,POP将堆栈中数据弹出到目
13、的操作数 受影响的标志位:无 说明:按“字”操作,源操作数可以是16位通用寄存器,段寄存器或存储器中的数据字 PUSH:(SP)-2 SP,POP:(SP)+2 SP 操作数不能是立即数 例:PUSH 1000H;错误堆栈操作原则:先进后出 SP始终指向栈顶,且总是指向偶地址单元,其值可以从FFFEH开始 POP指令中,CS 不能做目的操作数,即 PUSH CS 正确,而POP CS 错误,电气学院学习部资料库,19,PUSH AX PUSH BX.POP BX POP AX,例:已知指令执行前(SS)=C000H,(SP)=C100H,(AX)=1100H,(BX)=3322H,;该指令执行
14、后(SP)=C0FEH,;该指令执行后(SP)=C0FCH,电气学院学习部资料库,20,堆栈初始化操作,堆栈段起始地址,栈底及初始栈顶,电气学院学习部资料库,21,入栈操作,电气学院学习部资料库,22,出栈操作,电气学院学习部资料库,23,(3)交换指令 XCHG 格式:XCHG 目的,源 功能:目的操作数与源操作数互换 影响标志位:无 例:XCHG AL,BL XCHG BX,DX XCHG AL,BX;错误注意:CS、IP 不能做操作数 例:XCHG CS,AX;错误 XCHG IP,BX;错误 不能直接交换两个存储单元 例:XCHG 1000H,BX;错误,电气学院学习部资料库,24,(
15、4)换码指令XLAT 格式:XLAT 转换表 或XLAT 功能:将一个字节从一种代码转换为另一种代码,结果自动送入AL中 影响标志位:无 执行以下操作:先建立一个表格(在DS段中),将转换表的起始偏移地址BX将表中某一项(所要查找的)与表首地址之间的位移量 ALXLAT指令执行时,CPU会将BX和AL中的值相加,将得到的值作为地址,然后将此地址所对应的单元中的值取到AL中即:BX+AL AL,电气学院学习部资料库,25,例:要求将3从十进制数转换成相应的字型代码,电气学院学习部资料库,26,数据段中T1用于存储字型代码表格 T1 DB 40H,79H,24H,30H,19H DB 12H,02
16、H,78H,00H,18H;定义七段码表格 MOV BX,OFFSET T1;表格首地址BX,;(OFFSET 变量或标号)用于返回变量或标号的偏移地址值 MOV AL,3;数字3的位移量 AL XLAT T1;查表得(AL)=30H,T1也可不写,电气学院学习部资料库,27,2、输入/输出指令:IN/OUT 格式:IN 目的,源 OUT 功能:实现AX,AL与I/O Interface间的数据传递 影响标志位:无 例:IN AL,50H;50H端口内容AL IN AX,50H;50H端口内容AL,51H内容AH OUT 50H,AL;AL内容50H端口,电气学院学习部资料库,28,注意:寄存
17、器只能是累加器AX或AL 例:IN BL,50H;错误 IN AL,50H MOV BL,AL;可实现(50H)BL如果端口地址0FFH(255),只能用DX间接寻址 即 在DX寄存器中设置好端口号 例:IN AL,01FFH;错误 MOV DX,01FFH IN AL,DX;可实现(01FFH)AL,电气学院学习部资料库,29,3、地址传送指令(1)LEA 取有效地址指令格式:LEA 目的,源功能:将存储器中源操作数地址的偏移量送到一个16位寄存器(除CS以外)影响标志位:无例:LEA AX,2728H;(AX)=2728H 比较 MOV AX,2728H;(DS:2728H)AX LEA
18、BX,TABLE 等效 MOV BX,OFFSET TABLE注意:LEA指令和MOV指令的区别例:MOV BX,OFFSET 2728H;错误,电气学院学习部资料库,30,(2)LDS 将双字指针送到寄存器和DS指令格式:LDS 目的,源功能:从源操作数指定的存储单元中,取出4字节内容,前2字节目的(多用SI),后2个字节DS例:已知DS=1200H,(12450H)=F346H,(12452H)=0A90H LDS SI,0450H;执行后,(SI)=F346H,(DS)=0A90H(3)LES 将双字指针送到寄存器和ES指令格式:LES 目的,源功能:从源操作数指定的存储单元中,取出4字
19、节内容,前2字节目的(多用DI),后2字节ES例:已知DS=1200H,(12450H)=F346H,(12452H)=0A90H LES DI,0450H;执行后,(DI)=F346H,(ES)=0A90H,电气学院学习部资料库,31,4、标志传送指令(1)LAHF 标志送到AH指令 格式:LAHF 功能:把PSW低8位取到AH中 影响标志位:无(2)SAHF AH送标志寄存器指令 格式:SAHF 功能:为LAHF的反操作,即将AH的内容存入PSW低8位 影响标志位:SF、ZF、AF、PF、CF,电气学院学习部资料库,32,(3)标志入栈、出栈指令 PUSHF、POPF 格式:PUSHF、P
20、OPF 功能:PUSHF:PSW内容入栈,SP-2 SP POPF:栈顶内容弹到PSW,SP+2 SP(当前堆栈指针所指的一个字)用途:成对使用,常用于子程序调用和中断服务子程序的开头和结尾,对PSW保护和恢复 用于修改TF,电气学院学习部资料库,33,二、算术运算指令(都影响标志位)1、加法指令(1)ADD ADC格式:ADD 目的操作数,源操作数 ADC功能:ADD:源+目的 目的 ADC:源+目的+CF 目的注意:目的操作数和源操作数不能同时为存储器目的操作数和源操作数类型必须一致,同为字或字节例1:ADD AX,1000H;(AX)+1000H AX ADD AL,12H ADC AL
21、,0AH,电气学院学习部资料库,34,例2:假设一个四字节数12346678H存于起始地址0100H中,一个二字节数A567H存于0200H中,要求进行两数求和,并把结果存放于0300H起始地址的内存中 MOV SI,0100H;把四字节数首地址 SI MOV BX,0300H;存放求和结果内存单元首地址 BX MOV AX,SI;把四字节数低16位 AX ADD AX,0200H;二字节数+四字节数低16位 MOV BX,AX;(AX)BX MOV AX,SI+2;高16位 AX ADC AX,0000H;(AX)+0000H+CF AX MOV BX+2,AX,电气学院学习部资料库,35,
22、(2)增量指令INC格式:INC 目的操作数功能:目的+1 目的例1:INC AL;(AL)+1 AL INC AX;(AX)+1 AX注意:执行后影响AF、OF、PF、SF、ZF,但不影响CF例2:INC AX;若AX=FFFFH,按正常情况,加1后,CF=1,按此规定不影响CF 由于该指令只有一个操作数,如果操作数是内存单元,则必须用伪指令进行类型说明 伪指令格式:类型 PTR(类型说明符)变量或地址表达式例3:INC BYTE PTR BX+DI+500H WORD PTR PWORD PTR(定义一个四字节的内存空间存储一个数),电气学院学习部资料库,36,2、减法指令(1)SUB,S
23、BB格式:SUB 目的,源 SBB功能:SUB:目的-源目的 SBB:目的-源-CF 目的 例:SUB AX,2000H SUB AL,0ABH SBB AX,2030H SBB WORD PTR DI+2,1000H(2)减量指令DEC格式:DEC 目的功能:目的-1 目的,为INC 的反操作影响标志位,但不影响CF 例:DEC AX DEC BYTE PTR BX,电气学院学习部资料库,37,(3)求补指令NEG 格式:NEG 目的 功能:对目的操作数求补目的(0-目的目的)例:若(AX)=1234H,NEG AX;执行后,(AX)=EDCCH,CF=1 只有当目的操作数为0,CF=0(4
24、)比较指令 CMP 格式:CMP 目的,源 功能:目的-源,只进行比较,不破坏两个操作数 影响标志位:ZF、CF、SF、OF、PF、AFa、目的=源,ZF=1b、若目的源 无符号数 CF=0 目的源 CF=1 目的源 SFOF=1(即SF、OF不同)目的源,电气学院学习部资料库,38,3、乘法指令(1)无符号数乘法MUL格式:MUL 源(有隐含操作数)功能:(AX)*(16位)源 DX、AX(AL)*(8位)源 AX例:MUL BL;(BL)*(AL)AX MUL CX;(CX)*(AX)高16位 DX 低16位 AX注意:若源操作数为存储器单元,源操作数前应加上PTR类型说明,电气学院学习部
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机原理与应用教学资料 微机 原理 应用 教学 资料 第三 课件
链接地址:https://www.31ppt.com/p-5898332.html