汇编语言程序设计.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《汇编语言程序设计.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 程序设计
- 资源描述:
-
1、汇编语言程序设计汇编语言程序设计第第1章章 概述概述第第2章章 8086CPU汇编程序设计环境汇编程序设计环境第第3章章 8086微处理器的指令系统微处理器的指令系统 第第4章章 8086汇编语言汇编语言 第第5章章 8086汇编语言基本程序设计汇编语言基本程序设计 第第6章章 输入输入/输出程序设计输出程序设计 第第7章章 32位汇编语言位汇编语言 3.1 8086CPU的寻址方式的寻址方式3.2 8086指令系统指令系统 微机中的每条指令由两部分组成:操作码字段和地址码字段微机中的每条指令由两部分组成:操作码字段和地址码字段 操作码字段:指示计算机所要执行的操作,即指令操作的性操作码字段:
2、指示计算机所要执行的操作,即指令操作的性质。比如加、减运算等。质。比如加、减运算等。操作数字段操作数字段(地址码地址码):指出在指令执行操作中所需要的操作:指出在指令执行操作中所需要的操作对象信息,它既可以是操作数本身,也可以是操作数地址或对象信息,它既可以是操作数本身,也可以是操作数地址或地址的一部分,还可以是指向操作数地址的指针或其他有关地址的一部分,还可以是指向操作数地址的指针或其他有关操作数的信息。操作数的信息。指令中操作数的种类有:指令中操作数的种类有:(1)立即操作数:指令要操作的数据在指令代码中,称)立即操作数:指令要操作的数据在指令代码中,称此数据为立即数。此数据为立即数。(2
3、)存储器操作数:指令要操作的数据在存储器)存储器操作数:指令要操作的数据在存储器(内存内存)中,称此数据为存储器操作数。中,称此数据为存储器操作数。(3)寄存器操作数:指令要操作的数据在)寄存器操作数:指令要操作的数据在CPU的寄存器的寄存器中,称此数据为寄存器操作数。中,称此数据为寄存器操作数。(4)I/O端口操作数:操作的数据在端口操作数:操作的数据在I/O端口中,称此数端口中,称此数据为据为I/O端口操作数端口操作数。在在8086/8088微机汇编指令中,操作数有零个、一个和两个三种形式。微机汇编指令中,操作数有零个、一个和两个三种形式。对于有两个操作码的指令,一个称为源操作数,该操作数
4、在指令执行对于有两个操作码的指令,一个称为源操作数,该操作数在指令执行过程中不改变原值。另一个称为目标过程中不改变原值。另一个称为目标(目的目的)操作数,该操作数指令执操作数,该操作数指令执行后一般被其结果替代。对应只有一个操作数的指令,该操作数为源行后一般被其结果替代。对应只有一个操作数的指令,该操作数为源操作数或为目标操作数。操作数或为目标操作数。1立即寻址方式立即寻址方式 操作数就包含在指令中,它作为指令的一部分,跟在操作操作数就包含在指令中,它作为指令的一部分,跟在操作码后存放在代码前。这种操作数称为立即数。码后存放在代码前。这种操作数称为立即数。立即数可以是立即数可以是8位,也可以是
5、位,也可以是16位,如果操作数位位,如果操作数位16位,位,操作数代码在存储器单元中存放时按照低地址存放低字节,操作数代码在存储器单元中存放时按照低地址存放低字节,高地址存放高字节的原则。高地址存放高字节的原则。操作数操作数(为一常数为一常数)直接直接由指令给出由指令给出 (此操作数称为立即数此操作数称为立即数)立即寻址只能用于源操作数立即寻址只能用于源操作数 操作数在操作数在CPU内部的寄存器中,指令中指定寄存器号。对内部的寄存器中,指令中指定寄存器号。对于于16位操作数,寄存器可以是位操作数,寄存器可以是AX、BX、CX、DX,SI、DI、SP和和 BP等;对于等;对于8位操作数,寄存器可
6、以是位操作数,寄存器可以是AL、AH、BL、BH、CL、CH、DL和和DH。操作数在存储器中,指令直接包含有操作数的有效地址操作数在存储器中,指令直接包含有操作数的有效地址(EA)。EA=偏移量偏移量操作数一般存放在数据段,所以操作数的地址由操作数一般存放在数据段,所以操作数的地址由DS加上指加上指令中直接给出的令中直接给出的16位偏移量得到。如果采用段超越前缀,则位偏移量得到。如果采用段超越前缀,则操作数也可含在数据段外其他段中。操作数也可含在数据段外其他段中。例:设数据段寄存器例:设数据段寄存器DS中的内容为中的内容为1000H,偏移量,偏移量1234H的字存储单元中的内容为的字存储单元中
7、的内容为5678H,那么在执行指令,那么在执行指令“MOV AX,1234H”后寄存器后寄存器AX的内容是的内容是5678H,图,图3.4是此指令是此指令的存储和执行情况。的存储和执行情况。例例3.3 TABLE是在数据段定义的一个字节数组的首地址的变是在数据段定义的一个字节数组的首地址的变量名,其偏移量为量名,其偏移量为1000H,则指令,则指令 MOV AL,TABLE 或或 MOV AL,TABLE或或 MOV AL,1000H上述三种表示方式操作结果相同,一般常用第一种方式表示。上述三种表示方式操作结果相同,一般常用第一种方式表示。4寄存器间接寻址方式寄存器间接寻址方式操作数在存储器中
8、,操作数的有效地址在操作数在存储器中,操作数的有效地址在SI、DI、BX和和BP这四个寄存器之一中,在一般情况这四个寄存器之一中,在一般情况(即不使用段跨越前缀明即不使用段跨越前缀明确指定段寄存器确指定段寄存器)下,如果有效地址在下,如果有效地址在SI、DI和和BX中,则默中,则默认以认以DS段寄存器的内容为段基址;如果有效地址在段寄存器的内容为段基址;如果有效地址在BP中,中,则默认以则默认以SS段寄存器的内容为段基址。段寄存器的内容为段基址。例例3.4 假设假设(DS)=2000H,(SI)=1234H,字存储单元,字存储单元(21234H)=5678H,则,则执行指令执行指令MOV AX
9、,SI后,后,AX的内的内容为容为5678H。下图。下图表示该指令的存储和执行情况。表示该指令的存储和执行情况。如果操作数的有效地址不是在默认的数据段中,需要用段如果操作数的有效地址不是在默认的数据段中,需要用段跨越前缀指明。例跨越前缀指明。例BX表示的是堆栈段的偏移量,为了存取表示的是堆栈段的偏移量,为了存取堆栈段中的内容,使用下面指令的寄存器间接寻址表示:堆栈段中的内容,使用下面指令的寄存器间接寻址表示:MOV DL,SS:BX ;引用的段寄存器是;引用的段寄存器是SS注意在书写表示寄存器间接寻址时,寄存器名一定要放在注意在书写表示寄存器间接寻址时,寄存器名一定要放在方括号中方括号中 操作
10、数在存储器中,操作数的有效地址是一个基址寄存器操作数在存储器中,操作数的有效地址是一个基址寄存器(BX、BP)或变址寄存器的或变址寄存器的(SI、DI)内容加上指令中给定的内容加上指令中给定的8位或位或16位位移量之和。即:位位移量之和。即:EA=基址寄存器基址寄存器(或变址寄存器或变址寄存器)的内容的内容+8位位(或或16位位)位移量位移量有效地址有效地址EA的构成有四种组合:的构成有四种组合:(BX)+8位位(或或16位位)位移量位移量(BP)+8位位(或或16位位)位移量位移量(DI)+8位位(或或16位位)位移量位移量(SI)+8位位(或或16位位)位移量位移量 在一般情况下,如果在一
11、般情况下,如果SI、DI或或 BX的内容作为有效地值的一的内容作为有效地值的一部分,那么引用的段寄存器默认是部分,那么引用的段寄存器默认是DS;如果;如果BP的内容作为的内容作为有效地值的一部分,那么引用的段寄存器默认是有效地值的一部分,那么引用的段寄存器默认是SS。在指令中给定的在指令中给定的8位或位或16位位移量采用补码形式表示。在计位位移量采用补码形式表示。在计算有效地址时,如位移量是算有效地址时,如位移量是8位,则被符号扩展成位,则被符号扩展成16位。位。例例3.5假设假设(DS)=2000H,(DI)=1234H,字存储单元字存储单元(23234H)=3456H,则执行指令,则执行指
12、令MOV AX,DI+2000H后,后,AX的内容为的内容为3456H。下图。下图表示该指令的存储和执行情况。表示该指令的存储和执行情况。注意书写时基址寄存器名或变址寄存器名一定要放在方括注意书写时基址寄存器名或变址寄存器名一定要放在方括号中,而位移量可不写在方括号中。下面两条指令源操作数号中,而位移量可不写在方括号中。下面两条指令源操作数的寻址方式是相同的,表示的形式等价。的寻址方式是相同的,表示的形式等价。MOV AX,BX+10 MOV AX,10BX 也可以用基址寄存器或变址寄存器与单元变量名的组也可以用基址寄存器或变址寄存器与单元变量名的组合来表示寄存器相对寻址,设合来表示寄存器相对
13、寻址,设VAR为单元的变量名,有如下为单元的变量名,有如下表示:表示:MOV AX,BX+VAR MOV AX,VARBX6基址变址寻址方式基址变址寻址方式操作数在存储器中,操作数的有效地址由基址寄存器的内操作数在存储器中,操作数的有效地址由基址寄存器的内容与变址寄存器的内容相加得到。即:容与变址寄存器的内容相加得到。即:EA=基址寄存器的内容基址寄存器的内容(BX、BP)+变址寄存器变址寄存器(DI、SI)的内容的内容有效地址有效地址EA的构成有四种组合:的构成有四种组合:(BX)+(DI)(BX)+(SI)(BP)+(DI)(BP)+(SI)在一般情况在一般情况(即不使用段跨越前缀明确指定
14、段寄存器即不使用段跨越前缀明确指定段寄存器)下,如下,如果果BP的内容作为有效地址的一部分,则默认的内容作为有效地址的一部分,则默认SS的内容为段的内容为段基址,否则默认基址,否则默认DS的内容为段基址。的内容为段基址。例例3.6假设假设(DS)=1000H,(BX)=1234H,(DI)=2000H,字,字存储单元存储单元(13234H)=4567H,则执行指令,则执行指令MOV AX,BX+DI后,后,(AX)=4567H。下图。下图表示该指令的执行情况。表示该指令的执行情况。下面指令中,源操作数采用基址变址寻址,通过段前缀来下面指令中,源操作数采用基址变址寻址,通过段前缀来引用段寄存器引
15、用段寄存器ES。MOV AX,ES:BX+SI这种寻址方式适用于数组或表格处理。用基址寄存器存放这种寻址方式适用于数组或表格处理。用基址寄存器存放数组首地址,而用变址寄存器来定位数组中的各元素,或反数组首地址,而用变址寄存器来定位数组中的各元素,或反之。由于两个寄存器都可以改变,所以能更加灵活的访问数之。由于两个寄存器都可以改变,所以能更加灵活的访问数组或表格中的元素。组或表格中的元素。下面的二种写法方法是等价的。下面的二种写法方法是等价的。MOV AX,BX+DI MOV AX,DIBX7相对基址变址寻址相对基址变址寻址操作数在存储器中,操作数的有效地址由基址寄存器之一的内操作数在存储器中,
16、操作数的有效地址由基址寄存器之一的内容与变址寄存器之一的内容与指令中给定的容与变址寄存器之一的内容与指令中给定的8位或位或16位位移量相位位移量相加得到。也即:加得到。也即:EA=基址寄存器的内容基址寄存器的内容+变址寄存器的内容变址寄存器的内容+8位位(或或16位位)位移位移量量有效地址有效地址EA的构成有四种组合:的构成有四种组合:(BX)+(DI)+8位位(或或16位位)位移量位移量(BX)+(SI)+8位位(或或16位位)位移量位移量(BP)+(DI)+8位位(或或16位位)位移量位移量(BP)+(SI)+8位位(或或16位位)位移量位移量在指令中给定的在指令中给定的8位或位或16位位
17、移量采用补码形式表示。在计算位位移量采用补码形式表示。在计算有效地址时,如果位移量是有效地址时,如果位移量是8位,那么被带符号扩展成位,那么被带符号扩展成16位。位。例例3.7 假设假设(DS)=1000H,(BX)=1234H,(DI)=3000H,字,字存储单元存储单元(14232H)=7890H,则执行指令,则执行指令MOV AX,BX+DI-2后,后,(AX)=7890H。下。下图表示该指令的存储和执行图表示该指令的存储和执行情况,位移用补码表示情况,位移用补码表示 相对基址加变址寻址这种寻址方式的表示方法多种多样,相对基址加变址寻址这种寻址方式的表示方法多种多样,下面四种表示方法是等
18、价的。下面四种表示方法是等价的。MOV AX,BX+DI+1234H MOV AX,1234HBX+DI MOV AX,1234H,BXDI MOV AX,1234HDIBX 注意后注意后5种寻址方式都与存储器单元有关,在寻址过程中种寻址方式都与存储器单元有关,在寻址过程中都要计算存储器单元的有效地址都要计算存储器单元的有效地址EA,所以它们有时统称为,所以它们有时统称为存储器寻址,只是寻址方式不同,得到有效地址存储器寻址,只是寻址方式不同,得到有效地址EA的方法的方法不同。不同。与指令有关的寻址方式主要如何去查找下一条将要执行指与指令有关的寻址方式主要如何去查找下一条将要执行指令的地址。程序
19、正常顺序执行时,每取一条指令执行令的地址。程序正常顺序执行时,每取一条指令执行(IP)+n(IP),其中,其中n为当前正在执行指令的字节数,下一条为当前正在执行指令的字节数,下一条将要执行指令的物理地址为:将要执行指令的物理地址为:物理地址物理地址=(CS)*16+(IP)根据转移时是否重置代码段寄存器根据转移时是否重置代码段寄存器CS的内容,它们又可分的内容,它们又可分为段内转移和段间转移两大类。段内转移是指仅重新设置指为段内转移和段间转移两大类。段内转移是指仅重新设置指令指针令指针IP的转移;段间转移是指不仅重新设置的转移;段间转移是指不仅重新设置IP,而且重新,而且重新设置代码段寄存器设
20、置代码段寄存器CS的转移,由于重置的转移,由于重置CS,所以转移后继,所以转移后继续执行的指令在另一段中。续执行的指令在另一段中。无论是段内转移还是段间转移都有直接和间接两种方式,无论是段内转移还是段间转移都有直接和间接两种方式,因此有四种转移的寻址方式。因此有四种转移的寻址方式。转移的有效地址转移的有效地址EA是指令中的是指令中的8位或位或16为位移量与当前指为位移量与当前指令指针寄存器令指针寄存器IP内容之和,取代当前的内容之和,取代当前的IP中的内容。转移的中的内容。转移的有效地址为:有效地址为:EA=(IP)+8位或位或16为位移量为位移量IP当转移的位移量为当转移的位移量为8位时,位
21、时,EA的转移范围在的转移范围在-128至至+127,地址差值只要用一个字节表示,就称为短转移;当转移的位地址差值只要用一个字节表示,就称为短转移;当转移的位移量为移量为16位时,位时,EA的转移范围在的转移范围在-3276832767,地址差要,地址差要用一个字表示,就称为近转移。用一个字表示,就称为近转移。注意如果短转移以当前执行的转移指令本身的注意如果短转移以当前执行的转移指令本身的IP为基准,那为基准,那么短转移的范围则在么短转移的范围则在-126至至+129之间;如果短转移以当前执之间;如果短转移以当前执行的转移指令执行完成后的行的转移指令执行完成后的IP为基准,那么短转移的范围则为
22、基准,那么短转移的范围则在在-128至至+127之间,近转移同样如此。短转移和近转移都是之间,近转移同样如此。短转移和近转移都是相对相对IP的内容而言,又称相对转移寻址。的内容而言,又称相对转移寻址。转移的有效地址转移的有效地址EA如果指定的是如果指定的是16位寄存器或字存储单元中位寄存器或字存储单元中的内容表示,则将寄存器或字存储单元的内容取代当前的的内容表示,则将寄存器或字存储单元的内容取代当前的IP中中的内容。转移的有效地址为:的内容。转移的有效地址为:EA=16位寄存器或字存储器单元的内容位寄存器或字存储器单元的内容IP即如果即如果EA由由16寄存器给出,则将寄存器的内容替代寄存器给出
23、,则将寄存器的内容替代IP的内容;的内容;如果是存储器寻址,将使用存储器的数据寻址方式获得的如果是存储器寻址,将使用存储器的数据寻址方式获得的EA所所指定的字存储单元的内容作为转移偏移地址替代指定的字存储单元的内容作为转移偏移地址替代IP的内容,将的内容,将CS的内容乘以的内容乘以16与与IP的内容相加得到实际的指令转移地址。的内容相加得到实际的指令转移地址。该种寻址方式不仅用指令中直接提供的转移偏移地址该种寻址方式不仅用指令中直接提供的转移偏移地址EA替替代代IP的内容,而且指令同时直接提供了指令转移目标所在的的内容,而且指令同时直接提供了指令转移目标所在的段基址替代当前段基址替代当前CS的
24、内容,实现程序从一个段到另一个段的内容,实现程序从一个段到另一个段的转移。的转移。该种寻址方式是根据存储器的数据寻址方式获得该种寻址方式是根据存储器的数据寻址方式获得EA,将,将EA所指定的双字存储单元的内容的替代当前的所指定的双字存储单元的内容的替代当前的IP和和CS值,即将第值,即将第一个存储字单元内容替代一个存储字单元内容替代IP的内容,将第二个存储字单元内容的内容,将第二个存储字单元内容替代替代CS的内容。的内容。注意段内转移的寻址方式只改变注意段内转移的寻址方式只改变IP的内容,而不改变当前的内容,而不改变当前段寄存器段寄存器CS中的内容,即实现段内的中的内容,即实现段内的64KB范
25、围内的转移;而范围内的转移;而段间转移的寻址方式不仅改变段间转移的寻址方式不仅改变IP的内容,而且改变当前段寄存的内容,而且改变当前段寄存器器CS的内容,实现段和段之间的转移,转移范围超出的内容,实现段和段之间的转移,转移范围超出64K范围范围以外,对以外,对8086微机而言,可以实现微机而言,可以实现1M范围的任意位置的转移。范围的任意位置的转移。8086/8088的指令系统可分为如下六个功能组:的指令系统可分为如下六个功能组:(1)数据传送指令;)数据传送指令;(2)算术运算指令;)算术运算指令;(3)逻辑运算指令;)逻辑运算指令;(4)串处理指令;)串处理指令;(5)程序转移指令;)程序
展开阅读全文