32位汇编语言

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第1章 汇编语言基础
1.1 英特尔80x86处理器 1.2 个人计算机系统 1.3 汇编语言程序格式
第1章 汇编语言基础
了解软硬件开发环境 熟悉通用寄存器和存储器组织 掌握汇编语言的 语句格式、程序框架和开发方法

1.1 英特尔80x86处理器
Intel 64处理器
Intel 8086
酷睿多核系列 奔腾多核系列
主存空间
堆栈段 数据段 指令段
程 序
17
第1章 汇编语言基础
1.2.3 存储器组织
• 主存储器容量很大,被划分成许多存储单元 • 每个存储单元被编排一个号码

即存储单元地址 称为存储器地址(Memory Address) 即字节编址(Byte Addressable) 一个字节(Byte)等于8个二进制位(Bit) 二进制位是计算机存储信息的最小单位 16位(2个字节)构成一个字(Word) 32位(4个字节)构成一个双字(Double Word)示意图
指令判断这些条件实现程序分支
15 12 11 10 9 8 7 6 5 4 3 2 1 0
OF DF IF TF SF ZF
0
AF
0
PF
1
CF
8086的标志
15
第1章 汇编语言基础
3. 指令指针寄存器EIP
• 保存将要执行的指令在主存的存储器地址 • EIP是专用寄存器


顺序执行时自动增量(加上该指令的字节数), 指向下一条指令 分支、调用等操作时执行控制转移指令修改,引 起程序转移到指定的指令执行 出现中断或异常时被处理器赋值而相应改变
累加器 基址寄存器 计数器 数据寄存器 源变址寄存器 目的变址寄存器 基址指针 堆栈指针
第1章 汇编语言基础
2. 标志寄存器
• 标志(Flag)



反映指令执行结果或控制指令执行形式 用一个或多个二进制位表示一种标志 用0和1的不同组合表达标志的不同状态
• 8086支持16位标志寄存器FLAGS • IA-32处理器形成32位EFLAGS标志寄存器
• 高级语言(High

33
Level Language)
面向问题的程序设计语言 需要“编译”或“解释”后执行
第1章 汇编语言基础
汇编语言和高级语言的比较
• 汇编语言与处理器密切相关,可移植性较差
高级语言与具体计算机无关,便于移植 • 汇编语言功能有限、涉及硬件细节,编写繁琐困难 高级语言功能强大,语法自然,容易掌握和应用 • 汇编语言的优势:直接、有效地控制硬件,容易产 生运行速度快、指令序列短小的高效率目标程序 高级语言不易直接控制计算机的各种操作,编译 程序产生的目标程序往往比较庞大
4. 段选择器
• 16位段寄存器保存16位段选择器 • 段选择器指向64位段描述符(Descriptor) • 段描述符包括段基地址

平展存储模型:指向地址0位置 段式存储模型:指向线性地址空间不同的段 实地址存储模型:保存段基地址的高16位
段寄存器 段描述符 主存空间
段选择器 段基地址
27
(2)段式存储模型(Segmented Memory Model)



(3)实地址存储模型(Real-address Memory Model)


8086处理器的存储模型 段式存储模型的特例 线性地址空间最大为1MB容量,段最大为64KB
第1章 汇编语言基础
22
2. 工作方式
(1)保护方式(Protected Mode)
• 操作系统利用存储管理单元进行存储管理,程序并
不直接寻址物理存储器 • IA-32 处理器提供 3 种存储模型,用于程序访问存储 器
示意图
20
第1章 汇编语言基础
IA-32处理器的存储模型
(1)平展存储模型(Flat Memory Model)


存储器是一个连续的地址空间:线性地址空间 IA-32处理器支持4GB容量线性地址空间 存储器由一组独立的地址空间:段(Segment) 每个段都可以达到4GB容量 在处理器内部,所有的段都被映射到线性地址空间
应用程序起始地址
32
第1章 汇编语言基础
1.2.4 程序设计语言
• 机器语言(Machine

Language)

