微型计算机原理 基于 16 位机

148
微微微微微微微 微微微微微微微 微微 微微 16 16 微微 微微

Upload: prema

Post on 23-Jan-2016

178 views

Category:

Documents


0 download

DESCRIPTION

微型计算机原理 基于 16 位机. 概述. 微处理器. 指令系统. 第一章  . 微型计算机概述. 1.1 微型计算机的发展和应用. 1946 年,世界上出现第一台数字式电子计算机 ENIAC (电子数据和计算器) 发展到以大规模集成电路为主要部件的第四代,产生了微型计算机 1971 年, Intel 公司设计了世界上第一个微处理器芯片 Intel4004 ,开创了一个全新的计算机时代. 1.1.1 微型计算机的发展. 第 1 代 : 4 位和低档 8 位微机 4004→4040→8008 第 2 代 :中高档 8 位微机 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 微型计算机原理 基于 16 位机

微型计算机原理微型计算机原理 基于基于 1616 位机位机

Page 2: 微型计算机原理 基于 16 位机

微处理器微处理器

指令系统指令系统

概述概述

Page 3: 微型计算机原理 基于 16 位机

第一章  第一章  微型计算机概述微型计算机概述

Page 4: 微型计算机原理 基于 16 位机

1946 年,世界上出现第一台数字式电子计算机 ENIAC(电子数据和计算器)

发展到以大规模集成电路为主要部件的第四代,产生了微型计算机

1971 年, Intel 公司设计了世界上第一个微处理器芯片 Intel4004,开创了一个全新的计算机时代

1.1 微型计算机的发展和应用

Page 5: 微型计算机原理 基于 16 位机

1.1.1 微型计算机的发展 第 1 代: 4 位和低档 8 位微机

4004→4040→8008 第 2 代:中高档 8 位微机

Z80 、 I8085 、 M6800 , Apple-II微机 第 3 代: 16 位微机

8086→8088→80286 , IBM PC系列机

Page 6: 微型计算机原理 基于 16 位机

1.1.1 微型计算机的发展(续)

第 4 代: 32 位微机80386→80486→Pentium→Pentium II →Pen

tium III →Pentium 432 位 PC 机、 Macintosh 机、 PS/2 机

第 5 代: 64 位微机Itanium、 64 位 RISC 微处理器芯片微机服务器、工程工作站、图形工作站

Page 7: 微型计算机原理 基于 16 位机

1.1.2 微型计算机的应用 计算机应用通常分成如下各个领域

科学计算,数据处理,实时控制 计算机辅助设计,人工智能,……

由于微型计算机具有如下特点 体积小、价格低 工作可靠、使用方便、通用性强……

所以,可以分为两个主要应用方向

Page 8: 微型计算机原理 基于 16 位机

1.1.2 微型计算机的应用 用于数值计算、数据处理及信息管理方向

通用微机,例如: PC 微机功能越强越好、使用越方便越好

用于过程控制及智能化仪器仪表方向专用微机,例如:单片机、工控机可靠性高、实时性强程序相对简单、处理数据量小

将 CPU 以及其他主要部件(如ROM 、 RAM 、 I/O 接口)都集成在一个微处理器芯片中例如:常用的 MCS-51 、 MCS-96

Page 9: 微型计算机原理 基于 16 位机

1.2 微型计算机的系统组成

运算器 控制器

寄存器组 内存储器 总线

输入输出接口电路

外部设备 软件

微处理器微型计算机

微型计算机系统

区别

Page 10: 微型计算机原理 基于 16 位机

图 1.1 微型计算机的系统组成

控制总线 CB

数据总线 DB

地址总线 AB系统总线形成

处理器子系统

I/O 设备

I/O 接口

存储器

系统总线 BUS

1.2.1 微型计算机的硬件组成

1.1. 微处理器子系统微处理器子系统2.2. 存储器存储器3.3. I/OI/O 设备和设备和 I/OI/O 接口接口4. 系统总线

Page 11: 微型计算机原理 基于 16 位机

系统总线 总线是指传递信息的一组公用导线 总线是传送信息的公共通道 微机系统采用总线结构连接系统功能部件 总线信号可分成三组

地址总线 AB :传送地址信息数据总线 DB :传送数据信息控制总线 CB :传送控制信息

Page 12: 微型计算机原理 基于 16 位机

总线信号 地址总线 AB

输出将要访问的内存单元或 I/O 端口的地址 地址线的多少决定了系统直接寻址存储器的范围

数据总线 DB CPU 读操作时,外部数据通过数据总线送往 CPU CPU 写操作时, CPU 数据通过数据总线送往外部 数据线的多少决定了一次能够传送数据的位数

控制总线 CB 协调系统中各部件的操作,有输出控制、输入状态等信号 控制总线决定了系统总线的特点,例如功能、适应性等

举例

举例

特点

Page 13: 微型计算机原理 基于 16 位机

1.2.2 微型计算机的软件系统

操作系统 MS-DOS

汇编程序 MASM 和 LINK

文本编辑程序 EDIT.COM

调试程序 DEBUG.EXE

为什么采用汇编语言?

Page 14: 微型计算机原理 基于 16 位机

1.3 IBM PC 系列机系统16 位 IBM PC 系列机是 32 位微机的基础

8088CPU

IBM PC 机

IBM PC/AT 机IBM PC/XT 机

Page 15: 微型计算机原理 基于 16 位机

1.3.1 硬件基本组成16 位和32 位 PC 机的基本部件相同

Page 16: 微型计算机原理 基于 16 位机

8088微处理器

8087协处理器

8288总线控制器

I/O通道

8259中断控制器

随机存储器RAM

只读存储器ROM

8253定时控制器

8237DMA 控制器

8255并行接口

控制总线

数据总线

地址总线地址锁存器

数据收发器

扬声器接口

8284时钟发生器

键盘接口

系统配置开关

1.3.2 主机板组成1. 微处理器子系统

8088 : 16 位内部结构、 8 位数据总线、20 位地址总线、 4.77MHz 主频

2. 存储器ROM-BIOS 、主体为 RAM

3. I/O 接口控制电路8259A 、 8253 、 8237A 、 8255 等

4. I/O 通道62 线的 IBM PC 总线

Page 17: 微型计算机原理 基于 16 位机

图 1.5 存储空间的分配

保留 ROM64KB

基本 ROM64KB

扩展 RAM≈15MB

基本 ROM64KB

保留 ROM64KB

扩展 ROM128KB

显示 RAM128KB

系统 RAM640KB

000000H

0A0000H

0C0000H

0E0000H

0F0000H

100000H

FE0000H

FFFFFFH

常规内存1MB

扩展内存15MB

1.3.3 存储空间的分配

常规内存: 1MB 基本 RAM 区: 640KB 保留 RAM 区: 128KB 扩展 ROM 区: 128KB 基本 ROM 区: 64KB

扩展内存:用作 RAM 区

Page 18: 微型计算机原理 基于 16 位机

  

系统板  

000 - 01F020 - 03F040 - 05F060 - 07F080 - 09F0A0 - 0BF0C0 - 0DF0E0 - 0FF

DMA 控制器 1中断控制器 1定时计数器

并行接口电路DMA 页面寄存器

中断控制器 2DMA 控制器 2

协处理器

   

I/O 

通 

1F0 - 1F8200 - 207278 - 27F2F8 - 2FF378 - 37F380 - 38F3A0 - 3AF3B0 - 3BF3D0 - 3DF3F0 - 3F73F8 - 3FF

硬盘适配器游戏接口

并行打印机接口 LPT2串行通信接口 COM2

并行打印机接口 LPT1SDLC 通信接口BSC 通信接口

单色显示 / 打印机适配器彩色图形适配器 CGA

软盘适配器串行通信接口 COM1

1.3.4 I/O 空间的分配

 

80x86 访问外设时,只使用低 16 位 A0 ~ A

15 ,寻址 64K 个 8 位 I/O 端口 PC 机仅使用低 10 位 A0 ~ A9 ,寻址 1024

个 8 位 I/O 端口

