微型计算机指令 包含,微型计算机指令系统-第2章(1)

《微型计算机指令系统-第2章(1)》由会员分享,可在线阅读,更多相关《微型计算机指令系统-第2章(1)(41页珍藏版)》请在人人文库网上搜索。

1、第2章微型计算机指令系统,2.1 指令的基本格式 2.2 8086的寻址方式 2.3 指令执行时间 2.4 8086指令系统 2.5 中断类指令及IBM PC DOS系统功能调用,2.1 8086的指令格式: 计算机是通过执行指令来管理计算机并完成一系列给定功能的。因而,每种计算机都有一组指令集提供给用户使用,这组指令集叫做计算机的指令系统。不同的计算机指令不同,指令集中指令的数量也不同,大体上在几十种到百余种。 指令的一般格式为: 操作码 操作数 操作数 操作码 告诉计算机要执行的操作是什么,如:加、减、 逻辑与等。 操作数 执行操作过程所要操作的数,如加运算的两个加 数。,80868 CP。

2、U采用了一种较为灵活的指令格式,它由 1至6个字节组成,每个字节都有特定的功能,指令字 节长度随指令而异。通用格式如下:,操作码 字节,寻址方式 字节,操作数的 低位地址 或 低位数据 字节,字节1 字节2 字节3 字节4 字节5 字节6,如: 43 INC BX 89 08 MOV AX, BX B8 00 10 MOV AX, 1000H C6 06 00 30 12 MOV BYTE PTR3000H, 12H C7 06 00 30 34 12 MOV WORD PTR3000H, 1234H 汇编语言是一种符号语言,它用: 助记符表示操作码;符号或符号地址表示操作数或操作数地址.,操。

3、作数的 高位地址 或 位数据 字节,操作数的 低位数据 字节,操作数的 高位数据 字节,操作码场,操作数场,汇编语言指令 与 机器指令 一 一对应,操作码场,操作数场,操作数存在方式 在微型计算机中,操作数可能以以下三种方式存在: 操作数包含在指令中即指令的操作数场就包含着操作数本身。 MOV AX, 1234H ; ADD AL, 2 操作数包含在CPU的某一个内部寄存器中 这时指令中的操作数场是CPU内部 寄存器的一个编码。 MOV DS, AX 操作数在内存的数据区中 这时指令中的操作数场包含着此操作数的地址。 MOV AX,2000H ; MOV bufferSI,AX,8088的内存。

4、地址 : 段地址 + 段内偏移量 存放在 CS 存放 在 BX、BP、SI、DI 中 , DS 或 直接地址 如 3000H中, ES 或 上述形式的组合中。 SS 中,指令的操作数场中规定的地址就是段内偏移量。 这个偏移量可以由几部分组成,组成后的地址称为 有效地址 EA。,有效地址EA可以由以下各种情况构成: 直接地址 包含在指令中的16位地址偏移量。 间接地址 由CPU内部某个16位寄存器的内容决定,如 BX、 BP、SI、DI。 基址 基址寄存器BX或BP加上指令中包含的8位或16位位移 量。 变址 变址寄存器SI或DI加上指令中包含的8位或16位位移量。 基址加变址 由一个基址寄存器。

5、BX或BP加上一个变址寄存器SI或DI,再加上指令中包含的8位或16位位移量。,EA的组成不同,寻找其中的操作数的方式也随之 不同。如何寻找操作数的有效地址,进而找到所需操 作数的方式就是寻址方式 因为EA的组成方式都体现在指令中,故寻址方 式也可以说是在指令中获得操作数所在地址的方法。,2.2 8086寻址方式 一.固定寻址(无需启动总线周期) 例如: DAA, PUSH AX 二.立即寻址方式(无需启动总线周期) 例如: MOV AX, 1234H 三.寄存器寻址(无需启动总线周期) 例如:MOV AX, BX 四.存储器寻址(启动总线周期) 1.直接寻址方式 2.寄存器间接寻址 3.寄存。

6、器相对寻址 4.基址加变址寻址 5.相对基址加变址寻址 五.I/O端口寻址(启动总线周期) 例如:IN AX, 60H,一、固定寻址,这种寻址方式 的指令大多为单字节指令, 其操作是规定在CPU的某个固定的寄存器中进 行,这个寄存器又被隐含在操作码中。 在固定寻址指令中,固定操作数是被隐含了的。 例:DAA ;十进制加法调整指令,调整 操作固定在AL中进行,二.立即寻址方式 这种寻址方式所提供的操作数直接放在指令中,紧跟在操作码的后面,与操作码一起放在代码段区域中。立即数可以是8位的,也可以是16位. 立即寻址主要是用来给寄存器赋初值.,MOV AL, 0C3H,AL,C3H,MOV AX, 。

