第3微机原理与接口技术课清华大学_第1页
第3微机原理与接口技术课清华大学_第2页
第3微机原理与接口技术课清华大学_第3页
第3微机原理与接口技术课清华大学_第4页
第3微机原理与接口技术课清华大学_第5页
已阅读5页,还剩94页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1第第3 3章章 指令系统指令系统2主要内容:n指令系统的一般概念指令系统的一般概念n对操作数的寻址方式对操作数的寻址方式n六大类指令的操作原理:六大类指令的操作原理:操作码的含义操作码的含义指令对操作数的要求指令对操作数的要求指令执行的结果指令执行的结果33.13.1 概述4了解:n指令及指令系统;指令及指令系统;n指令的格式;指令的格式;n指令中的操作数类型;指令中的操作数类型;n指令字长与机器字长;指令字长与机器字长;n指令的执行时间指令的执行时间ncisccisc和和riscrisc指令系统指令系统5一、指令与指令系统指令:指令:控制计算机完成某种操作的命令控制计算机完成某种操作的命令

2、指令系统:指令系统:处理器所能识别的所有指令的集合处理器所能识别的所有指令的集合指令的兼容性:指令的兼容性:同一系列机的指令都是兼容的。同一系列机的指令都是兼容的。6二、指令格式指令中应包含的信息:指令中应包含的信息:运算数据的来源运算数据的来源运算结果的去向运算结果的去向执行的操作执行的操作7指令格式操作码操作码 操作数操作数,操作数操作数执行何种操作执行何种操作目标操作数目标操作数源操作数源操作数参加操作的数据参加操作的数据或数据存放的地址或数据存放的地址8指令格式: 零操作数指令:零操作数指令: 操作码操作码 单操作数指令:单操作数指令: 操作码操作码 操作数操作数双操作数指令:双操作数

3、指令: 操作码操作码 操作数,操作数操作数,操作数多操作数指令:多操作数指令: 三操作数及以上三操作数及以上9三、指令中的操作数立即数立即数寄存器寄存器存储器存储器表征参加操作的数据本身表征参加操作的数据本身表征数据存放的地址表征数据存放的地址10立即数操作数n立即数只能作为源操作数。立即数只能作为源操作数。其本身是参加操作其本身是参加操作的数据,可以是的数据,可以是8位或位或16位。位。 例:例: mov ax,1234h mov bl,22hn立即数无法作为目标操作数立即数无法作为目标操作数n立即数可以是无符号或带符号数,其数值应在立即数可以是无符号或带符号数,其数值应在可取值范围内。可取

4、值范围内。11寄存器操作数:n参加运算的数存放在指令给出的寄存器中,参加运算的数存放在指令给出的寄存器中,可以是可以是16位或位或8位。位。n例:例:nmov ax,bxn mov dl,ch12存储器操作数n参加运算的数存放在存参加运算的数存放在存储器的某一个或某两个储器的某一个或某两个单元中单元中n表现形式:表现形式: 立即数或寄存器立即数或寄存器13存储器操作数例n例:例: mov ax,1200h mov al,1200h22h11h1200h偏移地址偏移地址ah al 14四、指令字长与机器字长n指令字长:指令字长:n由操作码的长度、操作数地址长度、操作数个由操作码的长度、操作数地址