Page 19: 微型计算机原理 基于 16 位机

第 1 章: 1.4 计算机中的数据表示 存储容量的表达

比特 b (二进制 1 位)字节 B (二进制 8 位)1KB = 210B = 1024B1MB = 220B 、 1GB = 230B

进制的表示二进制数用 B 或 b 结尾十进制数可不用结尾字母,

也可用 D 或 d 结尾十六进制数用 H 或 h 结尾

Page 20: 微型计算机原理 基于 16 位机

第二章第二章

微处理器微处理器

Page 21: 微型计算机原理 基于 16 位机

微处理器主要的性能指标微处理器主要的性能指标主频

第二章第二章

外频工作电压制造工艺地址线宽度数据线宽度内置协处理器

Page 22: 微型计算机原理 基于 16 位机

微处理器飞速发展

80386

80486奔腾

奔腾 2 代

奔腾 4 代

802868086

奔腾 3 代

IA-64(安腾)

4004

Page 23: 微型计算机原理 基于 16 位机

2.1 8086/80882.1 8086/8088 微微处理器处理器Intel 公司 1978 年推出 8086

1979 年推出 8088, 于 1981 年用于 IBM PC/XT中

2.11 8086/80882.11 8086/8088 的内部结构的内部结构

 一、总线接口部件 一、总线接口部件 BIUBIU (( Bus interface UnitBus interface Unit ))

 二、执行部件( 二、执行部件( Execution UnitExecution Unit ))

结构结构

Page 24: 微型计算机原理 基于 16 位机

第 2 章 : 2.1.2 8088/8086 的功能结构 8088 的内部结构从功能上分成两个单元

1. 总线接口单元 BIU

管理 8088 与系统总线的接口负责 CPU 对存储器和外设进行访问2. 执行单元 EU

负责指令的译码、执行和数据的运算 两个单元相互独立,分别完成各自操作,还可以并行执行,实现指令预取(指令读取和执行的流水线操作)

Page 25: 微型计算机原理 基于 16 位机

第 2 章: 2.1.3 8088/8086 的寄存器结构 8088/8086 的寄存器组有

8 个通用寄存器4 个段寄存器1 个标志寄存器1 个指令指针寄存器

他们均为16位!

图示

汇编语言程序员看到的处理器,就是寄存器 所以,一定要熟悉这些寄存器的名称和作用

Page 26: 微型计算机原理 基于 16 位机

第 2 章: 1. 通用寄存器 8088 有 8 个通用的 16 位寄存器

( 1 )数据寄存器 : AX BX CX DX

( 2 )变址寄存器 : SI DI

( 3 )指针寄存器 : BP SP 4 个数据寄存器还可以分成高 8 位和低 8 位两个独立的寄存器,这样又形成 8 个通用的 8 位寄存器AX : AH AL BX : BH BL

CX : CH CL DX : DH DL

内部结构内部结构

Page 27: 微型计算机原理 基于 16 位机

第 2 章:( 1 )数据寄存器 AX称为累加器( Accumulator )

使用频度最高。用于算术、逻辑运算以及与外设传送信息等

BX称为基址寄存器( Base address Register )常用做存放存储器地址

CX称为计数器( Counter )作为循环和串操作等指令中的隐含计数器

DX称为数据寄存器( Data register )常用来存放双字长数据的高 16 位,或存放外设端口地址

Page 28: 微型计算机原理 基于 16 位机

第 2 章:( 1 )数据寄存器 AX称为累加器( Accumulator )

使用频度最高。用于算术、逻辑运算以及与外设传送信息等

BX称为基址寄存器( Base address Register )常用做存放存储器地址

CX称为计数器( Counter )作为循环和串操作等指令中的隐含计数器

DX称为数据寄存器( Data register )常用来存放双字长数据的高 16 位,或存放外设端口地址

内部结构内部结构

Page 29: 微型计算机原理 基于 16 位机

第 2 章:( 2 )变址寄存器 16 位变址寄存器 SI 和 DI 常用于存储器变址寻址方式时提供地址

SI 是源地址寄存器( Source Index )DI 是目的地址寄存器( Destination Index )

在串操作类指令中, SI 、 DI还有较特殊的用法

现在不必完全理解,以后会详细展开

内部结构内部结构

Page 30: 微型计算机原理 基于 16 位机

第 2 章:( 3 )指针寄存器 指针寄存器用于寻址内存堆栈内的数据

SP 为堆栈指针寄存器( Stack Pointer ) ,指示堆栈段栈顶的位置(偏移地址)

BP 为基址指针寄存器( Base Pointer ),表示数据在堆栈段中的基地址

SP 和 BP寄存器与 SS段寄存器联合使用以确定堆栈段中的存储单元地址

堆栈( Stack )是主存中一个特殊的区域,采用“先进后出”或“后进先出”存取操作方式、而不是随机存取方式。

用 8088/8086 形成的微机系统中,堆栈区域被称为堆栈段

内部结构内部结构

Page 31: 微型计算机原理 基于 16 位机

第 2 章: 2. 指令指针寄存器 IP ( Instruction Pointer )为指令指针寄存

器,指示主存储器指令的位置随着指令的执行, IP 将自动修改以指示下

一条指令所在的存储器位置 IP寄存器是一个专用寄存器 IP寄存器与 CS段寄存器联合使用以确定下

一条指令的存储单元地址

内部结构内部结构

Page 32: 微型计算机原理 基于 16 位机

第 2 章: 3. 标志寄存器标志( Flag )用于反映指令执行结果或控制

指令执行形式 8088 处理器的各种标志形成了一个 16 位的标志寄存器 FLAGS (程序状态字 PSW寄存器)

程序设计需要利用标志的状态

内部结构内部结构

Page 33: 微型计算机原理 基于 16 位机

第 2 章:标志寄存器 - 分类 状态标志--用来记录程序运行结果的状态

信息,许多指令的执行都将相应地设置它CF ZF SF PF OF AF

控制标志--可由程序根据需要用指令设置,用于控制处理器执行指令的方式DF IF TF

OF

1115 12

DF

10

IF

9

TF

8

SF

7

ZF

6 5

AF

4 3

PF

2 1

CF

0

标志寄存器标志寄存器 FLAGSFLAGS

存储内部结构内部结构

Page 34: 微型计算机原理 基于 16 位机

第 2 章:进位标志 CF ( Carry Flag ) 当运算结果的最高有效位有进位(加法)或借位(减法)时,进位标志置 1 ,即CF = 1;

否则CF = 0

3AH + 7CH = B6H ,没有进位: CF = 0

AAH + 7CH =( 1 ) 26H ,有进位: CF = 1

Page 35: 微型计算机原理 基于 16 位机

第 2 章:零标志 ZF ( Zero Flag )

若运算结果为 0 ,则 ZF = 1;否则 ZF = 0

3AH + 7CH = B6H ,结果不是零: ZF = 0

84H + 7CH =( 1 ) 00H ,结果是零: ZF

= 1

注意: ZF 为 1 表示的结果是 0

Page 36: 微型计算机原理 基于 16 位机

第 2 章:符号标志 SF ( Sign Flag )

运算结果最高位为 1 ,则 SF = 1; 否则 SF = 0

3AH + 7CH = B6H ,最高位 D7 = 1 : SF =1

84H + 7CH =( 1 ) 00H ,最高位 D7 = 0 :SF = 0

有符号数据用最高有效位表示数据的符号所以,最高有效位就是符号标志的状态

Page 37: 微型计算机原理 基于 16 位机

第 2 章:奇偶标志 PF ( Parity Flag )

当运算结果最低字节中“ 1” 的个数为零或偶数时, PF = 1;否则 PF = 0

3AH + 7CH = B6H = 10110110B

结果中有 5 个“ 1” ,是奇数: PF = 0

PF 标 志 仅 反 映 最 低 8 位 中 “ 1” 的 个 数 是偶或奇,即使是进行 16 位字操作

Page 38: 微型计算机原理 基于 16 位机

第 2 章:溢出标志 OF ( Overflow Flag )