7、2050H,20H 50H,AX,AH AL,三.寄存器寻址 操作数包含在CPU的内部寄存器中,例如寄存器AX、 BX、SI、DI等, 虽然操作数可在CPU的内部通用寄存 器的任一个中,且它们都能参与算术运算和逻辑运算并 存放运算结果。但是,AX是累加器,若结果是存放在 AX中,则通常指令要更短些,更紧凑些。,DS,2000H,AX,3000H,则执行指令后,3000H,3000H,DS,AX,例:MOV DS,AX; 假设执行指令前,操作数包含在指令规定的8位、16位寄存器中 对16位操作数,寄存器可以是AX,BX,CX,DX,SI,DI,SP,BP 对8位操作数,寄存器可以是AL,BL,C。

8、L,DL,及AH,BH,CH,DH,四.存储器寻址 1.直接寻址方式 操作数的地址的16位偏移量直接包含在指令中,它与操作码一起在码段区域中,但操作数一般在数据段区域中,它的地址为数据段寄存器DS加上它的16位地址偏移量。 指令中的16位地址偏移量是低位字节在前,高位字节在后。这种寻址方法,是以数据段寄存器的地址为基础,可在多达64K字节的范围内寻找操作数。,指令中的操作数部分直接给出操作数的有效地址EA,操作数可以是16位整数,操作数默认在DS段中,实际地址PA为:PA=16 (DS)+nn 这里 EA=nn,例:MOV AX, 3000H,低地址,高地址,CS段,操作码,00H,30H,3。

9、4H,12H,34H,12H,AX,DS段,50000,53000,DS,5000,0,3000,53000,+,如果操作数在DS以外的其他段(SS,ES)中,指令中必须指明 段寄存器(指定段超越前缀),MOV AX, ES:3000H,低地址,高地址,CS段,操作码,00H,30H,34H,12H,34H,12H,AX,ES段,20000,23000,ES,2000,0,3000,23000,+,(1)直接地址可用数值表示,包括在方括号 中;也可用符号地址表示,它由伪指令确定。 例:MOV AL,AUGEND;这里AUGEND为符号地址 (2)操作数地址也可位于数据段以外的其他段,地址前必须。

10、指出段寄存器名,即段超越前缀。 (3)直接寻址方式通常用于处理存储器中的单个变量。,注意事项:,2.寄存器间接寻址 在这种寻址方式中,操作数是在存储器中,但是,操作数的地址的16位偏移量(有效地址EA )包含在以下四个寄存器SI、DI、BP、BX之一中。 这又可分成两种情况:,1、 BX、SI、DI间址时以DS为默认段地址; 例:MOV AX,SI 实际地址为: (BX) PA=16 (DS)+ (SI) (DI) 2、BP间址时以SS为默认段地址。 例:MOV AX,BP 实际地址为: PA=16 (SS)+(BP),低地址,高地址,CS段,操作码,34H,12H,34H,12H,AX,SS。

11、段,70000,73000,SS,7000,0,3000,73000,+,MOV AX, BP,BP,例如:MOV AX, BP,若(SS)=7000H,(BP)=3000H,则PA=73000H;(AX)=1234H,如图所示:,注意事项:,(1)在指令中可用指定段超越前缀来取得其他 段中的操作数; 如:MOV AX,ES:BX (2)寄存器间接寻址方式通常用来对一维数组或表格进行处理。,3.寄存器相对寻址 寄存器相对寻址即以基准寄存器BX、BP、SI、DI加上给定的8位或16位偏移量作为操作数的有效地址。段地址规则同上。 指令中,这个8位或16位二进制数的位移量表示一个有符号数的补码,也就。

12、是说,位移量可以是正数,也可以是负数。如果位移量是8位二进制数,则位移的范围是-128+127。如果位移量是16位二进制数,则位移的范围是-32768+32767。,EA=间址寄存器+位移量(8位或16位) 寄存器为SI,DI, BX,默认操作数在DS段中 寄存器为BP,默认操作数在SS段中 例如:MOV AX, BX+1500H 若(DS)=7000H,(BX)=2000H,则PA=73500H;(AX)=1234H,如图所示:,低地址,高地址,CS段,操作码,00H,15H,34H,12H,34H,12H,AX,DS段,70000,73500,BX,1500,73500,+,MOV AX,。

13、 BX+1500H,DS,7000,0,2000,若(DS)=6000H,(SI)=2200H,指令: MOV BX,SI+0FFFEH。 指令中源操作数的物理地址为: 6000H*10H+2200-2=621FEH。 其中FFFFEH是-2的补码。,4.基址加变址寻址 基址加变址寻址即以某一基地址寄存器(通常为BX、BP)的内容,加上某 一变址寄存器(通常为SI,DI)的内容,形成操作数的有效地址。段地址规则同上。 例: MOV AX, BXSI,存储器操作数的有效地址EA是指令指定的一个基址寄存器和一个变址寄存器的内容之和;其组合方式共有四种情况。 EA=基址寄存器+变址寄存器 即EA= 。