5、长度、操作数个数决定;数决定;n机器字长:机器字长:n计算机能够直接处理的二进制数的位数。计算机能够直接处理的二进制数的位数。15五、指令的执行速度n指令的字长影响指令的执行速度指令的字长影响指令的执行速度 (常用指令的执行时间见表(常用指令的执行时间见表3-4)n对不同的操作数,指令执行的时间不同:对不同的操作数,指令执行的时间不同: 存储器存储器快!快!立即数立即数寄存器寄存器16六、cisc和risc指令系统ncisc指令系统指令系统n指令的功能强,种类多,高级语言和机器语言间指令的功能强,种类多,高级语言和机器语言间的距离缩小;的距离缩小;n指令系统复杂,难使用。指令系统复杂,难使用。

6、nrisc指令系统指令系统n指令功能较弱,种类少,格式简单;指令功能较弱,种类少,格式简单;n多数指令在一个计算机周期内完成;多数指令在一个计算机周期内完成;n对存储器的结构和存取速度要求较高。对存储器的结构和存取速度要求较高。173.2 寻址方式18寻址方式 寻找操作数所在地址的方法寻找操作数所在地址的方法 寻找转移地址的方法寻找转移地址的方法 本节本节19一、立即寻址n指令中的源操作数是立即数,即源操作数是参指令中的源操作数是立即数,即源操作数是参加操作的数据本身加操作的数据本身n例:例:mov ax,1200h12h00hah almov代代码码段段 20二、直接寻址n指令中直接给出操作

7、数的指令中直接给出操作数的偏移地址偏移地址n例:例:mov ax,1200h22h11h1200h偏移地址偏移地址 数数据据段段ah al21直接寻址n直接寻址方式下,操作数的段地址默认为数据直接寻址方式下,操作数的段地址默认为数据段,但允许段重设,即由指令定义段。段,但允许段重设,即由指令定义段。n例:例:mov ax,es:1200h22三、寄存器寻址n参加操作的操作数在参加操作的操作数在cpu的通用寄存器中。的通用寄存器中。n例:例:mov ax,bx ax bx23四、寄存器间接寻址n参与操作的操作数存放在内存中,其偏参与操作的操作数存放在内存中,其偏移地址为指令中的寄存器的内容。移地

8、址为指令中的寄存器的内容。24寄存器间接寻址例n例:例:mov ax,bx 设设bx=1200h22h11h1200h偏移地址偏移地址ah al 11 22数数据据段段代代码码段段mov25寄存器间接寻址n由寄存器间接给出操作数的偏移地址;由寄存器间接给出操作数的偏移地址;n存放偏移地址的寄存器称为存放偏移地址的寄存器称为间址寄存器间址寄存器,它们,它们是:是:bx,bp,si,din操作数的段地址(数据处于哪个段)取决于选操作数的段地址(数据处于哪个段)取决于选择哪一个间址寄存器:择哪一个间址寄存器: bx,si,di bp默认在数据段默认在数据段默认在堆栈段默认在堆栈段26寄存器间接寻址

9、寄存器寄存器间接寻址间接寻址基址寻址(间址基址寻址(间址寄存器为基址寄存寄存器为基址寄存 器器bx,bp)变址寻址(间址变址寻址(间址寄存器为变址寄存寄存器为变址寄存 器器si,di)27五、寄存器相对寻址n操作数的偏移地址为寄存器的内容加上一个位移操作数的偏移地址为寄存器的内容加上一个位移量量n例:例:nmov ax,bx+data 设:设:ds=2000h,bx=0220h,data=05h n则:则:ax=20225h28六、基址、变址寻址n操作数的偏移地址为一个基址寄存器的内容加操作数的偏移地址为一个基址寄存器的内容加上一个变址寄存器的内容,操作数的段地址由上一个变址寄存器的内容,操作

10、数的段地址由选择的基址寄存器决定选择的基址寄存器决定n例:例:mov ax,si+bx29七、基址、变址、相对寻址n操作数的偏移地址为一个基址寄存器的内容加上操作数的偏移地址为一个基址寄存器的内容加上一个变址寄存器的内容,再加上一个位移量。一个变址寄存器的内容,再加上一个位移量。n操作数的段地址由选择的基址寄存器决定操作数的段地址由选择的基址寄存器决定n例:例:mov ax,bp+si+data30八、隐含寻址n指令隐含了的一个或两个操作数的指令隐含了的一个或两个操作数的地址,即操作数在默认的地址中地址,即操作数在默认的地址中n例:例: mul bl 指令的执行:指令的执行:alblax313

11、.33.3 8086指令系统32掌握:n指令码的含义指令码的含义n指令对操作数的要求指令对操作数的要求n指令的对标志位的影响指令的对标志位的影响n指令的功能指令的功能338086指令系统从功能上包括六大类:从功能上包括六大类:数据传送数据传送算术运算算术运算逻辑运算和移位逻辑运算和移位串操作串操作程序控制程序控制处理器控制处理器控制34数据传送指令n通用数据传送通用数据传送n输入输出输入输出n地址传送地址传送n标志位操作标志位操作35一、通用数据传送一般数据传送指令一般数据传送指令堆栈操作指令堆栈操作指令交换指令交换指令查表转换指令查表转换指令字位扩展指令字位扩展指令特点:特点:该类指令的执行

12、对标志位不产生影响该类指令的执行对标志位不产生影响 361. 一般数据传送指令n一般数据传送指令一般数据传送指令 movn格式:格式:mov dest,srcn操作:操作:srcn例:例: mov al,bl dest37一般数据传送指令注:注:n两操作数字长必须相同两操作数字长必须相同 ;n两操作数不允许同时为存储器操作数;两操作数不允许同时为存储器操作数;n两操作数不允许同时为段寄存器;两操作数不允许同时为段寄存器;n在源操作数是立即数时,目标操作数不能是段在源操作数是立即数时,目标操作数不能是段寄存器;寄存器;nip和和cs不作为目标操作数,不作为目标操作数,flags一般也不一般也不作

13、为操作数在指令中出现。作为操作数在指令中出现。38一般数据传送指令判断下列指令的正确性:判断下列指令的正确性:nmov al,bxnmov ax,si05hnmov bxbp,bxnmov ds,1000hnmov dx,09hnmov 1200,si39一般数据传送指令应用例将将( (* *) ) 的的asciiascii码码2ah2ah送入内存送入内存1000h1000h开始的开始的100100个个单元中:单元中: mov dimov di,1000h1000h mov cx mov cx,64h64h mov al mov al,2ah2ahagainagain:mov dimov di

14、,alal inc di inc di ;di+1di+1 dec cx dec cx ;cx-1cx-1 jnz again jnz again ;cx0cx0则继续则继续 hlt hlt 40上段程序在代码段中的存放形式設設cs=109ehcs=109eh,ip=0100hip=0100h,则各条指令存放地址,则各条指令存放地址如下:如下: cs : ip cs : ip 机器指令机器指令 汇编指令汇编指令 109e109e:0100 b80010 0100 b80010 mov dimov di,1000h1000h 109e 109e:0103 0103 . . mov cx mov

15、cx,64h64h 109e 109e:0105 0105 . . mov al mov al,2ah2ah 109e 109e:0107 0107 . . mov di mov di,alal 109e 109e:0109 inc di0109 inc di 109e 109e:010a 010a dec cxdec cx 109e 109e:010b jnz 0107h010b jnz 0107h 109e 109e:010d hlt010d hlt41数据段中的分布 送上送上2ah2ah后数据段中相应存储单元的内容改后数据段中相应存储单元的内容改变如下:变如下:dsds:1000 2a

16、2a 2a 2a 2a 2a 2a 2a-2a 2a 2a 2a 2a 2a 2a 2a 1000 2a 2a 2a 2a 2a 2a 2a 2a-2a 2a 2a 2a 2a 2a 2a 2a dsds:1010 2a 2a 2a 2a 2a 2a 2a 2a-2a 2a 2a 2a 2a 2a 2a 2a 1010 2a 2a 2a 2a 2a 2a 2a 2a-2a 2a 2a 2a 2a 2a 2a 2a dsds:1020 2a 2a 2a 2a 2a 2a 2a 2a-2a 2a 2a 2a 2a 2a 2a 2a 1020 2a 2a 2a 2a 2a 2a 2a 2a-2a 2

17、a 2a 2a 2a 2a 2a 2a dsds:1030 2a 2a 2a 2a 2a 2a 2a 2a-2a 2a 2a 2a 2a 2a 2a 2a1030 2a 2a 2a 2a 2a 2a 2a 2a-2a 2a 2a 2a 2a 2a 2a 2adsds:1040 2a 2a 2a 2a 2a 2a 2a 2a-2a 2a 2a 2a 2a 2a 2a 2a 1040 2a 2a 2a 2a 2a 2a 2a 2a-2a 2a 2a 2a 2a 2a 2a 2a dsds:1050 2a 2a 2a 2a 2a 2a 2a 2a-2a 2a 2a 2a 2a 2a 2a 2a 10

18、50 2a 2a 2a 2a 2a 2a 2a 2a-2a 2a 2a 2a 2a 2a 2a 2a dsds:1060 2a 2a 2a 2a 00 00 00 00 00 00 00 00 00 00 00 001060 2a 2a 2a 2a 00 00 00 00 00 00 00 00 00 00 00 00偏移地址偏移地址di422. 堆栈操作指令掌握:掌握:n有关堆栈的概念有关堆栈的概念 栈顶、栈首、栈底栈顶、栈首、栈底n堆栈指令的操作原理堆栈指令的操作原理 执行过程,执行结果执行过程,执行结果43堆栈操作的原则n先进后出先进后出n以字为单位以字为单位44堆栈操作指令n压栈指令压

19、栈指令 push 格式格式: push oprdn出栈指令出栈指令 pop 格式格式: pop oprd45压栈指令 pushn指令执行过程:指令执行过程: (sp(sp)(spsp)-2-2 (spsp)-1-1操作数高字节操作数高字节 (spsp)-2-2操作数低字节操作数低字节 sp堆堆栈栈段段sp高高8位位低低8位位46压栈指令的操作设设ax=1234h,sp=1200h执行执行 push ax 指令后堆栈区的状态:指令后堆栈区的状态: 1200h 堆堆栈栈段段 sp-2=11feh12h34h1200h 堆堆栈栈段段12h 34hax入栈后入栈后入栈前入栈前47出栈指令popn指令执

20、行过程:指令执行过程: spsp sp+1 sp+1 sp sp+2 sp sp+2操作数低字节操作数低字节操作数高字节操作数高字节 sp堆堆栈栈段段sp高高8位位低低8位位48出栈指令的操作执行执行 pop ax 12h34h11feh 堆堆栈栈段段代代码码段段push 12 34 ax sp+21200h 出栈后出栈后出栈前出栈前49堆栈操作指令说明n指令的操作数必须是指令的操作数必须是1616位的;位的;n操作数可以是寄存器或存储器两单元,但不能操作数可以是寄存器或存储器两单元,但不能是立即数;是立即数;n不能从栈顶弹出一个字给不能从栈顶弹出一个字给cscs;npushpush和和pop

21、pop指令在程序中一般成对出现;指令在程序中一般成对出现;npushpush指令的操作方向是从高地址向低地址,而指令的操作方向是从高地址向低地址,而poppop指令的操作正好相反。指令的操作正好相反。50堆栈操作指令例npush axnpush bxnpush word ptrbxnpop word ptrbxnpop axnpop bx 如此,会使如此,会使ax和和bx的内容互换的内容互换513. 交换指令n格式:格式: xchg regxchg reg,mem/regmem/regn注:注:n两操作数必须有一个是寄存器操作数两操作数必须有一个是寄存器操作数n不允许使用段寄存器不允许使用段寄

22、存器。n例:例: nxchgxchgaxax,bxbxnxchgxchg20002000,clcl524. 查表指令n格式:格式: xlatn说明:说明:n用用bx的内容代表表格首地址,的内容代表表格首地址,al内容为表内位移量,内容为表内位移量,bx+al得到要查找元素的偏移地址得到要查找元素的偏移地址n操作:操作:n将将bx+al所指单元的内容送所指单元的内容送al53查表指令例数据段中存放有一数据段中存放有一张张asciiascii码转换表,码转换表,设首地址为设首地址为2000h2000h,现欲查出表中第现欲查出表中第1111个代码的个代码的asciiascii码码303132.394

23、142.45462000h+02000h+110129abef54查表指令例555. 字位扩展指令 n将符号数的符号位扩展到高位;将符号数的符号位扩展到高位;n指令为零操作数指令,采用隐含寻址,隐含指令为零操作数指令,采用隐含寻址,隐含的操作数为的操作数为ax及及ax,dxn无符号数的扩展规则为在高位补无符号数的扩展规则为在高位补056字节到字的扩展指令n格式:格式: cbwn操作:将操作:将al内容扩展到内容扩展到axn规则:规则:n若最高位若最高位=1,则执行后,则执行后ah=ffhn若最高位若最高位=0,则执行后,则执行后ah=00h57字到双字的扩展指令n格式:格式: cwdn操作:将

24、操作:将ax内容扩展到内容扩展到dx axn规则:规则:n若最高位若最高位=1,则执行后,则执行后dx=ffffhn若最高位若最高位=0,则执行后,则执行后dx=0000h58字位扩展指令例判断以下指令执行结果:判断以下指令执行结果: mov al,44h cbw mov ax,0afdeh cwd mov al,86h cbw59二、输入输出指令掌握:掌握:n指令的格式及操作指令的格式及操作n指令的两种寻址方式指令的两种寻址方式n指令对操作数的要求指令对操作数的要求60输入输出指令n专门面向专门面向i/o端口操作的指令端口操作的指令n指令格式:指令格式:输入指令:输入指令: in acc,p

25、ort输出指令输出指令 :out port,acc端口地址端口地址61指令寻址方式n直接寻址直接寻址 直接给出直接给出8位端口地址,可寻址位端口地址,可寻址256个端口个端口n间接寻址间接寻址 16位端口地址由位端口地址由dx指定,可寻址指定,可寻址64k个端口个端口62i/o指令例nin ax,80hnmov dx,2400hnin al,dxnout dx,axnout 35h , alnout al,35h63三、三、地址传送指令取偏移地址指令取偏移地址指令lea*lds指令指令*les指令指令64取偏移地址指令lean操作:操作:n将变量的将变量的1616位偏移地址取出送目标寄存器位偏

26、移地址取出送目标寄存器n格式:格式: lea reglea reg,memmem n指令要求:指令要求:n源操作数源操作数必须是一个必须是一个存储器操作数存储器操作数,目标操作,目标操作数通常是间址寄存器。数通常是间址寄存器。65lea指令n比较下列指令:比较下列指令: mov si,data1 lea si,data1 mov bx,bx lea bx,bx data1符号符号地址地址12h34h1100h88h77hbx=1100h66lea指令在程序中的应用n将数据段中首地址为将数据段中首地址为mem1 的的50个字节的数个字节的数据传送到同一逻辑段首地址为据传送到同一逻辑段首地址为me

27、m2的区域的区域存放。编写相应的程序段存放。编写相应的程序段 。 67lea指令在程序中的应用 开开 始始取源地址取源地址取目标地址取目标地址送数据块长度到送数据块长度到cl传送一个字节传送一个字节修改地址指针修改地址指针修改计数值修改计数值计数值计数值=0? 结结 束束ny68lea指令在程序中的应用 lea si,mem1 lea di,mem2 mov cl,50next: mov al,si mov di,al inc si inc di dec cl jnz next hlt 69四、标志位操作指令 lahfsahfpushfpopf隐含操作数隐含操作数ah隐含操作数隐含操作数fla

28、gs701. lahf,sahfn指令格式:指令格式:lahf n操作:将操作:将flags的低的低8位装入位装入ahcfpfafzfcf.ahflagsd15d0d7d0n sahf执行与执行与lahf相反的操作相反的操作712. pushf,popfn针对针对flags的堆栈操作指令的堆栈操作指令 将标志寄存器压栈或从堆栈弹出将标志寄存器压栈或从堆栈弹出72算术运算类指令73算术运算类指令n加法运算指令加法运算指令n减法运算指令减法运算指令n乘法指令乘法指令n除法指令除法指令算术运算指令的执行大多对状态标志位会产生影响算术运算指令的执行大多对状态标志位会产生影响74一、加法指令 普通加法指

29、令普通加法指令add 带进位位的加法指令带进位位的加法指令adc 加加1指令指令inc加法指令对操作数的要求与加法指令对操作数的要求与mov指令相同指令相同751. add指令n格式:格式: add oprd1,oprd2n操作:操作: oprd1+oprd2add指令的执行对全部指令的执行对全部6个状态标志位都产生影响个状态标志位都产生影响oprd176add指令例 mov al,78h add al,99h指令执行后指令执行后6个状态标志位的状态个状态标志位的状态77add指令例 01111000 + 10011001 000100011标志位状态:标志位状态: cf= sf= af= z

30、f= pf= of=101010782. adc指令n指令格式、对操作数的要求、对标志位的影响指令格式、对操作数的要求、对标志位的影响与与add指令完全一样指令完全一样n指令的操作:指令的操作: oprd1+oprd2+cf oprd1nadc指令多用于多字节数相加,使用前要先将指令多用于多字节数相加,使用前要先将cf清零。清零。793. inc指令n格式:格式: inc oprdn操作:操作: oprd+1 oprd常用于在程序中修改地址指针常用于在程序中修改地址指针不能是段寄存器不能是段寄存器或立即数或立即数80二、减法指令普通减法指令普通减法指令sub考虑借位的减法指令考虑借位的减法指令

31、sbb减减1指令指令dec比较指令比较指令cmp求补指令求补指令neg减法指令对操作数的要求与对应的加法指令相同减法指令对操作数的要求与对应的加法指令相同811. sub指令n格式:格式: sub oprd1,oprd2n操作:操作: oprd1- oprd2 oprd1n对标志位的影响与对标志位的影响与add指令同指令同822. sbb指令n指令格式、对操作数的要求、对标志位的影响指令格式、对操作数的要求、对标志位的影响与与sub指令完全一样指令完全一样n指令的操作:指令的操作: oprd1- oprd2- cf oprd1833. dec指令n格式:格式: dec oprdn操作:操作:

32、oprd - 1 oprd指令对操作数的要求与指令对操作数的要求与inc相同相同指令常用于在程序中修改计数值指令常用于在程序中修改计数值84应用程序例 mov bl,2next1 :mov cx,0ffffhnext2: dec cx jnz next2 ; zf=0转转next2 dec bl jnz next1 ; zf=0转转next1 hlt ; 暂停执行暂停执行854. neg指令n格式:格式: neg oprdn操作:操作: 0 - oprd oprd8/16位寄存器或位寄存器或存储器操作数存储器操作数用用0减去操作数,相当于对该操作数求补码减去操作数,相当于对该操作数求补码两点注

33、意请两点注意请见教材见教材p117865. cmp指令n格式:格式: cmp oprd1,oprd2n操作:操作: oprd1- oprd2 指令执行的结果不影响目标操作数,仅影响标志位!指令执行的结果不影响目标操作数,仅影响标志位!87cmp指令n用途:用途: 用于比较两个数的大小,可作为条件转移指令用于比较两个数的大小,可作为条件转移指令转移的条件转移的条件n指令对操作数的要求及对标志位的影响与指令对操作数的要求及对标志位的影响与sub指令相同指令相同88cmp指令n两个无符号数的比较:两个无符号数的比较: cmp ax,bx 若若 ax bx 若若 ax bx of和和sf状态不同状态不同 ax bx90cmp指令例 lea bx,max lea si,buf mov cl,20 mov al,sinext:inc si cmp al,si jnc goon ;cf=0转移 xchg si,algoon:dec

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论