若算术运算的结果有溢出,则OF = 1; 否则 OF = 0

3AH + 7CH = B6H ,产生溢出: OF = 1

AAH + 7CH =( 1 ) 26H ,没有溢出: OF= 0

返回返回

Page 39: 微型计算机原理 基于 16 位机

第 2 章:什么是溢出处理器内部以补码表示有符号数8 位表达的整数范围是:+ 127 ~ - 12816 位表达的范围是:+ 32767 ~ - 32768如果运算结果超出这个范围,就产生了溢出有溢出,说明有符号数的运算结果不正确

3AH + 7CH = B6H ,就是 58 + 124 = 182 ,已经超出- 128~+ 127范围,产生溢出,故 OF =1;补码 B6H 表达真值是- 74 ,显然运算结果也不正确

• B6H = 10110110B ,最高位为 1 ,作为有符号数是负数• 对 B6H求反加 1等于:01001001B + 1 = 01001010B = 4AH= 74

• 所以, B6H 表达有符号数的真值为-74

Page 40: 微型计算机原理 基于 16 位机

第 2 章:溢出和进位的区别

溢出标志OF 和进位标志CF 是两个意义不同的标志

进位标志表示无符号数运算结果是否超出范围,运算结果仍然正确

溢出标志表示有符号数运算结果是否超出范围,运算结果已经不正确

Page 41: 微型计算机原理 基于 16 位机

第 2 章: 溢出和进位的对比例 1 : 3AH+ 7CH = B6H无符号数运算: 58+ 124 = 182

范围内,无进位有符号数运算: 58+ 124 = 182

范围外,有溢出

例 2 : AAH + 7CH =( 1 ) 26H无符号数运算: 170 + 124 = 294

范围外,有进位有符号数运算: - 86 + 124 = 28

范围内,无溢出

Page 42: 微型计算机原理 基于 16 位机

第 2 章:溢出和进位的应用场合 处理器对两个操作数进行运算时,按照无符

号数求得结果,并相应设置进位标志 CF;同时,根据是否超出有符号数的范围设置溢出标志 OF

应该利用哪个标志,则由程序员来决定。也就是说,如果将参加运算的操作数认为是无符号数,就应该关心进位;认为是有符号数,则要注意是否溢出

Page 43: 微型计算机原理 基于 16 位机

第 2 章:溢出的判断 判断运算结果是否溢出有一个简单的规则: 只有当两个相同符号数相加(包括不同符号数相减),而运算结果的符号与原数据符号相反时,产生溢出;因为,此时的运算结果显然不正确

其他情况下,则不会产生溢出

例 1 : 3AH+ 7CH = B6H 溢出例 2 : AAH+ 7CH 无溢出例 3 : 3AH- 7CH 无溢出例 4 : AAH- 7CH = 2DH 溢出

返回返回

Page 44: 微型计算机原理 基于 16 位机

第 2 章:辅助进位标志 AF ( Auxiliary Carry Flag )

3AH+ 7CH = B6H , D3 有进位: AF = 1

运算时 D3 位(低半字节)有进位或借位时, AF = 1;否则 AF = 0

这个标志主要由处理器内部使用,用于十进制算术运算调整指令中,用户一般不必关心

Page 45: 微型计算机原理 基于 16 位机

第 2 章:方向标志 DF ( Direction Flag ) 用于串操作指令中,控制地址的变化方向:

设置 DF = 0 ,存储器地址自动增加;设置 DF = 1 ,存储器地址自动减少

CLD 指令复位方向标志: DF = 0STD 指令置位方向标志: DF = 1

Page 46: 微型计算机原理 基于 16 位机

第 2 章:中断允许标志 IF ( Interrupt-enable Flag ) 控制可屏蔽中断是否可以被处理器响应:

设置 IF = 1 ,则允许中断;设置 IF = 0 ,则禁止中断

CLI 指令复位中断标志: IF = 0STI 指令置位中断标志: IF = 1

Page 47: 微型计算机原理 基于 16 位机

第 2 章:陷阱标志 TF ( Trap Flag )

用于控制处理器进入单步操作方式:设置 TF = 0 ,处理器正常工作;设置 TF = 1 ,处理器单步执行指令

单步执行指令——处理器在每条指令执行结束时,便产生一个编号为 1 的内部中断

这种内部中断称为单步中断 所以 TF也称为单步标志 利用单步中断可对程序进行逐条指令的调试 这种逐条指令调试程序的方法就是单步调试

Page 48: 微型计算机原理 基于 16 位机

第 2 章: 2.1.4 8088/8086 的存储器结构

存储器是计算机存储信息的地方。掌握数据存储格式,以及存储器的分段管理对以后的汇编程序设计非常重要

你能区别寄存器、存储器 ( 主存 ) 、外存(包括硬盘、光盘、磁带等存储介质 )吗?

答案答案

Page 49: 微型计算机原理 基于 16 位机

第 2 章:寄存器、存储器和外存的区别

寄存器是微处理器( CPU )内部暂存数据的存储单元,以名称表示,例如: AX , BX..…. 等

存储器也就是平时所说的主存,也叫内存,可直接与 CPU 进行数据交换。主存利用地址区别

外存主要指用来长久保存数据的外部存储介质,常见的有硬盘、光盘、磁带、 U盘等。外存的数据只能通过主存间接地与 CPU交换数据

程序及其数据可以长久存放在外存,在运行需要时才进入主存

Page 50: 微型计算机原理 基于 16 位机

第 2 章: 1. 数据的存储格式 计算机中信息的单位

二进制位 Bit:存储一位二进制数: 0 或 1字节 Byte: 8 个二进制位,D7~D0

字Word: 16位, 2个字节,D15~D0

双字DWord: 32位, 4个字节,D31~D0

最低有效位 LSB :数据的最低位,D0 位最高有效位 MSB :数据的最高位,对应字节、字、双字分别指D7、D15、D31位

图示图示

Page 51: 微型计算机原理 基于 16 位机

第 2 章:存储单元及其存储内容

每个存储单元都有一个编号;被称为存储器地址

每个存储单元存放一个字节的内容

图示图示

0002H单元存放有一个数据 34H

表达为 [0002H]= 34H

Page 52: 微型计算机原理 基于 16 位机

第 2 章:多字节数据存放方式多字节数据在存储器中占连续的多个存储单元:

存放时,低字节存入低地址,高字节存入高地址;表达时,用它的低地址表示多字节数据占据的地址

空间。

图 2-5 中 0002H“字”单元的内容为:[0002H] = 1234H

0002H号“双字”单元的内容为:[0002H] = 78561234H

80x86 处理器采用“低对低、高对高”的存储形式,被称为“小端方式Little Endian” 。

相对应还存在“大端方式 Big Endian” 。

图示图示

Page 53: 微型计算机原理 基于 16 位机

第 2 章:数据的地址对齐同一个存储器地址可以是字节单元地址、

字单元地址、双字单元地址等等(视具体情况来确定)

字单元安排在偶地址( xxx0B )、双字单元安排在模 4 地址( xx00B )等,被称为“地址对齐( Align )”

对于不对齐地址的数据,处理器访问时,需要额外的访问存储器时间

应该将数据的地址对齐,以取得较高的存取速度

Page 54: 微型计算机原理 基于 16 位机

第 2 章: 2. 存储器的分段管理 8088CPU 有 20条地址线

最大可寻址空间为 220 = 1MB物理地址范围从 00000H~ FFFFFH

8088CPU 将 1MB 空间分成许多逻辑段( Segment)每个段最大限制为 64KB段地址的低 4位为 0000B

这样,一个存储单元除具有一个唯一的物理地址外,还具有多个逻辑地址

Page 55: 微型计算机原理 基于 16 位机

第 2 章:物理地址和逻辑地址8088CPU 存储系统中,对应每个物理存储单元都有一个唯一的 20 位编号,就是物理地址,从 00000H ~ FFFFFH

分段后在用户编程时,采用逻辑地址,形式为段基地址 : 段内偏移地址

分隔符 物理地址 14700H逻辑地址 1460H:100H

