指令系统及汇编语言程序设计

上传人:206****923 文档编号:50940189 上传时间:2018-08-11 格式:PPT 页数:214 大小:1.57MB
返回 下载 相关 举报
指令系统及汇编语言程序设计_第1页
第1页 / 共214页
指令系统及汇编语言程序设计_第2页
第2页 / 共214页
指令系统及汇编语言程序设计_第3页
第3页 / 共214页
指令系统及汇编语言程序设计_第4页
第4页 / 共214页
指令系统及汇编语言程序设计_第5页
第5页 / 共214页
点击查看更多>>
资源描述

《指令系统及汇编语言程序设计》由会员分享,可在线阅读,更多相关《指令系统及汇编语言程序设计(214页珍藏版)》请在金锄头文库上搜索。

1、第3章 8086指令系统及汇编语言程序设计第3章8086/8088指令系统及汇编语言程序设计第3章 8086指令系统及汇编语言程序设计3.1 指令格式与寻址方式3.1.1 项目1:认识8086寻址方式3.1.2 知识讲解 3.2 数据传送指令与串操作指令3.2.1 项目2:内存数据的移动3.2.2 知识讲解 3.3算术运算指令与位操作指令3.3.1 项目3:多字节的乘法3.3.2 知识讲解 3.4 控制转移指令与处理器控制指令3.4.1 项目4:计算|X-Y|3.4.2 知识讲解 3.5汇编语言程序格式3.5.1 项目5:把字符串显示到屏幕上3.5.2 知识讲解 3.6 程序的基本结构3.6.

2、1 项目6:折半查找3.6.2 知识讲解 3.7 BIOS和DOS中断3.7.1 项目7:从键盘中接收字符3.7.2 知识讲解 3.8 子程序结构3.8.1 项目8:排序3.8.2 知识讲解第3章 8086指令系统及汇编语言程序设计3.1 指令格式与寻址方式 3.1.1项目1:认识8086寻址方式 1项目要求与目的 (1)项目要求:通过各种寻址方式操作,了解8086寻址方式。 (2)项目目的:通过项目了解8086汇编指令格式以及掌握8086的寻址方式。 2项目程序 各种寻址方式的 程序代码如下:第3章 8086指令系统及汇编语言程序设计3.单步调试过程目前常用的汇编程序有Microsoft公司

3、推出的宏汇编程序MASM(Microsoft Assembler)和Borland公司推出的TASM(Turbo Assembler)两种。本书采用 的是MASM6.11版本。我们不妨把MASM6.11汇编程序安装在D盘的masm611 文件夹下。这里推荐使用Masm Editor编辑器,调试过程如下所示。 第1步:用Notepad+编辑以上源程序,以addrmode.asm文件名保存在D: MASM611BIN目录下。需要注意的是汇编的源程序后缀名必须是.asm。 第2步:点击开始菜单运行输入“cmd”回车输入“D:”回车输入“cd masm611/bin”回车这时就进入了D:MASM611

4、BIN目录下。操作示意图如 图3-1所示。第3章 8086指令系统及汇编语言程序设计第3步:用masm汇编程序编译addrmode.asm源文件,用link连接程序连接 目标文件(.obj)。在图3-1中输入“masm addrmode”回车输入“link addrmode”回车如 果源程序汇编和连接没有出错,则会生成可执行文件(addrmode.exe)。 第4步:在命令行中输入“cv addrmode.exe” 回车,则出现如下界面。及进 入单步调试状态。在图3-2中按F10,执行指令MOV AX,DATA ,执行后 AX=12C3H,结果如图3-3所示。第3章 8086指令系统及汇编语言

5、程序设计继续按F10,执行指令MOV DS,AX 。执行后 。 按F10,执行指令MOV AX,1234H ,执行后。按F10,执行指令MOV BX,AX ,执行后。 按F10,执行指令MOV AX,VALUE (将DS段中VALUE单元的内容送给AX), 执行后。 按F10,执行指令MOV BX,2000H (将立即数2000H送到偏移地址以BX的存储单元) 。执行后12C3:1234单元=00H,12C3:1235单元=20H,结果如下图所示。按F10,执行指令MOV DL,80H ,执行后 ,即DL=80H。 按F10,执行指令MOV SI,0020H 执行后。 按F10,执行指令MOV