底层的计算机语言,对应机器指令 指令是处理器的母语 形成目标(代码)程序
• 汇编语言(Assembly

Language)
将机器指令用助记符号代替而形成的一种语言 本质上是机器语言 mov eax,100 add eax,256 需要汇编程序“汇编”(翻译)
(2)实地址方式(Real-address Mode)



(3)系统管理方式(System Management Mode)

23
实现供节能和系统安全管理
第1章 汇编语言基础
3. 逻辑地址(Logical Address)
• 在处理器内部、程序员编程时采用的地址 • 逻辑地址=段基地址∶偏移地址
10
8个32位通用寄存器 6个16位段寄存器 1个32位标志寄存器 1个32位指令指针 第1章 汇编语言基础
1. 通用寄存器
• 处理器最常使用的整数通用寄存器 • 可用于保存整数数据、地址等 • 8个32位通用寄存器
EAX,EBX,ECX,EDX ESI,EDI,EBP,ESP • 8个16位通用寄存器 AX,BX,CX,DX 31 SI,DI,BP,SP • 8个8位通用寄存器 AH,BH,CH,DH AL,BL,CL,DL
数据或指令
第1章 汇编语言基础
平展模型
• 平展存储模型是分段存储模型的一种
特例 • 所有的段都有相同的段基地址(基地 址为0),都重合于同一个线性地址空 间 •IA-32 微处理器上运行的应用程序, 广泛采用平展存储模型。
28
第1章 汇编语言基础
• 分页机制
• 不采用分页管理机制,线性地址就是
对应的物理地址空间 • 采用了分页管理机制,则要将线性空 间地址映射到物理地址 • 当微处理器既采用段式存储管理,又 采用页式存储管理就是段页式存储管 理方式
• 可编程(Programmable)寄存器


对应用人员不可见、不能编程直接控制 具有引用名称、供编程使用 通用寄存器(General-Purpose Register) 具有多种用途 数量较多、使用频度较高 专用寄存器 各自只用于特定目的
第1章 汇编语言基础

9
IA-32常用寄存器
29
第1章 汇编语言基础
• 分页
线性地址空间
段1 段2
页目录
线性地址
页表 偏移量
物理地址空间

页表
页目录
段3
+
物理地址
入口
入口

30
第1章 汇编语言基础
存储器模型与工作模式
实模式
实地址模型
虚拟8086模式 保护模式 工作模式
31
分段模型
平展模型
段页模型 存储器模型
第1章 汇编语言基础
5. Win32的虚拟地址分配
11ቤተ መጻሕፍቲ ባይዱ
既是一个整体 又可独立使用
16 15 87 0
AH AX
AL
EAX
第1章 汇编语言基础
通用寄存器的名称
EAX EBX ECX EDX ESI EDI EBP ESP
12
Accumulator Base Counter Data Source Index Destination Index Base Pointer Stack Pointer

状态标志:记录指令执行结果的辅助信息 控制标志:方向标志DF,仅用于串操作指令 系统标志:控制操作系统或核心管理程序的操作 方式
示意图 第1章 汇编语言基础
13
处理器最基本的标志:状态标志
• 用来记录指令执行结果的辅助信息 • 加减运算和逻辑运算指令主要设置它们 • 其他有些指令的执行也会相应地设置它们 • 处理器主要使用其中5个构成各种条件,分支
• 80486集成浮点处理单元支持浮点指令 • Pentium系列

陆续增加若干整数指令、完善浮点指令 增加一系列多媒体指令(SIMD指令) IA-32(Intel Architecture-32)
5
第1章 汇编语言基础
1.1.3 Intel 64处理器
• 引入64位英特尔指令集结构


兼容32位指令系统 新增64位工作方式

段基地址=在主存中的起始地址 偏移地址=距离段基地址的位移量
• 某个存储单元可以有多个逻辑地址,但只有一
个唯一的物理地址
编程使用 处理器转换 地址总线输出
逻辑地址
24
线性地址
物理地址
示意图 第1章 汇编语言基础
基本段的逻辑地址
• 代码段(Code

Segment)
主存空间