14、(BX) + (SI) (BP) (DI) 则实际地址为,PA=10H (DS)+(BX)+ (SI) (DI) PA=10H (SS)+(BP)+ (SI) (DI),例如: MOV AX, BX+SI 或写为 MOV AX, BXSI 若(DS)=2000H,(BX)=0158H,(SI) =10A4H; 则 EA=0158H+10A4H=11FCH PA=10H (DS)+EA =20000H+11FCH=211FCH。 如图所示: 基址加变址寻址主要用于二维数组操作和二重循环,低地址,高地址,CS段,操作码,00H,20H,34H,12H,34H,12H,AX,DS段,20000,21。

15、1FC,BX,211FC,+,MOV AX, BX+SI,DS,2000,0,0158,10A4,SI,5.相对基址加变址寻址 相对基址加变址寻址即以某一基地址寄存器(通常为BX、BP)的内容,加上某 一变址寄存器(通常为SI,DI)的内容,再加上给定的8位或16位偏移量,形成了操作数的有效地址。 段地址规则同上。,操作数的有效地址EA等于由指令指定的一个基址寄存器和一个变址寄存器的内容加上8位或16位位移量之和。即: PA=16 (DS)+(BX)+ + PA=16 (SS)+(BP)+ + 例如: MOV AX,MASKBXSI 或 MOV AX,MASK+BX+SI,若(DS)=3000。

16、H,(BX)=2000H,(SI)=1000H,MASK=1230H,则PA=34230H。如图所示:,(SI),(DI),(DISP8),(DISP16),(SI),(DI),(DISP8),(DISP16),低地址,高地址,CS段,操作码,30H,12H,34H,12H,34H,12H,AX,DS段,30000,34230,BX,34230,+,MOV AX, MASK+BX+SI,DS,3000,0,2000,1000,SI,1230,6.串寻址,只用于数据串操作指令。其变址寄存器隐含,8086 规定,用源变址寄存器SI指向源串的第一个字(节), 用目的变址寄存器DI指向目的串的第一个字。

17、(节)。 CPU自动地调整SI和DI。如: MOVSB ;隐含使用SI和DI,分别指向源串和目的 串,实现字节的传送。 MOVSW ;隐含使用SI和DI,分别指向源串和目的串,实现字串的传送。,五、I/O端口寻址,当8086采用独立编址的I/O端口时,有专门的输入指令IN和输出指令OUT访问。其寻址方式有两种: 1.直接端口寻址 用直接端口寻址的IN和OUT指令均为双字节指令;又称长格式的I/O指令。直接端口寻址的端口数为0255个。例如: IN AL,50H ;将50H端口的字节输入到AL OUT PORT,AX ;字输出 注意:字(节)的选用取决于端口的宽度,直接端口 地址可用两位16进制。

18、数或符号表示,2.寄存器间接端口寻址,当端口地址数256时,长格式的I/O指令不能满足端口的寻址。必须把端口的地址放在寄存器DX中,其寻址为0000HFFFFH;寄存器间接寻址端口的IN和OUT指令均为单字节,称短格式的I/O指令。例如: (1) MOV DX,383H;将端口地址383H放入DX OUT DX,AL;将(AL)输出到(DX)指的端口中 (2) MOV DX,380H;将端口地址380H放入DX IN AX,DX;从(DX)和(DX)+1所指的两个端 口输入一个字,低地址端口输入到AL,高地址端口输入 到AH,2.3 指令执行时间 总时间=基本执行时间+计算EA的时间+执行总线。

19、读/写 周期的时间,若存取的字操作数是从偶地址开始存放的规则字,其 存取可在一个总线周期完成,若存取的字操作数是从奇 地址开始存放的非规则字,其存取需在两个总线周期完 成。,例:设8086的时钟频率为5MHZ(即时钟周期=0.2us),试求ADD指令在各种寻址方式下,指令的执行时间t。,根据表3-4 1.两操作数为:寄存器,寄存器,结果也存放在寄存器。 T=3 0.2=0.6us 2.两操作数为:寄存器,存储器(用相对基址加变址寻址),结果存放在寄存器。 对于字节或规则字,为:t=9+EA=9+12=21(T) 则 t=21 0.2=4.2us 对于非规则字,则应在上面的时间上加上一个总线周期。

20、(4T) 则 t=(21+4)T=5.0us 其他寻址方式下,ADD的执行时间略。,例:执行5X6,试比较用不同的指令/方式下,实现程序的指令的执行时间。 方法1: 用MUL指令 MOV AL, 05H 4T 执行时间=78T MOV BL, 06H 4T MUL BL =70T,方法2: 用ADD指令 MOV AL, 05H 4T ADD AL, AL 3T MOV BL, AL 2T ADD AL, AL 3T ADD AL, BL 3T 执行时间=15T,方法3: 用SAL移位指令 MOV AL, 05H 4T SAL AL, 1 2T MOV BL, AL 2T SAL AL, 1 2T ADD AL, BL 3T 执行时间=13T。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值