文档介绍:
计算机硬件技术基础
主讲:焦明海
东北大学计算中心
第四章 8086汇编语言指令系统 和程序设计
§4.1 8086的寻址方式
§4.2 8086指令系统
§4.3 常用的系统功能调用
§4.4 汇编语言程序设计
一条指令需要指出两部分内容:
1、要进行什么操作(操作码部分);
2、指令所涉及的操作数和操作结果存放的位置(操作数部分)。
操作数寻址
指令中一般不直接给出使用的操作数本身,而是给出操作数所在的寄存器、存储器或I/O端口的地址或地址的计算方法。
指令中关于如何寻找操作数的方法称为寻址方式。
§4.1 8086的寻址方式
4.1.1 立即数寻址
4.1.2 直接寻址
4.1.3 寄存器寻址
4.1.4 寄存器间接寻址
4.1.5 寄存器变址寻址
4.1.6 基址加变址的寻址
4.1.1 立即数寻址
操作数由指令直接给出。
例如:
MOV AL,80H ;将十六进制数80H送入通用寄存器AL
MOV AX,1090H ;将1090H送入通用寄存器AX,AH中为10H
AL中为90H
说明:1.立即数可为8位,可为16位;
2.只能为整数;
3.只能做源操作数。
4.1.2 直接寻址
数据在存储器中,存储单元的有效地址由指令直接给出。
例如:
MOV AX,[1070H]
; 将DS段的1070H和1071H两单元的内容取到AX中,其中
; 1070H单元内容放在AL中, 1071H单元内容放在AH中
说明:1. 1070H表示段寄存器中有效地址(偏移量);
2. 默认的段寄存器为DS,如果不是DS,则需要用前缀指出。
例如: CS:MOV BX,[3000H]
将CS段的3000H和3001H两单元的内容取到BX中
4.1.3 寄存器寻址
操作数在CPU内部的寄存器中,指令中只需指明寄存器名。
例如:
MOV AX,BX ;将BX的内容传送到AX
INC CX ;将CX内容加1
ROL AL,1 ;将AL中的内容循环左移1位
说明:1. 16位寄存器为AX,BX,CX,DX,SI,DI,SP,BP;
2. 8位寄存器为AH,AL,BH,BL,CH,CL,DH,DL;
3. 源操作数,目的操作数都(同时)可以使用寄存器寻址
4.1.4 寄存器间接寻址
操作数在存储器中,存储单元的有效地址在寄存器中。
说明:1. 寄存器可为BX,BP,SI,DI;
2. 如果没有指明具体的段寄存器,默认的段寄存器为DS;当寄存器为BP时,段寄存器为SS;
3. 有效地址等于其中一个寄存器的值。
EA=
[BX]
[BP]
[SI]
[DI]
1.以BX为寄存器进行间接寻址—数据段基址寻址
默认段寄存器为DS
若使用其它段寄存器,需用前缀指明
例如:
MOV AX, [BX]
设DS=5000H, BX=3000H,则本指令在执行时,将53000H和53001H两个单元(物理地址单元) 的内容传送到AX中。
4.1.4 寄存器间接寻址
2.以BP为寄存器进行间接寻址—堆栈段基址寻址
默认段寄存器为SS
例如:
MOV BX, [BP]
设SS=3000H, BP=3000H,则本指令在执行时,将33000H和33001H两个单元(物理地址单元)的内容传送到BX中。
4.1.4 寄存器间接寻址
内容来自淘豆网www.taodocs.com转载请标明出处.