8086操作数的寻址方式解析
认识8086的寻址方式
![认识8086的寻址方式](https://img.taocdn.com/s3/m/4fa3212a58fb770bf78a55f9.png)
实验报告
实验题目: 认识8086的寻址方式
姓名: 朱旭锋学号: 1314660221130
班级: 13计算机教育1班指导教师: 李卫华老师
实验时间:7 周,星期一
(一)实验内容
(1)项目要去:通过各种寻址方式操作,了解8086寻址方式。
(2)项目目的:通过项目了解8086汇编指令格式,并掌握808 的寻址方式。
(3)程序代码
DATAS SEGMENT
VALUE DW 5678H,6060H
TABLE DB 33H,55H,20H ;此处输入数据段代码
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
MOV AX,1234H
MOV BX,AX
MOV AX,VALUE
MOV word ptr [BX],2000H
MOV DL,80H
MOV SI,0020H
MOV [BX+SI],DL
MOV TABLE[BX+SI],AL;此处输入代码段代码
MOV AH,4CH
INT 21H
CODES ENDS
END START
(4)单步调试过程
第一步反汇编
第二步,显示内存16进制
第三步,逐条运行程序
第四步,可运行程序
执行MOV SI,0020H
执行MOV [BX+SI],DL
第五步,结束
(5)小结
对这几个字母的作用不太了解。
程序也有一些看不懂。
第3章 8086的指令系统—3.1寻址方式
![第3章 8086的指令系统—3.1寻址方式](https://img.taocdn.com/s3/m/2793f181d4d8d15abe234e97.png)
例:(BX)=2000H,(SI)=1000H,偏移量=0250H,
则EA= 2000H+1000H+0250H=3250H
寻址目的
确定本条指令的操作数据 在指令中 PA:存储器内的绝对地址(20位) 在存储器中 EA:某个段内的相对地址(16位) 在寄存器中 确定下一条指令的地址 根据指令长度计算 根据转移指令的目标地址
寄存器名表示其内容(操作数)
MOV AX, BX
MOV AL, BH
;AX←BX
;AL←BH
演示
第3章: 3.1.3 存储器寻址方式
操作数在主存储器中,用主存地址表示 程序设计时,8088采用逻辑地址表示主存地址
段地址在默认的或用段超越前缀指定的段寄存器中 指令中只需给出操作数的偏移地址(有效地址EA)
演示
;AX←DS:[SI+06H]
第3章:4. 基址加变址寻址方式
有效地址由基址寄存器(BX或BP)的内容加上 变址寄存器(SI或DI)的内容构成: 有效地址=BX/BP+SI/DI 段地址对应BX基址寄存器默认是DS,对应BP基 址寄存器默认是SS;可用段超越前缀改变
MOV AX, [BX+SI] MOV AX, [BX][SI]
*微型计算机汇编语言特点 *微型计算机指令系统概述 *寻址方式
指令及其格式
指令及指令集 计算机能够识别和执行的基本操作命令
指令的作用
告诉CPU干什么?What? 告诉CPU从哪儿取数据?Where? 告诉CPU下一条指令在哪儿?Where? 操作码 操作数或操作数地址 指令的格式
8086中的七种寻址方式
![8086中的七种寻址方式](https://img.taocdn.com/s3/m/6bb41f62f342336c1eb91a37f111f18583d00cfc.png)
8086中的七种寻址⽅式寻址⽅式8086/8088有七种基本的寻址⽅式:⽴即寻址,寄存器寻址,直接寻址,寄存器间接寻址,寄存器相对寻址,基址变址寻址,相对基址变址寻址。
其中,后五种寻址⽅式(即直接寻址、寄存器间接寻址、寄存器相对寻址、基址变址寻址和相对基址变址寻址)属于存储器寻址,⽤于说明操作数或操作数地址所在存储单元的地址。
这五种⽅式也就是确定存放操作数的存储单元有效地址EA的⽅法,这⾥所说的有效地址就是在前⾯⼀节讲存储器分段中所说的段内偏移地址。
除了这些基本的寻址⽅式以外,还有固定寻址和I/O端⼝寻址等,但不会在本节中介绍到。
基本寻址⽅式下⾯重点说⼀下这七种基本寻址⽅式的特点:1. ⽴即寻址⽅式先解释⼀个概念,叫做⽴即数。
操作数包含在指令中,它作为指令的⼀部分,跟在操作码后存放在代码段。
这种操作数称为⽴即数。
⽴即寻址⽅式所提供的操作数紧跟在操作码后⾯,与操作码⼀起放在指令代码段中,不需要到其他地址单元中去取。
⽴即数可以是8位,也可以是16位。
这种寻址⽅式主要⽤于给寄存器或存储单元赋初值的场合。
⽴即寻址⽅式是这七种寻址⽅式中速度最快的寻址⽅式。
举例:MOV AX, 1234H ; 给AX寄存器赋值为1234H2. 寄存器寻址⽅式寄存器寻址的特点是操作数在CPU内部的寄存器中,在指令中指定寄存器号。
对于16位操作数,寄存器可以是AX、BX、CX、DX、SI、DI和SP等;对于8位操作数,寄存器可以是AL、AH、BL、BH、CL、CH、DL和DH。
例如:MOV SI, AXMOV AL, DH由于操作数在寄存器中,不需要通过访问存储器来取得操作数,所以采⽤寄存器寻址⽅式的指令执⾏速度较快。
3. 直接寻址⽅式直接寻址的操作数在存储器中,指令直接包含有操作数的有效地址。
由于操作数⼀般存放在数据段,所以操作数的地址由DS加上指令中给出的16位偏移得到。
假如DS内容是5000H,地址为51234H字存储单元中的内容时6789H,那么在执⾏“MOV AX, [1234H]”后寄存器AX的内容是6789H。
8086汇编各种寻址方式大全
![8086汇编各种寻址方式大全](https://img.taocdn.com/s3/m/63dadd0316fc700abb68fce7.png)
各种寻址方式1. 立即寻址:直接放在指令中的常数称为立即数,立即数只能是源操作数,立即数存放在指令操作码之后的存储单元中。
例:MOV AL,50HMOV DS, 1250H 错误2. 寄存器寻址:存放在寄存器中的数据为操作数,寄存器操作数可以是源操作数,也可以是目的操作数。
例:MOV AL,BLMOV CL, BX 错误以下寻址方式3~8,操作数都在存储器中。
存储器操作数具有类型属性,如字节(BYTE)、字(WORD)、双字(DWORD)等,反映了数据占用存储单元的字节数,指令书写中,约定用方括号内容表示存储器操作数的偏移地址;用类型名 PTR 偏移地址的形式说明指令中存储器操作数的类型,例:WORD PTR [1000H];用变量名DB/DW/DD数据序列的形式分别定义具有“变量名”的字节、字或双字存储器操作数,如BUF DB 10H,20H。
3. 存储器寻址(1)直接寻址:存储器操作数的16位偏移地址直接包含在指令的方括号中。
例:MOV AL,[1000H] 约定由DS提供段地址MOV AL,CS:[1000H] ;段超越,由CS提供段地址MOV AL,SS:[1000H] ;段超越,由SS提供段地址例:MOV AX, [2000H] 如果(DS)= 3000H,则AX的物理首地址为:3000*10+2000(2)寄存器间接寻址:操作数所在的存储单元的偏移地址放在指令给出的寄存器中。
可用于这种寻址方式的寄存器只能是SI、DI、BP和BX。
其中,SI、DI、BX约定的段寄存器是DS,而BP约定的段寄存器SS。
例:MOV AX,[SI] ;AX←DS:[SI]MOV [BX],AX ;DS:[BX]←AX例:MOV AX, [BX]如果(DS)= 2000H, (BX)= 1000H,则物理地址 = 20000H + 1000H = 21000H(3)寄存器相对寻址这种寻址方式通过基址寄存器BX、BP或变址寄存器SI、DI与一个位移量相加形成有效地址,计算物理地址的缺省段仍然是SI、DI和BX为DS,BP为SS。
8086 CPU的七种基本的寻址方式
![8086 CPU的七种基本的寻址方式](https://img.taocdn.com/s3/m/64ed98d649649b6648d7476b.png)
MOV [BP], CX
5. 寄存器相对寻址:操作数在存储器中,操作数的有效地址是一个基址寄存器(BX、BP)或变址寄存器(SI、DI)内容加上指令中给定的8位或16位位移量之和。即:
EA = (BX/BP/SI/DI) + (8/16位位移量)
例如:MOV AX, [DI+1223H]
MOV BX, [BP-4]
MOV ES:[BX+5], AL
注意:书写时基址或变址寄存器名一定要放在方括号中,而位移可以不写在方括号中。#43;3] 等价于 MOV AX, 3[SI]
6. 基址加变址寻址:操作数在存储器中,操作数的有效地址由基址寄存器之一的内容与变址寄存器之一的内容相加得到。
EA = (BX/BP) + (SI/DI)
在不使用换段前缀的情况下,若BP的内容作为有效地址的一部分,则以SS的值为段值;否则以DS的值为段值。有效地址超过FFFFH,则对其进行64K取模。例如:
8086 CPU的七种基本的寻址方式.txt逆风的方向,更适合飞翔。我不怕万人阻挡,只怕自己投降。你发怒一分钟,便失去60分钟的幸福。忙碌是一种幸福,让我们没时间体会痛苦;奔波是一种快乐,让我们真实地感受生活;疲惫是一种享受,让我们无暇空虚。生活就像"呼吸""呼"是为出一口气,"吸"是为争一口气。8086 CPU的七种基本的寻址方式
在不使用换段前缀的情况下,若SI/DI/BX的内容作为有效地址的一部分,则以DS的值为段值;若BP的内容作为有效地址的一部分,则以段寄存器SS的值为段值。
在指令中给定的8位或16位位移量以补码形式表示。在计算有效地址时,若位移量是8位,则将其有符号扩展为16位,当有效地址超过FFFFH,则对其进行64K取模。
微机原理与接口技术 (第三版)电子工业出版社 第03章 8086的指令系统
![微机原理与接口技术 (第三版)电子工业出版社 第03章 8086的指令系统](https://img.taocdn.com/s3/m/12a7631e5f0e7cd1842536ba.png)
4、寄存器间接寻址(Register indirect addressing) 内存单元的逻辑偏移地址通过寄存器 间接给出。 例: MOV SI , 61A8H MOV DX , [SI]
5、基址/变址寻址(Based/Indexed addressing) 位移量是一带符号的16位16进制数。当 使用BX或BP寄存器时,称基址寻址;使用SI 或DI寄存器时,称变址寻址。 例: MOV CX , 36H[BX] MOV -20[BP] , AL
2、MOV数据传送指令 其格式为: MOV 目的操作数,源操作数 • 目的操作数和源操作数均可采用不同的寻 址方式, • 两个操作数的类型必需一致。
二、寻址方式介绍பைடு நூலகம்
1.立即寻址(Immediate addressing) 操作数就在指令中,紧跟在操作码后面, 作为指令一部分存放在内存的代码段中,这 种操作数称为立即数。 例: MOV AX , 34EAH MOV BL , 20H
3)、段间直接转移 JMP far PTR 目标地址 4)、段间间接转移 JMP WORD PTR[BX][SI]
2、条件转移指令
1)、单条件转移指令 ① JC ② JNC ③ JE/JZ ④ JNE/JNZ ⑤ JS ⑥ JNS ⑦ JO ⑧ JNO ⑨ JP/JPE ⑩ JNP/JPO ;CF标志为1,则转移 ;CF标志为0,则转移 ;ZF标志为1,则转移 ;ZF标志为0,则转移 ;SF标志为1,则转移 ;SF标志为0,则转移 ;OF标志为1,则转移 ;OF标志为0,则转移 ;PF标志为1,则转移 ;PF标志为0,则转移
3、目标地址传送指令
这类指令有: 1)LEA 有效地址传送到寄存器 2)LDS 装入一个新的物理地址 3)LES 装入一个新的物理地址
汇编语言2-1寻址方式
![汇编语言2-1寻址方式](https://img.taocdn.com/s3/m/72483b4de518964bcf847caf.png)
EA =
+
பைடு நூலகம்
注意: 允许段超越。 注意:①允许段超越。 ②[BX+BP]或[SI+DI]是非法搭配 或 是非法搭配
例: MOV AX, [BX] [SI] MOV AX, [BX+SI] MOV AX, DS: [BP] [DI] 错误例: 错误例: × MOV AX, [BX] [BP] × MOV AX, [DI] [SI]
指令操作例:MOV AX,DATA[DI][BX] 指令操作例: , 操作例 若DS=8000H, BX=2000H, DI=1000H, DATA=200H 则指令执行后AH=[83201H], AL=[83200H] 则指令执行后
目的 源
指令举例:
MOV AX , BX 操作码 操作数 ADD AX,[SI+6] INC HLT [BX]
二、8086的操作数分类
立即数(常数) 1、立即数(常数)
取值范围如下表: 取值范围如下表 8位 无符号数 00H-FFH(0-255)
带符号数80H-7FH(-128~127)
16位 0000H-FFFFH(0-65535)
存储器寻址方式
1、 立即寻址 、
直接把参与操作的数据写在指令中,是指令的一部分, 直接把参与操作的数据写在指令中,是指令的一部分,该数 据称为立即数。操作数可以是各种数制下的数值(相当于8位 据称为立即数。操作数可以是各种数制下的数值(相当于 位 位二进制数),也可以是带单引号的字符。 或16位二进制数),也可以是带单引号的字符。 位二进制数),也可以是带单引号的字符 强调: 强调:立即寻址只能用于源操作数 例如: 2050H,执行后, 执行后, 例如: MOV AX,2050H ; AX , 执行后 MOV AL,05H , ;AH = 20H,AL = 50H , MOV AL,‘A’ , 观察指令: 观察指令: MOV 05H,AL MOV BL,324D , , MOV CH,2050H MOV DL,‘25’ , , 注意: 立即数永远不能作目的操作数。 注意:1. 立即数永远不能作目的操作数。 2. 源操作数和目的操作数要互相匹配。 源操作数和目的操作数要互相匹配。
第三章 8086的寻址方式和指令系统
![第三章 8086的寻址方式和指令系统](https://img.taocdn.com/s3/m/7fb948eae009581b6bd9ebfa.png)
计算机的指令通常包含 操作码 和 操作数 两部分。
设SP为0100H,SS为1000H,则执行PUSH AX 后,
00FE H,SS= 1000 H。 8086系统中,栈底在堆栈的 最高地址 (最高地址端、 最低地址端)。
如果VAL为数据段中0056H单元的符号名,其中存放
16
习题 CH3 寻址方式和指令系统
(6)MOV [SI],[BX] 源、目的操作数不能同时为存储单元 (7)MOV DS,0200H 立即数不能直接送给段寄存器 (8)IN BL,05H BL不能作为IN指令的目的操作数 (9)MOV AX,IP IP不能作为操作数 (10)MOV SI,[DX] DX不能进行寄存器间接寻址 (11)PUSH AL PUSH指令以字为操作单位
用单条指令或程序片段,实现下述功能
(1)将AX高8位取反,低四位置1,其余位不变。
XOR AX, 0FF00H
OR AX, 0FH (2)将AL的高四位与低四位互换。 MOV CL, 4 ROL AL, CL
(3)将BX、AX内容互换。
XCHG AX, BX
12
习题 CH3 寻址方式和指令系统
[BP+SI+4]源操作数的有效地址为
地址为 数的有效地址为
,物理 0214H 24514H 。指令MOV AX,[DI+100H]源操作
0306H,物理地址
为 24306H 。 设AX=2000H,BX=2002H,则在执行了指令CMP AX,
BX后,标志位CF为
1 , AX=
。 2000H
基址变址寻址
(5)MOV AX,10[BX][DI] 相对基址变址寻址
微机原理课后习题解答
![微机原理课后习题解答](https://img.taocdn.com/s3/m/c52d89654a7302768f993947.png)
微机原理习题第一章绪论习题与答案1.把下列二进制数转换成十进制数、十六进制数及BCD码形式。
(1) 10110010B =(2) 01011101.101B =解:(1) 10110010B = 178D = B2H = (0001 0111 1000)BCD(2) 01011101.101B = 93.625D = 5D.AH= (1001 0011.0110 0010 0101)BCD2.把下列十进制数转换成二进制数。
(1) 100D =(2) 1000D =(3) 67.21D =解:(1)100D = 01100100B(2)1000D = 1111101000B(3) 67.21D = 1000011.0011B3.把下列十六进制数转换成十进制数、二进制数。
(1) 2B5H =(2) 4CD.A5H =解:(1) 2B5H = 693D = 0010 1011 0101B(2) 4CD.A5H = 1229.6445D = 0100 1100 1101.1010 0101 B4.计算下列各式。
(1) A7H+B8H =(2) E4H-A6H =解:(1) A7H+B8H = 15FH(2) E4H-A6H = 3EH5.写出下列十进制数的原码、反码和补码。
(1) +89(2) -37解:(1) [+89 ] 原码、反码和补码为: 01011001B(2) [-37] 原码 = 10100101 B[-37] 反码 = 11011010 B[-37] 补码 = 11011011 B6.求下列用二进制补码表示的十进制数(1)(01001101)补 =(2)(10110101)补 =解:(1)(01001101)补 = 77D(2)(10110101)补 = -75D7.请用8位二进制数写出下列字符带奇校验的ASCII码。
(1)C: 1000011(2)O: 1001111(3)M: 1001101(4)P: 1010000解:(1)C:0 1000011(2)O: 0 1001111(3)M:1 1001101(4)P: 1 10100008.请用8位二进制数写出下列字符带偶校验的ASCII码。
8086的工作原理
![8086的工作原理](https://img.taocdn.com/s3/m/3966e7cdd1d233d4b14e852458fb770bf68a3b66.png)
8086的工作原理8086微处理器是一种基于x86指令集架构的微处理器。
它采用了复杂指令集计算机(CISC)架构,具有16位数据总线、20位地址总线和8位数据总线。
其工作原理可以概括如下:1. 取指令(Instruction Fetch):8086从内部或外部的存储器中获取指令。
首先,它将程序计数器(PC)指向下一条要执行的指令的地址。
然后,根据PC中存储的地址,将指令从存储器中读取到指令寄存器(IR)中。
2. 指令译码(Instruction Decode):8086将从指令寄存器中取得的指令进行解码,确定指令类型以及需要的操作数。
3. 操作数获取(Operand Fetch):根据指令译码的结果确定需要的操作数,并从内部或外部存储器中获取这些操作数。
8086可以以不同的寻址方式访问存储器。
4. 执行指令(Execute):根据指令的操作码和所获得的操作数,在算术逻辑单元(ALU)中执行相应的操作。
这可能包括运算、转移、逻辑操作等。
5. 存储结果(Result Storage):计算后的结果可以存储在寄存器中,也可以写入内部或外部存储器。
除了以上的基本步骤外,8086还包括一些附加的功能。
例如,它具有分段机制,可以将内存分割为多个段,并使用段寄存器和偏移量来访问内存。
它还具有中断和异常处理机制,可以响应外部设备的中断请求并进行相关的处理。
此外,8086还包括了一些特殊寄存器,如标志寄存器(FLAGS)用于存储和判断运算结果的条件。
总的来说,8086微处理器的工作原理涉及指令的获取、解码、操作数的获取、指令的执行以及结果的存储等多个步骤,通过这些步骤完成了对指令的执行和数据的处理。
8086-8088 CPU的寻址方式
![8086-8088 CPU的寻址方式](https://img.taocdn.com/s3/m/db855aebff00bed5b8f31d4a.png)
MOV AX,ES:[VALUE]
微机原理
1.3 寄存器寻址方式 寄存器寻址:操作数存放在CPU内部的寄存器中 例 :MOV AX,DX ; AX←DX 1.4 寄存器间接寻址 寄存器间接寻址:有效地址包含在基址寄存器 BX、BP或变址寄存器SI、DI中直接寻址 例 MOV AX,[BX]
MOV AX,[BP] 1.5 寄存器相对寻址 寄存器相对寻址方式:有效地址在SI、DI、BX 或BP之一,加上指令中8位或16位相对地址 例 MOV AL,ADDR[SI]
微机原理
1.6 转移类指令的寻址方式 1.段内相对转移寻址 有效地址EA为当前IP寄存器内容与指令中指定 的8位或16位有符号数之和 例:JZ DISP 其中DISP是符号地址 2.段内间接转移寻址 有效地址EA为寄存器或存储器单元的内容,这 种寻址方式不能用于条件转移指令。 例:JMP CX
微机原理
微机原理
1.6 基址变址寻址方式 操作数的有效地址等于一个基址寄存器的内容 和一个变址寄存器的内容之和 基址寄存器:BX、BP 变址寄存器:SI 、DI
MOV AX,[BX] [DI] 也可写成 MOV AX,[BX+DI] 1.7 相对基址变址寻址方式 操作数的有效地址等于一个基址寄存器的内容、 一个变址寄存器的内容和一个8位或16位的位移 量之和。 MOV AX,ADDR[BP+SI]
微机原理第02章(寻址方式和传送指令)
![微机原理第02章(寻址方式和传送指令)](https://img.taocdn.com/s3/m/e411928f02d276a200292e35.png)
有效地址由基址寄存器( BX 或 BP )的内容加上 变址寄存器(SI或DI)的内容构成: 有效地址=BX/BP+SI/DI 段地址对应 BX基址寄存器默认是 DS,对应BP基 址寄存器默认是SS;可用段超越前缀改变
MOV AX, [BX+SI] MOV AX, [BX][SI]
;AX←DS:[BX+SI]
段内偏移量为适应各种数据结构的需要,可以有几个部分组 成,所以也把它称为有效地址EA。
寻址方式不同EA的构成不同。归纳EA可有多种情况构成: 直接寻址,寄存器间接寻址,寄存器相对寻址,
基址加变址寻址,相对址加变址寻址。
寻址方式——如何寻找内存操作数。 不同寻址方式实质上是构成它段内的偏移量的方法不同。
34H 12H
堆 栈 段
...
寄存器间接寻址方式 MOV [BP], AX
3 、用 SI、DI、BX 、BP作为间接寻址允许段跨越
指令中可以指定段跨越前缀来取得其他段中的数据。
例:MOV ES:[DI], AX MOV DX, DS:[BP] 这种寻址方法可以用于表格处理。
第2章 (五)寄存器相对寻址方式(Register relative addressing)或变 址寻址 (Index Addressing)
8位位移量 PA=16d ×(SS)+ (BP) + 16位位移量
例: MOV AX, COUNT [BP] 或MOV AX, [COUNT+BP] 或MOV AX, COUNT+[BP]
AH AL 48H 存储器 OP OP 40H 20H 操 作 码 位移量 COUNT
COUNT为16位位移量。 指令执行前: (SS)=5000H, (BP)=3000H, COUNT=2040H, (AX)=1234H
8086指令系统总结
![8086指令系统总结](https://img.taocdn.com/s3/m/7c2b474069eae009581bec2a.png)
8086指令系统总结学习微处理器及其程序设计,必须掌握微处理器的指令系统。
本章以 8086 微处理器为例介绍微型计算机的指令系统,包括指令格式、寻址方式和各类指令功能。
要明确各种寻址方式的区别和特点,掌握有效地址和物理地址的计算方法,要正确使用指令,掌握各类指令的功能、对标志位的影响和使用上的一些特殊限制。
能够编写小汇编程序,初步掌握汇编程序的编写和调试方法。
本章的重点难点内容是: 8086 的指令格式及寻址方式, 8086 的常用指令和8086 指令前缀的使用。
下面我们分别进行总结:一.8086寻址方式(1)操作数是数字,指令中立即写出数字------------立即数寻址MOV AX,1234H 解释此句意义(2)操作数是寄存器内容,指令中写出寄存器的符号---------寄存器寻址MOV AX,BX(3)操作数是存储单元内容,用括号括出存储单元有效地址-----直接寻址MOV AX,[1234H]MOV AX,ES:[1234H](4)操作数是存储单元内容,用括号括出寄存器或其表达式,寄存器或其表达式的值为存储单元有效地址-------------间接寻址MOV AH,[BX]MOV AX,ES:[SI]MOV AL,[BX+SI+5]===5[BX+SI]===5[BX][SI]二.8086指令系统1.数据传送指令(一)通用传送指令(1)MOV指令指令格式:MOV 目,源功能:将源操作数传送给目标操作数。
(2)堆栈操作指令进栈指令:PUSH格式:PUSH 源功能:将源操作数压入堆栈。
例:用堆栈指令完成上例的功能。
MOV AX,3000HMOV DS,AX ;段寄存器填充MOV SI,0100H ;基本指令执MOV DI,2000H ;行前的初值MOV CX,50NT:PUSH [SI] ;程序从这POP [DI] ;开始设计INC SIINC SIINC DIINC DILOOP NTMOV AH,4CHINT 21H(3)交换指令 XCHG格式:XCHG 目,源功能:源和目标中的内容交换。
第三章 8086的寻址方式
![第三章 8086的寻址方式](https://img.taocdn.com/s3/m/26fea047c850ad02de804169.png)
8086/8088指令概述
操作数的一般形式: 3、存储器操作数:这类操作数是指定存储单元 的内容或该单元的地址.
例1:MOV DS:[1000H], AL 其意义是将AL的内容送存储器数据段中偏移地址为 1000H的单元中去。
例2: 若指令改写为MOV AL,DS: [1000H]
指令意义为将数据段中偏移地址为 1000H 单元中的 内容送AL寄存器。前者指的是存储单元的地址,后者指 的是存储单元的内容
22
3.1 寻址方式
直接寻址: 符号地址:
8086/8088指令寻址方式
例3 :AREA1 EQU 0867H ; 等值伪指令EQU给常数0867H定义 一个符号AREA1 MOV AX,AREA1 ;AX=0867H 例4:AREA1 DW 0867H ;DW伪指令用来定义变量,
变量用来表示存储器中的数据。变量名AREA1表示内存中 一个数据区的名字,也就是符号地址,该地址单元存放一个字 数据0867H。 MOV AX,AREA1 ;
4、隐含操作数:这类操作数被操作助记符隐含着。 如,对压缩BCD加法结果进行调整的DAA,其操 作数就是隐含操作数AL。
5 、I/O端口操作数:可以作源操作数或目的操作数。 (I/O端口地址,可以直接或寄存器间接给出)
如: IN AL, 44H
OUT 量和常量三个概念:
例如:MOV AX,BX
3
8086/8088指令概述
例如:MOV AX,BX
用 MOV表示进行数据传送的操作码,用 AX、 BX表示操作数, 显然这样的表示方式更清晰,更便于记忆和使用。 用符号、助记符书写的指令称为符号指令。用符号指令书写程 序的规范称为汇编语言,对应的程序称为汇编语言源程序。
8086指令操作数的寻址方式实验总结
![8086指令操作数的寻址方式实验总结](https://img.taocdn.com/s3/m/03e2dde2b1717fd5360cba1aa8114431b90d8e31.png)
8086指令操作数的寻址方式实验总结在计算机体系结构的学习中,8086指令操作数的寻址方式是一个非常重要的概念。
通过对这一概念的深入了解和实验操作,我们可以更好地理解计算机程序的执行过程,深化对计算机底层原理的理解。
在本文中,我将结合理论知识和实验结果,对8086指令操作数的寻址方式进行全面评估和总结。
1. 立即寻址立即寻址是一种直接将操作数的值嵌入指令中的寻址方式。
在8086指令集中,我们可以使用MOV指令将一个立即数传送到目的操作数中。
MOV AX, 1234h指令将立即数1234h传送到寄存器AX中。
通过实验操作,我发现立即寻址方式适用于需要直接传送常数值的情况,能够提高程序执行的效率。
2. 寄存器寻址寄存器寻址是一种通过寄存器来寻址操作数的方式。
8086微处理器具有通用寄存器AX、BX、CX、DX等,可以直接操作这些寄存器中的数据。
MOV AX, BX指令将寄存器BX中的数据传送到寄存器AX中。
在实验过程中,我发现寄存器寻址方式是一种高效的操作数寻址方式,能够提高程序的执行速度。
3. 直接寻址直接寻址是一种通过内存位置区域来寻址操作数的方式。
在8086指令集中,我们可以使用MOV指令将内存中的数据传送到寄存器中,或将寄存器中的数据传送到内存中。
MOV AX, [1234h]指令将存储在内存位置区域1234h处的数据传送到寄存器AX中。
实验结果表明,直接寻址方式可以灵活地对内存中的数据进行操作,适用于大规模数据的传送和处理。
4. 寄存器间接寻址寄存器间接寻址是一种通过寄存器中存储的位置区域来寻址操作数的方式。
在8086指令集中,我们可以使用指令将寄存器中存储的内存位置区域作为操作数进行操作。
MOV BX, [SI]指令将寄存器SI中存储的内存位置区域处的数据传送到寄存器BX中。
在实验中,我发现寄存器间接寻址方式适用于需要对内存中多个数据进行操作的情况,能够提高程序的效率和灵活性。
5. 立即偏移寻址立即偏移寻址是一种通过基址寄存器和偏移量来寻址操作数的方式。
简述8086微处理器工作过程_概述及解释说明
![简述8086微处理器工作过程_概述及解释说明](https://img.taocdn.com/s3/m/d4e3e6596d175f0e7cd184254b35eefdc8d315e7.png)
简述8086微处理器工作过程概述及解释说明1. 引言1.1 概述8086微处理器是Intel公司于1978年推出的一种16位微处理器。
它是英特尔80x86系列中的第一个成员,也是后来广泛应用的x86架构的基础。
通过对8086微处理器工作过程进行简要概述和解释说明,本文旨在帮助读者更好地理解这一经典微处理器的工作原理。
1.2 文章结构本文分为五个主要部分:引言、8086微处理器工作过程、8086微处理器的工作原理分析、8086微处理器的数据传输和操作方式以及结论。
在“引言”部分,将对文章整体进行概述,明确目标,并简要介绍该文各个部分的内容与主题重点.1.3 目的本文旨在提供有关8086微处理器工作过程的详细解释和说明,使读者了解其架构、指令执行流程、内部寄存器和指令集等关键信息。
此外,还将深入探讨8086微处理器的工作原理,包括数据总线与地址总线、控制信号和时序控制以及内部组成结构与功能模块等方面。
最后,文章还将重点介绍数据传输和操作方式,并回顾关键要点。
希望通过本文的阅读,读者能够对8086微处理器的工作过程有更全面、深入的理解,并为未来微处理器的发展做出贡献。
这是引言部分的相关内容,请按照这个框架进行详细撰写。
2. 8086微处理器工作过程:2.1 架构概述:8086微处理器是Intel公司于1978年推出的一款16位微处理器。
它采用复杂指令集计算机(CISC)架构,具有数据总线宽度为16位,地址总线宽度为20位,并拥有14个16位寄存器。
该处理器运行在最大频率为5 MHz的时钟速度下,可以执行多达290,000条指令每秒。
2.2 指令执行流程:8086微处理器的指令执行流程可以分为取指、译码、执行和写回四个阶段。
首先,从内存中读取指令并将其存储在指令寄存器中;然后,译码单元将指令解码成相应的操作,并从内存或寄存器中获取操作数;接下来,在算术逻辑单元(ALU)中进行运算或逻辑操作;最后,将结果写回到寄存器或内存中。
第3章80888086指令系统(老师用的课件哦)
![第3章80888086指令系统(老师用的课件哦)](https://img.taocdn.com/s3/m/fd0acb295ef7ba0d4b733b5a.png)
第3章 8088/8086指令系统
图3.5 变址寻址示意图
第3章 8088/8086指令系统
例:MOV AX,200AH[SI];或(AX)←
[(DS)*16+(SI)+200AH
EA=(SI)
+200AH,SI为变址寄存器,200AH为16位的位移量。
图3.6为用BP寄存器进行变址寻址时的示意图。
第3章 8088/8086指令系统
3.存储器操作数 存储器操作数是把操作数放在存储器单元中。对这 类操作数,在指令中必须给出存储器的地址。存储器 的实际地址(也称物理地址)是由指定的段基址和段内地 址偏移量(也称为有效地址EA)所决定的。由于段基址 相对很少改变,故一般预先予以指定,以后通过隐含 方法使用,即只要段基址未改变,其在汇编指令中便 不再出现。此时,只给出有效地址EA(以各种寻址方式 给出)。
第3章 8088/8086指令系统
3.2 8088/8086指令系统
3.2.1 数据传送指令 1 .数据传送指令MOV 指令格式:MOV OPRD1,OPRD2 MOV 为操作码。 OPRD1为目的操作数,可以是寄存器、存储器、
累加器。
第3章 8088/8086指令系统
OPRD2为源操作数,可以是寄存器、存储器、累 加器和立即数。
第3章 8088/8086指令系统
4.寄存器间接寻址
寄存器间接寻址的操作数类型为存储器操作数,与 直接寻址方式的区别是:该存储单元的16位段内偏移 地址,不是从指令代码中直接得到,而是从指令所指 定的寄存器中得到。能用于间接寻址的寄存器为SI、 DI、BX、BP。若以SI、DI、BX进行间接寻址,应由 数据段DS的内容作为段基址,间接寻址寄存器的内容 为段内偏移量,并指定形成操作数的物理地址。若以 寄存器BP间接寻址,则BP中的内容为段内偏移量,段寄 存器SS与之一起形成物理地址。寄存器间接寻址示意 图如图3.4所示。
8086寻址方式及举例
![8086寻址方式及举例](https://img.taocdn.com/s3/m/19b4d5c3e43a580216fc700abb68a98271feacbd.png)
8086寻址方式及举例8086寻址方式指的是在Intel 8086处理器中进行内存访问的方式。
8086寻址方式主要有以下几种:1. 直接寻址(Direct addressing):给出地址直接访问内存中的数据。
2. 寄存器寻址(Register addressing):使用寄存器中存放的地址进行内存访问。
3. 寄存器间接寻址(Register indirect addressing):使用寄存器中存放的地址作为内存地址的间接寻址方式。
4. 寄存器相对寻址(Register relative addressing):使用一个寄存器中存放的地址作为起始点,加上一个常数作为偏移量。
5. 基址加变址寻址(Base + index addressing):使用基址寄存器和变址寄存器相加得到内存地址。
6. 相对基址加变址寻址(Base + index + offset addressing):使用基址寄存器、变址寄存器和一个常数作为偏移量相加得到内存地址。
举例:1. 直接寻址: MOV AX, [1000H] 表示将内存地址为1000H的数据复制到AX寄存器中。
2. 寄存器寻址: MOV AX, BX 表示将BX寄存器中的数据复制到AX寄存器中。
3. 寄存器间接寻址: MOV AX, [BX] 表示将内存地址为BX寄存器中的数据所指向的内存单元中的数据复制到AX寄存器中。
4. 寄存器相对寻址: MOV AX, [BX+2] 表示将内存地址为BX寄存器中的数据加上2所得到的地址中的数据复制到AX寄存器中。
5. 基址加变址寻址: MOV AX, [BX+SI] 表示将基址寄存器BX和变址寄存器SI中的数据相加得到的地址中的数据复制到AX寄存器中。
6. 相对基址加变址寻址: MOV AX, [BX+SI+2] 表示将基址寄存器BX和变址寄存器SI中的数据相加得到的地址再加上2所得到的地址中的数据复制到AX寄存器中。
第三章(寻址方式)
![第三章(寻址方式)](https://img.taocdn.com/s3/m/c149711da300a6c30c229f26.png)
* 不允许使用AX、CX、DX 存放 EA MOV AX , [ CX ] * SRC 和 DST 的字长一致 MOV DL , [ BX ] MOV DX , [ BX ] * 适于数组、字符串、表格的处理
(3) 直接寻址方式 * —— 有效地址 EA 由指令直接给出
例:MOV AX , [ 2000H ] EA = 2000H , 假设 (DS) = 3000H , 那么 PA = 32000HAH ALFra bibliotek3050
32000
50H 30H (AX) = 3050H
* 隐含的段为数据段 DS * 可使用段跨越前缀
loop next
(3) 寄存器相对寻址
mov cx, count mov si, 0 next : mov dl, string [ si ] mov ah, 2 int 21h inc si loop next
; mov dl, [ string + si ] ; 显示一个字符 ; mov cx, 17
访问存储器的方式
取指令 堆栈操作 一般数据访问 BP 作为基址的寻址 串操作的源操作数 串操作的目的操作数
默认的 段寄存器
CS SS DS SS DS ES
可跨越的 段寄存器
无 无 CS ES SS CS DS ES CS ES SS 无
偏移地址
IP SP 有效地址 EA BP SI DI
寻址方式
![寻址方式](https://img.taocdn.com/s3/m/e1516709763231126edb11a5.png)
一8086/8088的存储器管理1.8086/8088有20条地址线,最大内存容量1MB,其中任何一个内存单元都有一个20位的地址,称为内存单元的物理地址。
8086/8088将1MB内存分为若干段,段的大小根据需要决定,最大为64KB。
每个段起始地址的低4位一般为0,高16位称为段基址,放入段寄存器中。
段内某内存单元的物理地址相对于段起始地址位移量称为段内偏移地址,由于一个段最大为64KB,故偏移地址只用16位二进制数表示即可。
2.一般将段基址和偏移地址称为逻辑地址。
CPU根据逻辑地址确定物理地址的方法为:将段基址左移4位与偏移地址相加便得到内存单元的20位物理地址。
例如DS=8915H,偏移地址为0100H,那么这个单元的物理地址为89150H+0100H=89250H。
3.内存单元物理一般表示为“段基址:偏移地址”的形式。
例8915H:0100H二寻址方式1.立即寻址位于指令操作码后面的操作数部分不代表操作数所在地址,而是参加操作数本身。
例MOV CL,05 <05是八位二进制立即数>MOV AX,3100H <00H传到AL,31H传到AH>操作数(立即数)作为指令的一部分,跟随在指令的操作码之后存放在代码段。
2.寄存器寻址指定某些CPU寄存器存放操作数,可能为通用数据寄存器AX,BX,CX,DX,地址指针寄存器SP,BP,或变址寄存器SI,DI,以及段寄存器CS,SS,DS,ES.例MOV SS,AX <将AX内容存入SS中>寄存器寻址的指令本身存放在存储器的代码段,而操作数则在CPU寄存器中。
3.直接寻址指令在指令的操作码后面直接给出操作数的16位偏移地址。
这个偏移地址也称有效地址。
偏移地址与操作码一起存放在内存代码段,操作数本身一般存放在内存的数据段。
例MOV AX,[3100H] <将偏移地址为3100H的单元的内容传到AX> MOV AX,ES:[3100H]操作数一般在数据段,即隐含的段寄存器为DS,但用SS,DS,ES时要加说明如上。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第三章 操作数的寻址方式
一、立即数寻址方式
直接把参与操作的数据写在指令中,是指令的一部分, 该数据称为立即数。操作数可以是各种数制下的数值(8位或16 位二进制数),也可以是带单引号的字符。 例如:MOV AX,2050H MOV AL,05H 观察下面指令中的错误: MOV AL,‘A’ MOV 05H,AL MOV BL,324D MOV CH,2050H 注意:1.立即数永远不能作目的操作数。 3 2.源操作数和目的操作数要互相匹配。
1
第三章 操作数的寻址方式
1、微机指令格式(补充):操作码 2、说明:
操作码:每条指令必有。
操作数
操作数:不同的指令其操作数的个数不同 例如: MOV AX,2050H
在上面的MOV指令中,MOV是操作码,AX和2050H是操作 数。其中: AX是目的操作数, 2050H是源操作数。该指令的 作用是将2050H存入寄存器AX中。
第三章 操作数的寻址方式
通信工程02班 汤林 1204140218
0
第三章 操作数的寻址方式 操作数是指令的处理对象。在指令中指定操作数或操 作数存放位置的方法称为寻址方式。寻址方式分三类共有7 种寻址方式。 1、操作数在指令中:立即数寻址 2、操作数在寄存器中:寄存器寻址 3、操作数在内存中: ①直接寻址 ②寄存器间接寻址 ③寄存器相对寻址 ④基址变址寻址 ⑤基址变址相对寻址
五、寄存器相对寻址方式
把参与操作数的偏移地址写在寄存器和一个相对位移量 中,而操作数在内存中。 偏移地址(或有效地址)通过寄存器间接给出,可用的 寄存器为BX、BP、SI、DI。 段寄存器可以指定,也可以不指定。如果没有指定段寄 10 存器,则使用默认的寄存器(BP对应SS,其余3个对应DS)
第三章 操作数的寻址方式
第三章 操作数的寻址方式
观察下面指令中的源操作数的地址计算方法:
例1:MOV AX,[BX] 源操作数的物理地址=DS×16+BX 例2: MOV AL,[BX] 源操作数的物理地址= DS×16+BX 例3: MOV AX,[SI] 源操作数的物理地址= DS×16+SI 例4: MOV AX,[DI] 源操作数的物理地址= DS×16+DI 例5: MOV AX,[BP] 源操作数的物理地址= SS×16+BP 例6: MOV AX,ES:[BX]
第三章 操作数的寻址方式
四、寄存器间接寻址方式
把参与操作数的偏移地址写在寄存器中,而操作数在内 存中。物理地址的计算需要利用段寄存器。 偏移地址(或有效地址)通过寄存器间接给出,可用的 寄存器只能为BX、BP、SI、DI。 段寄存器可以指定,也可以不指定。如果没有指定段寄 存器,则使用默认的寄存器(BP对应SS,其余3个对应DS) 例1: MOV [BX],2050H 目的操作数[BX]是寄存器间接寻址方式。 例2: MOV AX,[BP] 原操作数[BP]是寄存器间接寻址方式。 8
AHALΒιβλιοθήκη 段数 据DS: 1492H
×16
14920H + 2050H ──── 16970H
代 码 段
55H AAH . . . 20H 50H A1H
16970H
偏移地址
操作码
6
第三章 操作数的寻址方式
例2:假设TABLE是在数据段定义的一个字节数组的首地址标号 (变量名),其偏移地址为1000H,则: 1、三条指令: ①MOV AL,TABLE ② MOV AL,[TABLE] ③MOV AL,[1000H]是等效的,它们都是直接寻址方式。 2、三条指令:①MOV AL,TABLE+2 ②MOV AL,[TABLE+2] ③MOV AL,[1000H+2] 也是等效的。 例3:假设TABLE是在数据段定义的一个字节数组的首地址标号 (变量名),其偏移地址为1000H,则下面四条指令: ①MOV AL,ES:TABLE ② MOV AL, ES:[TABLE] ③MOV AL, ES:[1000H] ④ MOV AL, ES:1000H 是等效的,它们都是直接寻址方式。 7 物理地址=ES*10H+1000H
第三章 操作数的寻址方式
二、寄存器寻址方式
参与操作的数据寄存器中。在语句格式中表示为寄存器 名。比如:AL,BX,CX,DS,IP等等。 例1: MOV AX,2050H 目的操作数AX是寄存器寻址方式。 例2: MOV BX,AX 上面指令中的AX和BX都是寄存器寻址方式。
4
第三章 操作数的寻址方式
例1: MOV [BX+10H],2050H 源操作数的物理地址=DS*16+BX+10H 例2: MOV AX,[BP+15H] 源操作数的物理地址=SS*16+BP+15H 例3:把TABLE是在数据段定义的一个字节数组的首地址标号 (也称变量名),又设:MOV SI,5 则指令:MOV AL,TABLE[SI] 是寄存器相对寻址 指令也可写成:MOV AL,[TABLE+SI] 例4:TABLE是数据段中定义的一个变量,假设它在数据段中的 偏移地址为0100H,有指令:MOV AX,TABLE[SI] ,若 (DS)=2000H,(SI)=00A0H,(201A0H)=12H,(201A1H)=34H,则 物理地址物理地址为多少? 答:物理地址=20000H+0100H+00A0H=20000H+01A0H=201A0H 11
三、直接寻址方式
把参与操作的数据的偏移地址写在指令中,而操作数在 内存中。物理地址的计算需要利用段寄存器(默认为DS)。
DS寄存器 段地址
指令 偏移地址
存储器 操作数
例1: MOV AX,[2050H] 原操作数 [2050H] 是直接寻址方式。
5
第三章 操作数的寻址方式
指令MOV AX,[2050H]的示意图 执行结果 AX=AA55H
9
第三章 操作数的寻址方式
例6:已知指令 MOV AX,[BX]。如果(DS)=3000H,(BX)=1010H, (31010H)=12H,(31011H)=24H,则操作数的物理地址为多少? 指令执行完后AX为多少? 答:物理地址=30000H+1010H=31010H,执行完后,(AX)=2412H