微机原理指令系统的学习
发布时间:2024-08-28
发布时间:2024-08-28
微型计算机原理及应用
第二章 8086/8088指令系统
2.12.2
寻址方式8086/8088指令系统
2.2.12.2.2
数据传送指令算术运算指令
2.2.32.2.4 2.2.5
逻辑运算和移位指令程序控制指令 串操作指令
2.2.6
标志处理与CPU控制指令
2.1 8086/8088寻址方式指令格式:
操作码
操作数…
操作码:计算机所要执行的操作,或指出操 作类型,是一种助记符。 操作数:操作的对象,可以是操作数本身或 存放操作数的内存(I/O端口)地址或其它有关 操作数的信息 。 4
汇编语言是一种符号语言,它用助记符 来表示操作码,用符号或符号地址来表 示操作数或操作数地址,它与机器指令 是一一对应的。
寻址方式:是指令中用于说明如何寻找 操作数的方法。计算机中操作数常存放在以下几个地方:
指令代码中,存放常量;MOV AX, 2070H寄存器中:MOV AX, BX 内存中: MOV AX, [2000H] I/O端口中(仅对IN/OUT指令): IN AL, 40H6
8086/8088的基本寻址方式有六种:寄存器寻址 ;操作数存放在寄存器中 立即寻址 ;操作数存放在内存代码段 直接寻址 ;操作数存放在内存 寄存器间接寻址;操作数存放在内存
变址寻址 ;操作数存放在内存基址加变址寻址 ;操作数存放在内存7
一、 寄存器寻址 操作数放在CPU内部的寄存器中,可以是8位 或16位寄存器,注意源操作数和目的操作数的 位数应一致。 MOV AX, BX ;将 BX中的内容传送到AX中去 MOV AL, BH ;将 BH中的内容传送到AL中去
MOV CL, AX
错误! 不匹配8
二、 立即寻址 操作数直接放在指令中,紧跟在操作码的后面, 与操作码一起放在存储器的代码段中(8/16位)。
MOV AX, 2030H 对应机器码: B8H 2030H4000H ……
注意 4001H B8H 4001H B8H 别错!4002H 4003H 30H 20H 4002H 4003H 30H 20H
4000H ……
高字节 高地址
低字节 低地址
4004H ……
4004H ……
内存偏移 地址
单元内容
AX 20H AH
30H AL
三、 直接寻址 操作数存放在内存中,在指令中给出存放单元的 偏移地址,如果不加说明,操作数默认在数据段。 物理地址: (DS)×16+指令中给的16位偏移地址
MOV AX,
[0020H]
;将 数据段偏移地址为0020H的地址中的内容传 送到AX中去,相当于: MOV AX, DS:[0020H] 注意:书写时加方括号。10
……
……
MOV AX, AX: 3412H
[0020H]码段
堆栈段DS:0000H…… ……
内存内容 偏移地址0000H 0001H …… 0020H 0021H 0022H……
12H
数据段
34H56H
AX
34 AH
12 AL
……
……
……
也可以指向内存中其他段的数据,这时要在相 应的偏移地址前加段超越符和“ :”。
MOV AL,
ES:[0020H]
;将 扩展段中偏移地址为0020H单元中的内容传 送到AL中去
MOV SS:[0100H],
BX
;将 BX中的内容传送到堆栈段中偏移地址为 01
00H、0101H的单元中去12
四、 寄存器间接寻址 操作数存放在内存中,但其偏移地址存放在指令 中给出的寄存器中。
MOV AX, [BX]
BX中存放操作数 的偏移地址
其中,作为间接寻址的寄存器只能有4个:BX, SI, DI, BP,其他寄存器无此功能。
注意:用BP间接寻址,操作数默认在堆栈段, 用其余3个寄存器时,操作数默认在数据段。 1、对DI、SI、BX间接寻址物理地址:
(DS)×16+DI/SI/BX中给的16位偏移地址2、对BP间接寻址 物理地址: (SS)×16+BP中给的16位偏移地址14
……
……
MOV BX, 1100H MOV AX, [BX]
码段
AX: 0078H堆栈段DS:0000H……
内存内容 偏移地址……
78H 00H
56H
0000H 0001H …… 1100H 1101H 1102H……
数据段
AX
00 AH
78 AL
…… ……
……
例1:MOV AX, ES:[BX] ;传送的操作数在附加段中,偏移地址存放在BX 中。 例2:MOV [BP], BX
;将BX中的内容传送到堆栈段中,其目的地的偏 移地址存放在BP中。例3: MOV [CX], 2000H ;错,不能对CX间接寻址16