当前位置:
文档之家› 南京理工大学《微机原理与接口技术》第二章 指令系统(1)
南京理工大学《微机原理与接口技术》第二章 指令系统(1)
南京理工大学动力学院
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 35
说明:
• 采用BP相对寻址时,如偏移量为0,可不写 出来,形式上与寄存器间接寻址一样: • MOV AX,[BP] • 等同于:MOV AX,[BP+0H] • 指令代码均为:8B 46 00
所以,严格地讲8088/8086可以采用寄存器间接 寻址的寄存器有三个 有的书中把采用相对于寄存器SI、DI寻址的称 为变址寻址,相对于寄存器BX、BP寻址的称为 2013-7-10 基址寻址。
• 寄存器名表示其内容(操作数)
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]
物理地址= (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-1022 Nhomakorabea 例:• 将数据段的变量WVAR(即该变量名指示 的内存单元数据)送至 AX寄存器 • 变量指示内存的一个数据,直接引用变量 名就是采用直接寻址方式 • 变量应该在数据段进行定义,常用的变量 定义伪指令 DB和 DW分别表示定义字节变 量和字变量 • 变量一经定义便具有逻辑地址和类型属性
汇编语句格式
• 有些指令中隐含了第一操作数,如:MUL CL
2013-7-10 5
三、指令的操作码和操作数
• 每种指令的操作码:
– 用一个助记符表示(指令功能的英文缩写) – 对应着机器指令的一个或多个二进制编码
• 指令中的操作数:
– 可以是一个具体的数值 – 可以是存放数据的寄存器 – 或指明数据在主存位臵的存储器地址
• 指令功能: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
34
例:
如果 (DS)=3000H, (SI)= 2000H, COUNT=3000H, 则 执行指令 MOV AX,CONUT[SI],求出此种寻址 方式对应的有效地址和物理地址。
有效地址EA= 2000H + 3000H = 5000H 物理地址=(DS)×16 + 5000H =30000H + 5000H =35000H 若COUNT=9600H,计算其物理地址?
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 4
二、指令的助记符格式
操作码 操作数1,操作数2 ;注释
• 操作数2:常被称为源操作数src,它表示参与指令 操作的一个对象 • 操作数1:常被称为目的操作数dest,它不仅可以 作为指令操作的一个对象,还可以用来存放指令 操作的结果; dest OP src dest • 分号后的内容是对指令的解释
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
2013-7-10
3
一、指令的组成 操作码 操作数
指令由操作码和操作数两部分组成 • 操作码说明计算机要执行哪种操作,如传送、运算、 移位、跳转等操作,它是指令中不可缺少的组成部 分
操作数是指令执行的参与者,即各种操作的对象
有些指令不需要操作数,通常的指令都有一个或两 个操作数,也有个别指令有3个甚至4个操作数
2013-7-10
8
8086/8088CPU的寻址方式 (1) 操作数可以存放于操作码之后 MOV AL,3FH —立即数寻址方式 (指令中直接给出)
(2) 操作数可以存放于CPU内部的寄存器中 —寄存器寻址方式 MOV AX,BX (3) 操作数可以存放于存储器中 —存储器寻址方式 MOV AL,[1000H]
注意十进制数和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中:
若DS=1492H,存放源操作数的存储单元的 物理地址是多少? 2013-7-10
21
例:
• 将附加段中偏移地址2000H处的内存数据送 至AX寄存器
• MOV AX, ES:[2000H] ;段超越前缀; • 指令功能:AX←ES : [ 2000H ]; • 指令代码:26 A1 00 20;双字节操作码
SI 2000H
相对这个间址寄存器,也就是说以 此为基准,上下偏移,故偏移量有正 有负,一定要注意区分!
2013-7-10
正 高地址
33
例:
• 在汇编语言中,位移量可用常量表示,也可 用符号表示,对于上面定义的 WVAR变量: • MOV AX,[SI+WVAR] • 也可以书写成: • MOV AX,WVAR[SI] • 取WVAR的偏移地址0010H,上条指令实质 就是如下指令:MOV AX, [SI+0010H]
2013-7-10
17
3
存储器寻址方式
• 操作数在主存储器中,用主存地址表示 • 程序设计时,8088采用逻辑地址表示主存地址
– 段地址在默认的或用段超越前缀指定的段寄存器中 – 指令中只需给出操作数的偏移地址(有效地址EA)
8086设计了多种存储器寻址方式
1、直接寻址方式 2、寄存器间接寻址方式 3、基址寻址方式 4、变址寻址方式 5、基址变址寻址方式
2013-7-10 7
2.2 操作数的寻址方式
• 指令系统设计了多种操作数的来源
• 寻找操作数的过程就是操作数的寻址
• 把寻找操作数的方式叫做(操作数)寻址方式 • 理解操作数的寻址方式是理解指令功能的前提 • 操作数采取哪一种寻址方式
–一方面,会影响处理器执行指令的速度和效率 –另一方面,对程序设计也很重要
2013-7-10 9
1
立即数寻址方式
• 指令中的操作数直接存放在机器代码中,紧跟在 操作码之后(操作数作为指令的一部分存放在操 作码之后的主存单元中) • 这种操作数被称为立即数imm – 可以是8位数值i8(00H~FFH) – 也可以是16位数值i16(0000H~FFFFH) • 立即数寻址方式常用来给寄存器和存储单元赋值, 多以常量形式出现
2013-7-10 23
例:
• 例如:WVAR DW 1234H
;定义字变量WVAR,它具有初值1234H
• MOV AX,WVAR ;指令功能:AX←WVAR
• 假设WVAR的偏移地址为0010H,所以上条指 令实质就是如下指令: • MOV AX, [0010H]; AX 1234H ; • 指令功能:AX←DS : [ 0010H ], • 指令代码:A1 10 00 直接寻址方式