Page 56: 微型计算机原理 基于 16 位机

第 2 章:逻辑地址段地址说明逻辑段在主存中的起始位置 8088 规定段地址必须是模 16 地址: xxxx0H省略低 4 位 0000B ,段地址就可以用 16 位数据

表示,就能用 16 位段寄存器表达段地址

偏移地址说明主存单元距离段起始位置的偏移量每段不超过 64KB ,偏移地址也可用 16 位数据表

Page 57: 微型计算机原理 基于 16 位机

14600H+ 100H14700H

第 2 章:物理地址和逻辑地址的转换

将逻辑地址中的段地址左移 4 位,加上偏移地址就得到 20 位物理地址

一个物理地址可以有多个逻辑地址

逻辑地址 1460:100 、 1380:F00物理地址 14700H 14700H

13800H+ F00H14700H

段地址左移 4位段地址左移 4位加上偏移地址加上偏移地址

得到物理地址得到物理地址

Page 58: 微型计算机原理 基于 16 位机

第 2 章: 3. 段寄存器

8088 有 4 个 16 位段寄存器CS (代码段)指明代码段的起始地址SS (堆栈段)指明堆栈段的起始地址DS (数据段)指明数据段的起始地址ES (附加段)指明附加段的起始地址

每个段寄存器用来确定一个逻辑段的起始地址,每种逻辑段均有各自的用途

内部结构内部结构

CSCS

SSSS

DSDS

ESES

如何分配各个逻辑段?如何分配各个逻辑段?

Page 59: 微型计算机原理 基于 16 位机

第 2 章:代码段寄存器 CS( Code Segment )

代码段用来存放程序的指令序列代码段寄存器 CS 存放代码段的段地址指令指针寄存器 IP 指示下条指令的偏移地址

处理器利用 CS:IP取得下一条要执行的指令

Page 60: 微型计算机原理 基于 16 位机

第 2 章:堆栈段寄存器 SS( Stack Segment )堆栈段确定堆栈所在的主存区域

堆栈段寄存器 SS 存放堆栈段的段地址堆栈指针寄存器 SP 指示堆栈栈顶的偏移地址

处理器利用 SS:SP 操作堆栈顶的数据

Page 61: 微型计算机原理 基于 16 位机

第 2 章:数据段寄存器 DS( Data Segment ) 数据段存放运行程序所用的数据

数据段寄存器 DS 存放数据段的段地址各种主存寻址方式(有效地址 EA )得到存储

器中操作数的偏移地址 处理器利用 DS:EA 存取数据段中的数据

Page 62: 微型计算机原理 基于 16 位机

第 2 章:附加段寄存器 ES( Extra Segment )附加段是附加的数据段,也保存数据:

附加段寄存器 ES 存放附加段的段地址各种主存寻址方式(有效地址 EA )得到存储

器中操作数的偏移地址 处理器利用 ES:EA 存取附加段中的数据串操作指令将附加段作为其目的操作数的

存放区域

Page 63: 微型计算机原理 基于 16 位机

第 2 章:如何分配各个逻辑段 程序的指令序列必须安排在代码段 程序使用的堆栈一定在堆栈段 程序中的数据默认是安排在数据段,也经常安排在附加段,尤其是串操作的目的区必须是附加段

数据的存放比较灵活,实际上可以存放在任何一种逻辑段中

演示演示

Page 64: 微型计算机原理 基于 16 位机

第 2 章:段超越前缀指令没有指明时,一般的数据访问在DS段;使用

BP 访问主存,则在 SS段默认的情况允许改变,需要使用段超越前缀

指令; 8088 指令系统中有 4 个:CS: ;代码段超越,使用代码段的数据SS: ;堆栈段超越,使用堆栈段的数据DS: ;数据段超越,使用数据段的数据ES: ;附加段超越,使用附加段的数据

示例示例

Page 65: 微型计算机原理 基于 16 位机

第 2 章:段超越的示例没有段超越的指令实例:MOV AX,[2000H] ;AX←DS:[2000H];从默认的 DS 数据段取出数据

采用段超越前缀的指令实例:MOV AX,ES:[2000H];AX←ES:[2000H];从指定的 ES附加段取出数据

总结总结

Page 66: 微型计算机原理 基于 16 位机

第 2 章:段寄存器的使用规定访问存储器的方式 默认 可超越 偏移地址

取指令 CS 无 IP

堆栈操作 SS 无 SP

一般数据访问 DS CS ES SS 有效地址 EA

BP 基址的寻址方式 SS CS ES DS 有效地址 EA

串操作的源操作数 DS CS ES SS SI

串操作的目的操作数 ES 无 DI

Page 67: 微型计算机原理 基于 16 位机

第 2 章:寄存器的总结 8088 有 8 个 8 位通用寄存器、 8 个 16 位

通用寄存器 8088 有 6 个状态标志和 3 个控制标志 8088 将 1MB 存储空间分段管理,有 4 个段寄存器,对应 4种逻辑段

8088 有 4 个段超越前缀指令,用于明确指定数据所在的逻辑段

熟悉上述内容后,就可以进入下节

内部图内部图

Page 68: 微型计算机原理 基于 16 位机

第 2章

指令系统指令系统

Page 69: 微型计算机原理 基于 16 位机

第 2 章: 2.2 8088/8086 的寻址方式 从 8088/8086 的指令格式入手,论述:

立即数寻址方式寄存器寻址方式存储器寻址方式

进而熟悉 8088/8086 汇编语言指令格式,尤其是其中操作数的表达方法

为展开 8088/8086 指令系统做好准备

Page 70: 微型计算机原理 基于 16 位机

第 2 章:指令的组成

操作码说明计算机要执行哪种操作,如传送、运算、移位、跳转等操作,它是指令中不可缺少的组成部分

操作数是指令执行的参与者,即各种操作的对象 有些指令不需要操作数,通常的指令都有一个或两

个操作数,也有个别指令有 3 个甚至 4 个操作数

操作码 操作数

指令由操作码和操作数两部分组成

Page 71: 微型计算机原理 基于 16 位机

第 2 章:指令的助记符格式

操作数 2,常被称为源操作数 src,它表示参与指令操作的一个对象

操作数 1,成被称为目的操作数 dest,它不仅可以作为指令操作的一个对象,还可以用来存放指令操作的结果

分号后的内容是对指令的解释

操作码 操作数 1 ,操作数 2 ;注释

汇编语句格式

Page 72: 微型计算机原理 基于 16 位机

第 2 章:指令的操作码和操作数

每种指令的操作码:用一个助记符表示(指令功能的英文缩写)对应着机器指令的一个或多个二进制编码

指令中的操作数:可以是一个具体的数值可以是存放数据的寄存器或指明数据在主存位置的存储器地址

Page 73: 微型计算机原理 基于 16 位机

第 2 章:操作数的寻址方式

指令系统设计了多种操作数的来源 寻找操作数的过程就是操作数的寻址 把寻找操作数的方式叫做(操作数)寻址方式 理解操作数的寻址方式是理解指令功能的前提 操作数采取哪一种寻址方式

一方面,会影响处理器执行指令的速度和效率 另一方面,对程序设计也很重要

MOV 指令

Page 74: 微型计算机原理 基于 16 位机

第 2 章: 2.2.1 立即数寻址方式 指令中的操作数直接存放在机器代码中,紧跟在操作码之后

(操作数作为指令的一部分存放在操作码之后的主存单元中)

这种操作数被称为立即数 imm可以是 8 位数值 i8 ( 00H ~ FFH )也可以是 16 位数值 i16 ( 0000H ~ FFFFH )

立即数寻址方式常用来给寄存器和存储单元赋值,多以常量形式出现

演示演示MOV AX, 0102H ; AX←0102H

Page 75: 微型计算机原理 基于 16 位机

第 2 章: 2.2.2 寄存器寻址方式 操作数存放在CPU 的内部寄存器 reg 中:

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

寄存器名表示其内容(操作数)

演示演示MOV AX, BX ; AX←BX

Page 76: 微型计算机原理 基于 16 位机

