南京理工大学《微机原理与接口技术》第二章 指令系统(1)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(BX) (SI) 有效地址 = (DI) (BP) 物理地址计算方法: 物理地址 =(DS)×16 + (BX)或(SI)或(DI) 段寄存器为SS
段寄存器为DS
物理地址 = (SS)× 16 + (BP)
2013-7-10 27
例:
• 将数据段中由BX指定偏移地址处的内存数 据送至 AX寄存器 • 汇编指令: MOV AX, [BX];
• 寄存器名表示其内容(操作数)
MOV AX, BX; AX←BX
2013-7-10 15
寄存器寻址方式
2013-7-10
16
说明:
• 寄存器寻址方式的操作数存放于CPU的 某个内部寄存器中,不需要访问存储器, 因而执行速度较快,是经常使用的方法。 在双操作数的指令中,操作数之一必是 寄存器寻址得到的。
2013-7-10 18
1)直接寻址方式
• 直接寻址方式的有效地址在指令中直接给出 • 默认的段地址在DS段寄存器,可使用段超越前 缀改变 • 用中括号包含有效地址,表达存储单元的内容
例如:【2000H]=34H
MOV AX, [2000H]
;AX←DS:[2000H]
MOV AX, ES: [2000H] ;AX←ES:[2000H]
×
((DI))
是一个内存 单元地址
16 + 2000H
=21000H + 2000H =23000H
指令结果:将23000H单元内容送AL中,
将23001H单元内容送AH中。
2013-7-10 29
3)变址寻址(寄存器相对寻址方式)
• 有效地址是寄存器内容与有符号8位或16位位 移量之和,寄存器可以是BX、BP或SI、DI
2013-7-10
8
8086/8088CPU的寻址方式 (1) 操作数可以存放于操作码之后 MOV AL,3FH —立即数寻址方式 (指令中直接给出)
(2) 操作数可以存放于CPU内部的寄存器中 —寄存器寻址方式 MOV AX,BX (3) 操作数可以存放于存储器中 —存储器寻址方式 MOV AL,[1000H]
有效地址EA=BX/BP/SI/DI+8/16位位移量
• 段地址对应BX/SI/DI寄存器默认是DS,对应 BP寄存器默认是SS;可用段超越前缀改变
MOV AX, [SI+06H];AX←DS:[SI+06H]
MOV AX, 06H[SI];AX←DS:[SI+06H]
2013-7-10 30
相对寻址方式
2013-7-10
6
四、程序
程序是为解决某一问题而编写在一起的指令序列。
机器语言程序:由机器指令书写的程序 汇编语言程序:由符号指令书写的程序 高级语言程序:由高级语言书写的程序,高级语 言的基础是语句,而不是处理器的指令系统 汇编语言程序和高级语言程序必须先翻译成机 器语言程序才能执行。这一翻译过程对汇编语 言程序叫做汇编(assemble),对高级语言程 序叫做编译(compilation)或解释 (interpretation)
若DS=1492H,存放源操作数的存储单元的 物理地址是多少? 2013-7-10
21
例:
• 将附加段中偏移地址2000H处的内存数据送 至AX寄存器
• MOV AX, ES:[2000H] ;段超越前缀; • 指令功能:AX←ES : [ 2000H ]; • 指令代码:26 A1 00 20;双字节操作码
2013-7-10 9
1
立即数寻址方式
• 指令中的操作数直接存放在机器代码中,紧跟在 操作码之后(操作数作为指令的一部分存放在操 作码之后的主存单元中) • 这种操作数被称为立即数imm – 可以是8位数值i8(00H~FFH) – 也可以是16位数值i16(0000H~FFFFH) • 立即数寻址方式常用来给寄存器和存储单元赋值, 多以常量形式出现
南京理工大学动力学院
2009年
2013-7-10
1
第二章 8086/8088 指令系统
2.1 概述 2.2 寻址方式 2.3 数据传送指令 2.4 算术运算指令 2.5 逻辑运算指令 2.6 串操作指令 2.7 程序控制指令
2013-7-10 2
•指令是微处理器执行某种操作的命令。 •微处理器全部指令的集合称为指令系统(指令集) •指令有两种书写格式:机器指令和符号指令。 机器指令—指令的二进制数描述 硬件只能识别机器指令,用机器指令书写的程序可 直接运行 符号指令—用规定的助记符和规定的书写格式书 写的指令 与机器指令一一对应,需要翻译成机器指令才能运 行 10110000 00000001 MOV AL, 1
2013-7-10 23
Baidu Nhomakorabea
例:
• 例如:WVAR DW 1234H
;定义字变量WVAR,它具有初值1234H
• MOV AX,WVAR ;指令功能:AX←WVAR
• 假设WVAR的偏移地址为0010H,所以上条指 令实质就是如下指令: • MOV AX, [0010H]; AX 1234H ; • 指令功能:AX←DS : [ 0010H ], • 指令代码:A1 10 00 直接寻址方式
2013-7-10 4
二、指令的助记符格式
操作码 操作数1,操作数2 ;注释
• 操作数2:常被称为源操作数src,它表示参与指令 操作的一个对象 • 操作数1:常被称为目的操作数dest,它不仅可以 作为指令操作的一个对象,还可以用来存放指令 操作的结果; dest OP src dest • 分号后的内容是对指令的解释
物理地址= (SS)×16 + (BP)+DISP8(/DISP16)
2013-7-10 32
例:
• 将数据段中相对SI偏移地址的位移+06H处的内存 数据送至AX寄存器 • MOV AX,[SI+06H] ;
DS 0000H 负 低地址
• 或:MOV AX,06H[SI] ;
功能:
• AX←DS : [ SI+06H ]
2013-7-10
22
例:
• 将数据段的变量WVAR(即该变量名指示 的内存单元数据)送至 AX寄存器 • 变量指示内存的一个数据,直接引用变量 名就是采用直接寻址方式 • 变量应该在数据段进行定义,常用的变量 定义伪指令 DB和 DW分别表示定义字节变 量和字变量 • 变量一经定义便具有逻辑地址和类型属性
• 指令功能:AX←DS : [ BX ];
• 该指令中有效地址存放于BX寄存器中,而 数据则存放在数据段内存单元中,假设BX 内容设臵为2000H,则该指令等同于
MOV AX, [2000H]
2013-7-10 28
例:
已知:(DS)=2100H,(DI)=2000H 指令: MOV AX,[DI] ;AX 物理地址=(DS)× 16 + (DI) =2100H
2013-7-10
17
3
存储器寻址方式
• 操作数在主存储器中,用主存地址表示 • 程序设计时,8088采用逻辑地址表示主存地址
– 段地址在默认的或用段超越前缀指定的段寄存器中 – 指令中只需给出操作数的偏移地址(有效地址EA)
8086设计了多种存储器寻址方式
1、直接寻址方式 2、寄存器间接寻址方式 3、基址寻址方式 4、变址寻址方式 5、基址变址寻址方式
2013-7-10
3
一、指令的组成 操作码 操作数
指令由操作码和操作数两部分组成 • 操作码说明计算机要执行哪种操作,如传送、运算、 移位、跳转等操作,它是指令中不可缺少的组成部 分
操作数是指令执行的参与者,即各种操作的对象
有些指令不需要操作数,通常的指令都有一个或两 个操作数,也有个别指令有3个甚至4个操作数
2013-7-10 35
说明:
• 采用BP相对寻址时,如偏移量为0,可不写 出来,形式上与寄存器间接寻址一样: • MOV AX,[BP] • 等同于:MOV AX,[BP+0H] • 指令代码均为:8B 46 00
所以,严格地讲8088/8086可以采用寄存器间接 寻址的寄存器有三个 有的书中把采用相对于寄存器SI、DI寻址的称 为变址寻址,相对于寄存器BX、BP寻址的称为 2013-7-10 基址寻址。
MOV AX, 0102H
2013-7-10
;AX←0102H
10
立即数寻址方式
2013-7-10
11
例:
• 将立即数0102H送至AX寄存器 • 汇编指令: MOV AX,0102H ; • 指令功能: AX←0102H ; • 指令代码:B8 02 01
2013-7-10
12
代码段
2013-7-10
2013-7-10 19
直接寻址方式
DS=1492H
2013-7-10
20
例:
• 将数据段中偏移地址2000H处的内存数据 送至AX寄存器 • 汇编指令: MOV AX, [2000H] • 指令功能:AX←DS : [ 2000H ] • 指令代码:A1 00 20 • 注意区别: MOV AX, 2000H
汇编语句格式
• 有些指令中隐含了第一操作数,如:MUL CL
2013-7-10 5
三、指令的操作码和操作数
• 每种指令的操作码:
– 用一个助记符表示(指令功能的英文缩写) – 对应着机器指令的一个或多个二进制编码
• 指令中的操作数:
– 可以是一个具体的数值 – 可以是存放数据的寄存器 – 或指明数据在主存位臵的存储器地址
2013-7-10
31
说明:
操作数在存储器内,指令中寄存器内容与指令指定的位 移量(DISP)之和作为操作数所在单元的有效地址。 (BX)
有效地址 = (SI) (DI) (BP) + DISP16 段寄存器为SS
DISP8
段寄存器为DS
物理地址 = (DS)×16 +(BX)+DISP8 (SI)、(DI)、DISP16类同。
13
说明:
• 立即数寻址方式常用来给寄存器和存储单元赋初值。
• 在汇编语言中,立即数是以常量形式出现的。常量可以是:
(1)二进制数(后缀字母B或b) MOV BL,01000110B (2)十进制数(不用后缀字母,或者用D或d)MOV AL,5 (3)16进制数(后缀字母H或h,以A-F开头则要加 个0) MOV AH,B8H 错 MOV AH,0B8H 正确 (4)字符串(用单或双引号括起的字符,表示对应 的ASCII码值,例如:‘A’=41H) MOV AL, ’A’ (5)标识符表示的符号常量、数值表达式 MOV AX, ’AB’ equ 314 • (符号常量通过汇编伪指令定义) PI
SI 2000H
相对这个间址寄存器,也就是说以 此为基准,上下偏移,故偏移量有正 有负,一定要注意区分!
2013-7-10
正 高地址
33
例:
• 在汇编语言中,位移量可用常量表示,也可 用符号表示,对于上面定义的 WVAR变量: • MOV AX,[SI+WVAR] • 也可以书写成: • MOV AX,WVAR[SI] • 取WVAR的偏移地址0010H,上条指令实质 就是如下指令:MOV AX, [SI+0010H]
2013-7-10 24
2)寄存器间接寻址方式
• 有效地址存放在基址寄存器BX、BP或变址 寄存器SI、DI中 • 默认的段地址在DS段寄存器,可使用段超 越前缀改变
MOV AX, [BX] ;AX←DS:[BX]
2013-7-10 25
间接寻址方式
2013-7-10
26
操作数在存储器中,指令中寄存器内容作为操作 数所在存储单元的有效地址。
注意十进制数和BCD数的区别
2013-7-10
MOV AX,
PI+213
14
2
寄存器寻址方式
– 8位寄存器r8: AH、AL、BH、BL、CH、CL、DH、DL – 16位寄存器r16: AX、BX、CX、DX、SI、DI、BP、SP – 4个段寄存器seg: CS、DS、SS、ES
• 操作数存放在CPU的内部寄存器reg中:
2013-7-10
34
例:
如果 (DS)=3000H, (SI)= 2000H, COUNT=3000H, 则 执行指令 MOV AX,CONUT[SI],求出此种寻址 方式对应的有效地址和物理地址。
有效地址EA= 2000H + 3000H = 5000H 物理地址=(DS)×16 + 5000H =30000H + 5000H =35000H 若COUNT=9600H,计算其物理地址?
2013-7-10 7
2.2 操作数的寻址方式
• 指令系统设计了多种操作数的来源
• 寻找操作数的过程就是操作数的寻址
• 把寻找操作数的方式叫做(操作数)寻址方式 • 理解操作数的寻址方式是理解指令功能的前提 • 操作数采取哪一种寻址方式
–一方面,会影响处理器执行指令的速度和效率 –另一方面,对程序设计也很重要