段基地址:代码段寄存器CS指示 偏移地址:指令指针寄存器EIP保存
31 16 15 0
IP EIP
16
第1章 汇编语言基础
4. 段寄存器
• 段(Segment )是用于安排相关代码或数据的
一个主存区域 • 段寄存器表明某个段在主存中的位置 • 6个16位段寄存器:CS DS SS ES FS • 应用程序主要涉及3类段

GS


代码段(Code Segment) 存放程序中指令代码 数据段(Data Segment) 存放当前运行程序所用数据 堆栈段(Stack Segment) 指明程序使用的堆栈区域

IA-32处理器固有的工作状态 具有强大的段页式存储管理和特权与保护能力 使用全部32条地址总线,可寻址4GB物理存储器 使用平展或段式存储模型 利用虚拟8086方式支持实地址8086软件 可以进行32位处理的快速8086 只能寻址1MB物理存储器空间,每个段不超过64KB 可以使用32位寄存器、32位操作数和32位寻址方式 只能支持实地址存储模型
• 数据段(Data


堆栈段 数据段
指令段
Segment)
程 序
段基地址:数据段寄存器DS指示
有时也用附加段寄存器ES,段寄存器FS和GS指示

偏移地址:各种存储器寻址方式计算出来
• 堆栈段(Stack

26
Segment)
段基地址:堆栈段寄存器SS指示 偏移地址:堆栈指针寄存器ESP保存
第1章 汇编语言基础
• 继续丰富多媒体指令 • 处理器集成多核(Multi-core)技术
Many core
处理器进入多核时代
6
第1章 汇编语言基础
1.2 个人计算机系统
• 硬件(Hardware):物理设备 • 软件(Software):程序和文档
微型计算机系统 微型计算机
运算器 控制器 寄存器组
主存储器 总线 输入输出接口电路
奔腾4 奔腾III 奔腾II 奔腾 80486 80386 IA-32处理器
80286 8086 4004
3
16位80x86处理器
第1章 汇编语言基础
1.1.1 16位80x86处理器
• 16位结构处理器 • 8086/8088指令系统提供16位基本指令集 • 80186/80188增加若干条实用指令 • 8086的工作方式是实方式(Real Mode) • 80286增加保护方式(Protected Mode) • 80286引入了系统指令
微处理器
外部设备
7
软件
第1章 汇编语言基础
1.2.1 硬件组成
系统总线 CPU 运算器 主存储器 辅助存储器 I/O 接 口 输入设备 输出设备
控制器 寄存器
汇编语言程序员将硬件抽象为: 寄存器、存储器地址和输入输出地址
8
第1章 汇编语言基础
1.2.2 寄存器(Register)
• 处理器内部的高速存储单元 • 用于暂时存放程序执行过程中的代码和数据 • 透明寄存器
第1章 汇编语言基础
• 每个存储单元以字节为基本存储单位

18
1. 存储模型
• 物理存储器以字节为基本存储单位 • 每个存储单元被分配一个唯一的地址 • 这个地址就是物理地址 • 物理地址空间从0开始顺序编排,直到处理器支持的
最大存储单元

8086处理器支持1MB存储器:00000H~FFFFFH IA-32处理器支持4GB存储器:00000000H~FFFFFFFFH

为操作系统等核心程序提供处理器控制功能 指令系统、指令集(Instruction Set)
4
第1章 汇编语言基础
1.1.2 IA-32处理器
• 80386引入英特尔32位指令集结构ISA



兼容原16位80286指令系统 全面升级为32位 提供虚拟8086工作方式(Virtual 8086 Mode)

混合编程、取长补短
35
学习汇编语言的意义
第1章 汇编语言基础
汇编语言的主要应用场合
• 程序要具有较快的执行时间,或者只能占用较
小的存储容量 • 程序与计算机硬件密切相关,程序要直接、有 效地控制硬件 • 大型软件需要提高性能、优化处理的部分 • 没有合适的高级语言、或只能采用汇编语言的 时候 • 分析具体系统尤其是该系统的低层软件、加密 解密软件、分析和防治计算机病毒等等
相关文档
最新文档