第 2 章: 2.2.3 存储器寻址方式 操作数在主存储器中,用主存地址表示 程序设计时, 8088 采用逻辑地址表示主存地址

段地址在默认的或用段超越前缀指定的段寄存器中 指令中只需给出操作数的偏移地址(有效地址 EA )

8086 设计了多种存储器寻址方式1 、直接寻址方式2 、寄存器间接寻址方式3 、寄存器相对寻址方式4 、基址变址寻址方式5 、相对基址变址寻址方式

Page 77: 微型计算机原理 基于 16 位机

第 2 章: 1. 直接寻址方式 直接寻址方式的有效地址在指令中直接给出 默认的段地址在DS段寄存器,可使用段超越前缀改变

用中括号包含有效地址,表达存储单元的内容

演示演示

MOV AX, [2000H] ; AX←DS:[2000H]

MOV AX, ES: [2000H]; AX←ES:[2000H]

Page 78: 微型计算机原理 基于 16 位机

第 2 章: 2. 寄存器间接寻址方式 有效地址存放在基址寄存器 BX 或变址寄

存器 SI 、 DI 中默认的段地址在 DS段寄存器,可使用段超越前缀改变

演示演示

MOV AX, [BX] ; AX←DS:[BX]

Page 79: 微型计算机原理 基于 16 位机

第 2 章: 3. 寄存器相对寻址方式 有效地址是寄存器内容与有符号 8 位或 16 位位移量之和,寄

存器可以是 BX 、 BP 或 SI 、 DI

有效地址= 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]

Page 80: 微型计算机原理 基于 16 位机

第 2 章: 4. 基址变址寻址方式 有效地址由基址寄存器( BX 或 BP )的内容加上变址寄存

器( SI 或 DI )的内容构成:有效地址= BX/BP+SI/DI

段地址对应 BX 基址寄存器默认是 DS ,对应 BP 基址寄存器默认是 SS;可用段超越前缀改变

演示演示

MOV AX, [BX+SI] ; AX←DS:[BX+SI]

MOV AX, [BX][SI] ; AX←DS:[BX+SI]

Page 81: 微型计算机原理 基于 16 位机

第 2 章: 5. 相对基址变址寻址方式 有效地址是基址寄存器( BX/BP )、变址寄存器

( SI/DI )与一个 8 位或 16 位位移量之和:有效地址= BX/BP+ SI/DI+ 8/16 位位移量

段地址对应 BX 基址寄存器默认是 DS ,对应 BP 基址寄存器默认是 SS;可用段超越前缀改变

演示演示

MOV AX, [BX+DI+6] ; AX←DS:[BX+DI+6]

MOV AX, 6[BX+DI] MOV AX, 6[BX][DI]

Page 82: 微型计算机原理 基于 16 位机

第 2 章:存储器寻址方式中的变量 变量指示内存中的数据,变量名具有地址属性。存储器寻找

方式中经常采用变量形式 变量的定义

WVAR DW 1234H;定义 16 位变量 WVAR ,具有初值 1234H;假设其偏移地址为 10H

单独引用变量名是直接寻址方式MOV AX,WVAR ;指令功能: AX = 1234H;等同于 MOV AX,[0010H]

相对寻址方式中,变量名表示其偏移地址,相当于位移量MOV AX, [DI+WVAR] ;= MOV AX,WVAR[DI];等同于 MOV AX,[DI+0010H]

Page 83: 微型计算机原理 基于 16 位机

第 2 章:相对寻址方式中的位移量

在寄存器相对和相对基址变址寻址方式中,其位移量不仅可用常量表示,也可用符号表示

这个符号可以是变量名,例如 WVAR变量,而且支持多种表达形式MOV AX, [DI+WVAR] ;;等同于 MOV AX, WVAR[DI]

MOV AX,[BX+SI+WVAR]

;等同于 MOV AX, WVAR[BX+SI]

;等同于 MOV AX, WVAR[BX][SI]

Page 84: 微型计算机原理 基于 16 位机

第 2 章:操作数的表达符号( 1 ) 操作数符号 含义(寻址方式)

i8 一个 8位立即数i16 一个 16位立即数

imm 代表 i8或 i16

r8 任意一个 8位通用寄存器AH, AL, BH, BL, CH, CL, DH, DL

r16 任意一个 16位通用寄存器AX, BX, CX, DX, SI, DI, BP, SP

reg 代表 r8或 r16

seg 段寄存器 CS、 DS、 ES、 SS

Page 85: 微型计算机原理 基于 16 位机

第 2 章:操作数的表达符号( 2 )操作数符号 含义(寻址方式)

m8 一个 8位存储器操作数单元(包括所有主存寻址方式)

m16 一个 16位存储器操作数单元(包括所有主存寻址方式)

mem 代表 m8或 m16

dest 目的操作数src 源操作数

掌握操作数的寻址方式后,进入指令学习

Page 86: 微型计算机原理 基于 16 位机
Page 87: 微型计算机原理 基于 16 位机

第 2章

指令系统指令系统

Page 88: 微型计算机原理 基于 16 位机

第 2 章: 2.3 数据传送类指令 数据传送是计算机中最基本、最重要的一种操作 ,传送指令也

是最常使用的一类指令 传送指令把数据从一个位置传送到另一个位置 除标志寄存器传送指令外,均不影响标志位 重点掌握

MOV XCHG XLAT PUSH POP LEA

Page 89: 微型计算机原理 基于 16 位机

第 2 章: 2.3.1 通用数据传送指令

提供方便灵活的通用传送操作有 3条指令通用数据传送 MOV

数据交换 XCHG

AL 与字节表间数据传送 XLAT

MOVMOV

XCHGXCHG XLATXLAT

Page 90: 微型计算机原理 基于 16 位机

第 2 章: 1. 传送指令 MOV ( move )

把一个字节或字的操作数从源地址传送至目的地址

MOV reg/mem,immMOV reg/mem,imm ;;立即数送寄存器或主存立即数送寄存器或主存MOV reg/mem,immMOV reg/mem,imm ;;立即数送寄存器或主存立即数送寄存器或主存

MOV reg/mem/seg,regMOV reg/mem/seg,reg ;;寄存器送(段)寄存寄存器送(段)寄存器或主存器或主存

MOV reg/mem/seg,regMOV reg/mem/seg,reg ;;寄存器送(段)寄存寄存器送(段)寄存器或主存器或主存MOV reg/seg,memMOV reg/seg,mem ;;主存送(段)寄存器主存送(段)寄存器MOV reg/seg,memMOV reg/seg,mem ;;主存送(段)寄存器主存送(段)寄存器

MOV reg/mem,segMOV reg/mem,seg ;段寄存器送寄存器或主存;段寄存器送寄存器或主存MOV reg/mem,segMOV reg/mem,seg ;段寄存器送寄存器或主存;段寄存器送寄存器或主存演示

MOV 指令传送功能图解

Page 91: 微型计算机原理 基于 16 位机

第 2 章: MOV 指令--立即数传送

mov cl,4 ;cl←4,字节传送mov dx,0ffh ;dx←00ffh,字传送mov si,200h ;si←0200h,字传送mov bvar,0ah;字节传送;假设bvar是一个字节变量,定义如下: bvar db 0mov wvar,0bh ;字传送;假设wvar是一个字变量,定义如下:wvar dw 0

明确指令是字节操作还是字操作

以字母开头的常数要有前导以字母开头的常数要有前导 00

MOV reg/mem,imm;立即数送寄存器或主存MOV reg/mem,imm;立即数送寄存器或主存

Page 92: 微型计算机原理 基于 16 位机

第 2 章: MOV 指令--寄存器传送

mov ah,al ; ah←al ,字节传送mov bvar,ch ; bvar←ch ,字节传送mov ax,bx ; ax←bx ,字传送mov ds,ax ; ds←ax ,字传送mov [bx],al ; [bx]←al ,字节传送

寄存器具有明确的字节和字类型

MOV reg/mem/seg,reg ;寄存器送(段)寄存器或主存

MOV reg/mem/seg,reg ;寄存器送(段)寄存器或主存