6、 BX+SI,DL (将DL的内容传送到偏移地址为BX+SI的存储单元),执 行后12C3:1254单元=80H, 结果如下图所示。按F10,执行指令MOV TABLEBX+SI,AL(将AX的内容传送到偏移地址为 BX+SI+TABLE的存储单元,TABLE的值等于VALUE的值加4),执行后12C3:1258单元 =78H, 结果如下图所示。 接下来这两条指令,返回DOS调用。本程序就调试到这里,下面介绍汇编语言指令格式与 寻址方式。第3章 8086指令系统及汇编语言程序设计3.1.2 知识讲解 1指令格式 (1)概述指令是指计算机完成特定操作的命令,指令系统是计算机能够执行全部 命令的集

7、合,它取决于计算机的硬件设计。Intel 80x86/Pentium系列CPU指 令系统是向上兼容的,所以,针对某一型号CPU编写的程序,在后续发展出 现的新型号CPU上都可以运行,本书以8086/8088典型机为代表,介绍其指令系统。计算机只能识别二进制代码,所以机器指令是由二进制代码组成的。为便于人们使用而采用汇编语言来编写程序。汇编语言是一种符号语言,它用 助记符来表示操作码,用符号或符号地址来表示操作数或操作数地址,它与 机器指令是一一对应。第3章 8086指令系统及汇编语言程序设计(2)汇编指令格式计算机中的指令由操作码字段和操作数字段两部分组成,指令的一般格式如下: 操作码操作数操

8、作数操作码部分决定指令的操作类型,指令操作数部分可以是指令所需的操作数,也可以是操作数的地址或关于操作数地址的其他信息。指令 操作数根据不同的指令有所区别,通常一条指令包含一个或两个操作数 ,前者称为单操作数指令,后者称为双操作数指令。双操作数分别称为 源操作数(SRC)和目的操作数(DST)。第3章 8086指令系统及汇编语言程序设计28086/8088的寻址方式指令的寻址方式就是寻找指令操作数所在地址的方式,以确定数据的来源 和去处。8086/8088指令中的操作数有三种可能的存放位置:操作数在指令中,即指令的操作数部分就是操作数本身,这种操作数叫立 即操作数。操作数包含在CPU的某个内部

9、寄存器中,这时指令的操作数部分是CPU内 部寄存器的一个编码。操作数在内存的数据区中,这时指令的操作数部分包含此操作数所在的内 存地址。下面介绍8086/8088的几种寻址方式。 (1)立即数寻址方式定义:操作数直接存放在指令中,紧跟在操作码之后,与操作码一起存 放在代码段区域。立即数可以是8位、16位。立即数可以用二进制数、八进制 数、十进制数以及十六进制数来表示。 第3章 8086指令系统及汇编语言程序设计【例3-1】 MOV AL,10 ;(AL)立即数10(十进制数) MOV AL,00100101B ;(AL)立即数00100101B(二进制数) MOV AL,0AH ;(AL)立即

10、数0AH(十六进制数) MOV AH,58H ;(AH)立即数58H(十六进制数) MOV BX,1234H ;(BX)立即数1234H 后两条指令执行结果如图3-7 所示。图3-7 立即数寻址注意:立即数寻址方式只能用于源操作数,不能用于目的操作数 ,且原操作数长度与目的操作数长度一致。主要用于给寄存器 赋值。立即数寻址方式不执行总线周期,执行速度快。立即数为16位时,低位字节存放在存储器低地址单元,高 位字节存放在存储器高地址单元。第3章 8086指令系统及汇编语言程序设计(2)寄存器寻址方式定义:操作数放在寄存器内,由指令直接给出某个寄存器的名字,以 寄存器的内容作为操作数。寄存器可以是