Page 93: 微型计算机原理 基于 16 位机

第 2 章: MOV 指令--存储器传送

mov al,[bx] ; al←ds:[bx]mov dx,[bp] ; dx←ss:[bp+0]mov dx,[bp+4] ; dx←ss:[bp+4]mov es,[si] ; es←ds:[si]

不存在存储器向存储器的传送指令

MOV reg/seg,mem;主存送(段)寄存器MOV reg/seg,mem;主存送(段)寄存器

Page 94: 微型计算机原理 基于 16 位机

第 2 章: MOV 指令--段寄存器传送

mov [si],ds

mov ax,ds ; ax←ds

mov es,ax ; es←ax←ds

对段寄存器的操作不灵活

MOV reg/mem,seg ;段寄存器送寄存器或主存MOV reg/mem,seg ;段寄存器送寄存器或主存

Page 95: 微型计算机原理 基于 16 位机

第 2 章: MOV 指令传送功能图解

MOVMOV 指令也并非任意传送指令也并非任意传送 !!立即数

段寄存器 DS ES SS

通用寄存器AX BX CX DXBP SP SI DI

存储器

非法指令的主要现象:

CS

两个操作数的类型不一致

无法确定是字节量还是字量操作

两个操作数都是存储器

段寄存器的操作有一些限制

Page 96: 微型计算机原理 基于 16 位机

第 2 章:非法指令--两个操作数类型不一致

在绝大多数双操作数指令中,目的操作数和源操作数必须具有一致的数据类型,或者同为字量,或者同为字节量,否则为非法指令MOV AL, 050AH ;非法指令,修正:

;mov ax,050ah

MOV SI, DL ;非法指令,修正:;mov dh,0

;mov si,dx

Page 97: 微型计算机原理 基于 16 位机

第 2 章:非法指令--无法确定是字节量还是字量操作当无法通过任一个操作数确定是操作类型时,需

要利用汇编语言的操作符显式指明MOV [BX+SI], 255 ;非法指令,修正:;mov byte ptr [bx+si],255

; byte ptr 说明是字节操作;mov word ptr [bx+si],255

;word ptr 说明是字操作

Page 98: 微型计算机原理 基于 16 位机

第 2 章:非法指令--两个操作数都是存储器 8088 指令系统除串操作指令外,不允许两个操作数都是

存储单元(存储器操作数)MOV buf2, buf1 ;非法指令,修正:;假设 buf2 和 buf1 是两个字变量;mov ax,buf1

;mov buf2,ax

;假设 buf2 和 buf1 是两个字节变量;mov al,buf1

;mov buf2,al

Page 99: 微型计算机原理 基于 16 位机

第 2 章:非法指令--段寄存器的操作有一些限制 8088 指令系统中,能直接对段寄存器操作的指令只有 MOV等个别传送指令,并且不灵活MOV DS, ES ;非法指令,修正:

;mov ax,es;mov ds,ax

MOV DS, 100H ;非法指令,修正:;mov ax,100h;mov ds,ax

MOV CS, [SI] ;非法指令;指令存在,但不能执行

Page 100: 微型计算机原理 基于 16 位机

第 2 章: 2. 交换指令 XCHG( exchange )

把两个地方的数据进行互换

寄存器与寄存器之间对换数据 寄存器与存储器之间对换数据 不能在存储器与存储器之间对换数据

XCHG reg,reg/mem; reg reg/mem

XCHG reg,reg/mem; reg reg/mem 演示演示

Page 101: 微型计算机原理 基于 16 位机

第 2 章:例 2.2 数据交换mov ax,1199h ; ax=1199hxchg ah,al ; ax=9911h;等同于 xchg al,ahmov wvar,5566h ;wvar是一个字量变量xchg ax,wvar ; ax=5566h,wvar=9911h;等同于 xchg wvar,ax xchg al,byte ptr wvar+1; ax=5599h,wvar=6611h;“byte ptr wvar+1”强制为字节量,只取高字节与 AL类型交换,否则数据类型不匹配

Page 102: 微型计算机原理 基于 16 位机

第 2 章: 3. 换码指令 XLAT ( translate ) 将 BX 指定的缓冲区中、 AL 指定的位移处的一个字节数

据取出赋给 AL

换码指令执行前:在主存建立一个字节量表格,内含要转换成的目的代码表格首地址存放于 BX , AL存放相对表格首地址的位移量

换码指令执行后:将 AL 寄存器的内容转换为目标代码

XLAT ;al←ds:[bx+al]XLAT ;al←ds:[bx+al]

演示演示

Page 103: 微型计算机原理 基于 16 位机

第 2 章: 2.3.2 堆栈操作指令堆栈是一个“后进先出 FILO”(或说“先

进后出 FILO”)的主存区域,位于堆栈段中; SS段寄存器记录其段地址

堆栈只有一个出口,即当前栈顶;用堆栈指针寄存器 SP 指定

堆栈只有两种基本操作:进栈和出栈,对应两条指令 PUSH 和 POP 图示图示

Page 104: 微型计算机原理 基于 16 位机

第 2 章:进栈指令 PUSH 进栈指令先使堆栈指针SP减 2 ,然后把一个字操作

数存入堆栈顶部

PUSH r16/m16/seg; SP←SP - 2; SS:[SP]←r16/m16/seg

PUSH r16/m16/seg; SP←SP - 2; SS:[SP]←r16/m16/seg

演示演示

push ax

push [2000h]

Page 105: 微型计算机原理 基于 16 位机

第 2 章:出栈指令 POP 出栈指令把栈顶的一个字传送至指定的目的操作数,然后堆栈指针SP加 2

POP r16/m16/seg; r16/m16/seg←SS:[S

P]; SP←SP + 2

POP r16/m16/seg; r16/m16/seg←SS:[S

P]; SP←SP + 2pop ax

pop wvar

演示演示

Page 106: 微型计算机原理 基于 16 位机

第 2 章:堆栈操作的特点 堆栈操作的单位是字,进栈和出栈只对字量 字量数据从栈顶压入和弹出时,都是低地址字节送低字节,

高地址字节送高字节 堆栈操作遵循先进后出原则,但可用存储器寻址方式随机存取堆栈中的数据

堆栈段是程序中不可或缺的一个内存区,常用来 临时存放数据 传递参数 保存和恢复寄存器

Page 107: 微型计算机原理 基于 16 位机

第 2 章: 2.3.3 标志操作指令

1. 标志位操作指令CLC ;复位进位标志: CF←0STC ;置位进位标志: CF←1CMC ;求反进位标志: CF←~CFCLD ;复位方向标志: DF←0STD ;置位方向标志: DF←1CLI ;复位中断标志: IF←0STI ;置位中断标志: IF←1

2. 标志寄存器低字节与 AH 的传送指令3. 标志寄存器出入堆栈指令

OF

1115 12

DF

10

IF

9

TF

8

SF

7

ZF

6 5

AF

4 3

PF

2 1

CF

0

Page 108: 微型计算机原理 基于 16 位机

2.3.3 标志寄存器传送指令

标志寄存器传送指令用来传送标志寄存器FLAGS 的内容,方便进行对各个标志位的直接操作

有 2对 4条指令低 8 位传送: LAHF 和 SAHF16 位传送: PUSHF 和 POPF

Page 109: 微型计算机原理 基于 16 位机

标志低字节进出 AH 指令

LAHF;AH←FLAGS 的低字节 LAHF 指令将标志寄存

器的低字节送寄存器 AH SF/ZF/AF/PF/CF 状态

标志位分别送入 AH 的第 7/6/4/2/0 位,而AH 的第 5/3/1 位任意

SAHF; FLAGS 的低字节← AH SAHF 将 AH 寄存器内容送 FLAGS 的低字节

用 AH 的第 7/6/4/2/0 位相应设置 SF/ZF/AF/ PF/CF 标志

第 2 章第 2 章

OF

1115 12

DF

10

IF

9

TF

8

SF

7

ZF

6 5

AF

4 3

PF

2 1

CF

0