11、16位的AX、BX、CX、DX、SI、DI 、SP、BP寄存器,也可以是8位的AH、AL、BH、BL、CH、CL、DH、DL 寄存器。 【例3-2】 MOV AX,CX ;(AX)(CX)INC AL ;(AL)(AL)+1指令执行结果如图3-8 所示图3-8 寄存器寻址注意: 寄存器寻址方式的指令操作在CPU内部执行,不需 要执行总线周期,执行速度快。 寄存器寻址方式既适用于指令的源操作数,也适用 于目的操作数,并且可同时用于源操作数和目的操作数 。 第3章 8086指令系统及汇编语言程序设计(3)直接寻址方式定义:操作数在存储器中,指令中直接给出操作数所在存储单元 的有效地址。有效地址(E

12、A)也称为偏移地址,它代表操作数所在存 储单元距离段首址的字节数。有效地址是一个无符号的16位二进制数。 【例3-3】 MOV AH,1234H ;将DS段中1234H单元的内容送给AH MOV AH,VALUE ;将DS段中VALUE单元的内容送给AH MOV AX, 2100H;将DS段中2100H单元的内容送给AL,2101H单元的内容送给AH MOV BX,ES:【2000H】 ;段超越,操作数在附加段。即物理地址(ES)*16+2000H注意:直接寻址方式的操作数所在存储单元的段地址一般 在数据段寄存器DS中。如果操作数在其他段,则需要在指令中用段超越前 缀指出相应的段寄存器名。VA

13、LUE是一种符号表示法,此内容将在伪指令中给 予讲解。在实地址方式下,物理地址16*段地址(DS)+偏 移地址(EA)第3章 8086指令系统及汇编语言程序设计【例3-4】 MOV AX,DS:2000H解:当(DS)=3000H时,物理地址16*3000H+2000H 32000H,指令的执行结果是: (AL)(32000H),(AH)( 32001H) 即内存32000H和32001H单元的内容已传送到寄存器AX中 。指令的执行情况如图3-9 所示。图3-9直接寻址指令执行示意图第3章 8086指令系统及汇编语言程序设计(4)寄存器间接寻址方式定义:操作数在存储器中,指令中寄存器的内容作为

14、操作数所在存储 单元的有效地址。 寄存器可以是某个基址寄存器BX、BP,或某个变址寄存器SI、DI。 操作数有效地址EA为: 可以分成两种情况:以SI、DI、BX间接寻址,则通常操作数在现行数据段DS区域中,物理 地址的计算方法为: 物理地址=16(DS)+(BX)(寄存器SI、DI类同)当使用寄存器BP时,操作数所在存储单元的段地址在堆栈段寄存器SS 中。物理地址的计算方法为: 物理地址=16(SS)+(BP)第3章 8086指令系统及汇编语言程序设计【例3-5】 已知:(DS)3000H,(SI)2000H指令:MOV AX,SI ;(AX)(SI)有效地址EA2000H物理地址16(DS

15、)+(SI)163000H+2000H=30000H+2000H32000H指令执行结果是将32000H和32001H单元的内容送入寄存器AX中。若在指令中规定 是段超越的,则BP的内容也可以与其它的段寄存器相加,形成物理地址。指令的执行情 况如图3-10 所示。图3-10 MOV AX,SI 指令的执行示意图 【例3-6】 已知:(DS)3000H,(BP)2000H指令:MOV AX,DS:BP ;(AX)(BP)有效地址EA2000H物理地址(DS)16+(BP)163000H+2000H32000H这种寻址方式通常用于表格处理,执行完一条指令后,只需修改寄存器内容就可以取 出表格的下一

16、项。 第3章 8086指令系统及汇编语言程序设计(5)寄存器相对寻址方式(或称直接变址寻址方式)定义:操作数在存储器内,指令中寄存器的内容与指令指定的位移量 (DISP)之和作为操作数所在存储单元的有效地址。寄存器可以是基址寄 存器BX、BP,也可以是变址寄存器SI、DI。位移量是一个8位(DISP8) 或16位(DISP16)的带符号二进制数。有效地址EA的计算方法为:使用寄存器BX、SI、DI时与数据段寄存器DS有关,使用寄存器BP时与 堆栈段寄存器SS有关。以寄存器SI、8位位移量为例,物理地址为:物理地址=16(DS)+(SI)+DISP8(使用寄存器BX、DI类同)以寄存器BP、16位位移量为例,物理地

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

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