Page 110: 微型计算机原理 基于 16 位机

标志寄存器进出堆栈指令

PUSHF; SP←SP - 2; SS:[SP]←FLAGS PUSHF 指令将标志

寄存器的内容压入堆栈,同时栈顶指针SP减 2

POPF; FLAGS←SS:[SP]; SP←SP + 2 POPF 指令将栈顶字

单元内容送标志寄存器,同时栈顶指针 SP加 2

例题例题

第 2 章第 2 章

Page 111: 微型计算机原理 基于 16 位机

2.3.4 地址传送指令 地址传送指令将存储器单元的逻辑地址送至指定的寄存器有效地址传送指令 LEA指针传送指令 LDS 和 LES

注意不是获取存储器单元的内容

Page 112: 微型计算机原理 基于 16 位机

有效地址传送指令LEA ( load EA )

将存储器操作数的有效地址传送至指定的 16 位寄存器中

例题例题

LEA r16,mem; r16←mem 的有效地址 EA

LEA r16,mem; r16←mem 的有效地址 EA

LEALEA

Page 113: 微型计算机原理 基于 16 位机

指针传送指令LDS r16,mem; r16←mem ,;DS←mem+2 LDS 指令将主存中

mem 指定的字送至r16 ,并将 mem 的下一字送DS 寄存器

LES r16,mem; r16←mem ,; ES←mem+2 LES 指令将主存中

mem 指定的字送至r16 ,并将 mem 的下一字送 ES 寄存器

例题例题

第 2 章第 2 章

Page 114: 微型计算机原理 基于 16 位机

2.3.5 输入输出指令 8086 通过输入输出指令与外设进行数据交换;呈

现给程序员的外设是端口( Port )即 I/O 地址 8086 用于寻址外设端口的地址线为 16条,端口

最多为 216 = 65536 ( 64K )个,端口号为 0000H~ FFFFH

每个端口用于传送一个字节的外设数据

Page 115: 微型计算机原理 基于 16 位机

输入输出寻址方式 8086 的端口有 64K 个,无需分段,设计有

两种寻址方式直接寻址:只用于寻址 00H ~ FFH前 256 个端

口,操作数 i8 表示端口号 间接寻址:可用于寻址全部 64K 个端口, DX寄

存器的值就是端口号 对大于 FFH 的端口只能采用间接寻址方式

Page 116: 微型计算机原理 基于 16 位机

输入指令 IN 将外设数据传送给 CPU 内的 AL/AX

IN AL,i8;字节输入: AL←I/O端口( i8直接寻址)IN AL,DX;字节输入: AL←I/O端口( DX 间接寻址)IN AX,i8;字输入: AX←I/O端口( i8直接寻址)IN AX,DX;字输入: AX←I/O端口( DX 间接寻址)

IN AL,i8;字节输入: AL←I/O端口( i8直接寻址)IN AL,DX;字节输入: AL←I/O端口( DX 间接寻址)IN AX,i8;字输入: AX←I/O端口( i8直接寻址)IN AX,DX;字输入: AX←I/O端口( DX 间接寻址)

ININ

例题例题

Page 117: 微型计算机原理 基于 16 位机

输出指令 OUT 将 CPU 内的 AL/AX 数据传送给外设

OUT i8,AL;字节输出: I/O端口← AL ( i8直接寻址)OUT DX,AL;字节输出: I/O端口← AL ( DX 间接寻址)OUT i8,AX;字输出: I/O端口← AX ( i8直接寻址)OUT DX,AX;字输出: I/O端口← AX ( DX 间接寻址)

OUT i8,AL;字节输出: I/O端口← AL ( i8直接寻址)OUT DX,AL;字节输出: I/O端口← AL ( DX 间接寻址)OUT i8,AX;字输出: I/O端口← AX ( i8直接寻址)OUT DX,AX;字输出: I/O端口← AX ( DX 间接寻址)

OUTOUT

例题例题

Page 118: 微型计算机原理 基于 16 位机

第 2章

指令系统指令系统

Page 119: 微型计算机原理 基于 16 位机

第 2 章: 2.4 算术运算类指令

算术运算类指令用来执行二进制的算术运算:加减乘除。

这类指令会根据运算结果影响状态标志,有时要利用某些标志才能得到正确的结果;使用他们时请留心有关状态标志

重点掌握加法指令: ADD 、 ADC 、 INC

减法指令: SUB 、 SBB 、 DEC 、 CMP 、 NEG

Page 120: 微型计算机原理 基于 16 位机

第 2 章: 2.4.1 加法和减法指令加法指令 :ADD, ADC 和 INC减法指令 :SUB, SBB, DEC, NEG 和 CMP他们分别执行字或字节的加法和减法运算,除 I

NC 和 DEC 不影响 CF标志外,其他按定义影响全部状态标志位

操作数组合:运算指令助记符 reg, imm/reg/mem

运算指令助记符 mem, imm/reg

Page 121: 微型计算机原理 基于 16 位机

第 2 章: 1. 加和减指令 ADD dest,src

;加法: dest←dest+ src; ADD 指令使目的操作数加上源操作数,和的结

果送到目的操作数

SUB dest,src

;减法: dest←dest- src; SUB 指令使目的操作数减去源操作数,差的结

果送到目的操作数

Page 122: 微型计算机原理 基于 16 位机

第 2 章:例题 2.7 加法mov ax,7348h ; AX = 7348H

add al,27h

; AL = 48H+ 27H = 6FH , AX = 736FH

; OF = 0 , SF = 0 , ZF = 0 , PF = 1 ,CF = 0

add ax,3fffh

; AX = 736FH+ 3FFFH = B36EH

; OF = 1 , SF = 1 , ZF = 0 , PF = 0 ,CF = 0

Page 123: 微型计算机原理 基于 16 位机

第 2 章:例题 2.7 减法sub ah,0f0h

;AH = B3H-F0H = C3H , AX = C36EH

;OF = 0 , SF = 1 , ZF = 0 , PF = 1 , CF = 1

mov word ptr[200h],0ef00h

; [200H] = EF00H ,标志不变sub [200h],ax

; [200H] = EF00H-C36EH = 2B92H

;OF = 0 , SF = 0 , ZF = 0 , PF = 0 , CF = 0

sub si,si ;SI = 0

;OF = 0 , SF = 0 , ZF = 1 , PF = 1 , CF = 0

Page 124: 微型计算机原理 基于 16 位机

第 2 章: 2. 带进位加和减指令 ADC dest,src

;加法: dest←dest+ src+CF

; ADC 指令除完成 ADD加法运算外,还要加上进位 CF ,结果送到目的操作数

SBB dest,src;减法: dest←dest- src-CF

; SBB 指令除完成 SUB减法运算外,还要减去借位 CF ,结果送到目的操作数

Page 125: 微型计算机原理 基于 16 位机

第 2 章: 3. 比较指令 CMP ( compare )CMP dest,src

;做减法运算: dest- src

; CMP 指令将目的操作数减去源操作数,但差值不回送目的操作数

比较指令通过减法运算影响状态标志,用于比较两个操作数的大小关系

cmp ax,bxcmp al,100cmp ax,bxcmp al,100

Page 126: 微型计算机原理 基于 16 位机

第 2 章: 4. 增量和减量指令INC reg/mem

;增量(加 1 ): reg/mem←reg/mem+ 1

DEC reg/mem;减量(减 1 ): reg/mem←reg/mem- 1

INC 指令和 DEC 指令是单操作数指令 与加法和减法指令实现的加 1 和减 1 不同的是: INC 和 DEC 不影响CF标志

inc si ; si←si + 1dec byte ptr [si] ; [si]←[si] - 1inc si ; si←si + 1dec byte ptr [si] ; [si]←[si] - 1

Page 127: 微型计算机原理 基于 16 位机

第 2 章: 5. 求补指令 NEG ( negtive )NEG reg/mem

; reg/mem←0- reg/mem NEG 指令对操作数执行求补运算,即用零减去操

作数,然后结果返回操作数求补运算也可以表达成:将操作数按位取反后加 1 NEG 指令对标志的影响与用零作减法的 SUB 指令

一样 NEG 指令也是一个单操作数指令

Page 128: 微型计算机原理 基于 16 位机

第 2 章: 2.4.3 乘法和除法指令 乘法指令分无符号和有符号乘法指令

MUL reg/mem ;无符号乘法IMUL reg/mem ;有符号乘法

除法指令分无符号和有符号除法指令DIV reg/mem ;无符号除法IDIV reg/mem ;有符号除法

Page 129: 微型计算机原理 基于 16 位机

第 2 章: 2.5 位操作类指令 位操作类指令以二进制位为基本单位进行数据的操作 当需要对字节或字数据中的各个二进制位操作时,可以考虑采用位操作类指令

注意这些指令对标志位的影响1. 逻辑运算指令AND OR XOR NOT TEST

2. 移位指令SHL SHR SAR

3. 循环移位指令ROL ROR RCL RCR

Page 130: 微型计算机原理 基于 16 位机

第 2 章: 2.5.1 逻辑运算指令双操作数逻辑指令 AND 、 OR 、 XOR 和 TEST 设置

CF = OF = 0 ,根据结果设置SF 、 ZF 和 PF 状态,而对 AF未定义;它们的操作数组合与 ADD 、 SUB等一样:运算指令助记符 reg, imm/reg/mem

运算指令助记符 mem, imm/reg 单操作数逻辑指令 NOT 不影响标志位,操作数与 IN

C 、 DEC 和 NEG 一样:NOT reg/mem

Page 131: 微型计算机原理 基于 16 位机

第 2 章:逻辑与指令 AND对两个操作数执行逻辑与运算,结果送目的操作数

AND dest,src ; dest←dest∧srcAND dest,src ; dest←dest∧src

只有相“与”的两位都是 1 ,结果才是 1 ;否则,“与”的结果为 0

Page 132: 微型计算机原理 基于 16 位机

第 2 章:逻辑或指令 OR对两个操作数执行逻辑或运算,结果送目的操作数

OR dest,src ; dest←dest∨srcOR dest,src ; dest←dest∨src

只要相“或”的两位有一位是 1 ,结果就是1;否则,结果为 0

Page 133: 微型计算机原理 基于 16 位机

第 2 章:逻辑异或指令 XOR对两个操作数执行逻辑异或运算,结果送目的操作数

XOR dest,src ; dest←dest⊕srcXOR dest,src ; dest←dest⊕src

只有相“异或”的两位不相同,结果才是 1;否则,结果为 0

Page 134: 微型计算机原理 基于 16 位机

第 2 章:测试指令 TEST 对两个操作数执行逻辑与运算,结果并不送目的操作数,仅按 AND 指令影响标志

TEST dest,src ; dest∧srcTEST dest,src ; dest∧src

AND与 TEST 指令的关系,同 SUB与 CMP 指令的关系一样

Page 135: 微型计算机原理 基于 16 位机

第 2 章:逻辑非指令 NOT对一个操作数执行逻辑非运算

NOT reg/mem ; reg/mem← ~ reg/memNOT reg/mem ; reg/mem← ~ reg/mem

按位取反,原来是 “ 0” 的 位变为“ 1” ; 原 来 是“ 1” 的 位 变 为“ 0”

Page 136: 微型计算机原理 基于 16 位机

第 2 章:例 2.6 逻辑运算mov al,75h ; AL = 75H

and al,32h ; AL = 30H

;CF = OF = 0, SF = 0 , ZF = 0 , PF = 1

or al,71h ; AL = 71H

;CF = OF = 0 , SF = 0 , ZF = 0 , PF =1

xor al,0f1h ; AL = 80H

;CF = OF = 0 , SF = 1 , ZF = 0 , PF =0

not al ; AL = 7FH ,标志不变

Page 137: 微型计算机原理 基于 16 位机

第 2 章: 例 2.17 逻辑运算指令的应用and bl,11110110b

;BL 中 D0 和 D3清 0 ,其余位不变or bl,00001001b

;BL 中 D0 和 D3置 1 ,其余位不变xor bl,00001001b

;BL 中 D0 和 D3求反,其余位不变

AND 指令可用于复位某些位(同 0相与),不影响其他位

OR 指令可用于置位某些位(同 1相或),不影响其他位 XOR 指令可用于求反某些位(同 1相异或),不影响其他

Page 138: 微型计算机原理 基于 16 位机

第 2 章: 2.5.2 移位指令 将操作数移动一位或多位,分成逻辑移位和算术移位,

分别具有左移或右移操作移位指令的第一个操作数是指定的被移位的操作数,可

以是寄存器或存储单元;后一个操作数表示移位位数:该操作数为 1 ,表示移动一位该操作数为 CL , CL寄存器值表示移位位数 (移位位数大于

1 只能 CL 表示)按照移入的位设置进位标志CF ,根据移位后的结果影响SF 、 ZF 、 PF

Page 139: 微型计算机原理 基于 16 位机

第 2 章:逻辑左移指令 SHLSHL reg/mem,1/CL

; reg/mem左移 1 或 CL 位;最低位补 0 ,最高位进入 CF

演示演示

Page 140: 微型计算机原理 基于 16 位机

第 2 章:逻辑右移指令 SHRSHR reg/mem,1/CL

; reg/mem右移 1/CL 位;最高位补 0 ,最低位进入 CF

演示演示

Page 141: 微型计算机原理 基于 16 位机

第 2 章:算术左移指令 SALSAL reg/mem,1/CL

;与 SHL 是同一条指令演示演示

Page 142: 微型计算机原理 基于 16 位机

第 2 章:算术右移指令 SARSAR reg/mem,1/CL

; reg/mem右移 1/CL 位;最高位不变,最低位进入 CF

演示演示

Page 143: 微型计算机原理 基于 16 位机

第 2 章:例 2.18 数据移位mov dx,6075h ;DX = 01100000 01110101B

shl dx,1 ;DX = 11000000 11101010B;CF = 0 , SF = 1 、 ZF = 0 、 PF = 0

sar dx,1 ;DX = 11100000 01110101B;CF = 0 , SF = 1 、 ZF = 0 、 PF = 0

shr dx,1 ;DX = 01110000 00111010B;CF = 1 , SF = 0 、 ZF = 0 、 PF = 1

mov cl,4 ;CL = 4 ,标志不变sar dx,cl ;DX = 00000111 00000011B;CF = 1 , SF = 0 、 ZF = 0 、 PF = 1

Page 144: 微型计算机原理 基于 16 位机

第 2 章:例 2.19 将 AL寄存器中的无符号数乘以 10xor ah,ah ;实现 AH = 0 ,同时使 CF = 0

shl ax,1 ;AX←2×AL

mov bx,ax ;BX←AX = 2×AL

shl ax,1 ;AX←4×AL

shl ax,1 ;AX←8×AL

add ax,bx ;AX←8×AL+ 2×AL = 10×AL

sub ah,ahand ah,0sub ah,ahand ah,0

逻辑左移一位相当于无符号数乘以 2 逻辑右移一位相当于无符号数除以 2

Page 145: 微型计算机原理 基于 16 位机

第 2 章: 2.5.3 循环移位指令循环移位指令类似移位指令,但要将从一端移出的

位返回到另一端形成循环。分为 :ROL reg/mem,1/CL ; 不带进位循环左移ROR reg/mem,1/CL ; 不带进位循环右移RCL reg/mem,1/CL ;带进位循环左移RCR reg/mem,1/CL ;带进位循环右移

循环移位指令的操作数形式与移位指令相同,按指令功能设置进位标志CF ,但不影响 SF 、 ZF 、 PF 、AF标志

演示演示

演示演示

演示演示

演示演示

Page 146: 微型计算机原理 基于 16 位机

第 2 章: 32 位数据移位;将 DX.AX 中 32位数值左移一位shl ax,1rcl dx,1

DX AXCF

0

考虑32

位数据的右移等操作

Page 147: 微型计算机原理 基于 16 位机
Page 148: 微型计算机原理 基于 16 位机