文档章节

《汇编语言》第2章

UFO2048
 UFO2048
发布于 2014/09/23 13:59
字数 1767
阅读 32
收藏 0

在CPU中:

  • 运算器进行信息处理

  • 寄存器进行信息存储

  • 控制器控制各种器件进行工作

  • 内部总线连接各种器件,在它们之间进行数据的传送

8086CPU 有 14个寄存器:AX、BX、CX、DX、SI、DI、SP、BP、IP、CS、SS、DS、ES、PSW。

2.1 通用寄存器

8086CPU 的所有寄存器都是16位的,可以存放2个字节。
AX、BX、CX、DX 通常存放一般性的数据。被称为通用寄存器。
8086CPU的上一代CPU中的寄存器都是8位的,为了保证兼容性,8086CPU的AX、BX、CX、DX这四个寄存器都可以分为2个可独立使用的8位寄存器来用:

  • AX可分为AH和AL;

  • BX可分为BH和BL;

  • CX可分为CH和CL;

  • DX可分为DH和DL;

学习扩展

8086 有14个16位寄存器,这14个寄存器按其用途可分为4类:通用寄存器、指令指针、标志寄存器、段寄存器。

通用寄存器有8个,又可以分成2组,一组是数据寄存器(4个),另一组是指针寄存器及变址寄存器(4个)。

顾名思义,通用寄存器是那些你可以根据自己的意愿使用的寄存器,修改他们的值通常不会对计算机的运行造成很大的影响。

数据寄存器分为:

  • AH&AL=AX(accumulator):累加寄存器,常用于运算;在乘除等指令中指定用来存放操作数,另外,所有的 I/O 指令都使用这一寄存器与外界设备传送数据。

  • BH&BL=BX(base):基址寄存器,常用于地址索引。

  • CH&CL=CX(count)计数寄存器,常用于计数;常用于保存计算值,如在移位指令、循环(loop)和串处理指令中用作隐含的计数器。

  • DH&DL=DX(data):数据寄存器,常用于数据传递。

他们的特点是,这4个16位的寄存器可以分为高8位: AH, BH, CH, DH.以及低八位:AL,BL,CL,DL。这2组8位寄存器可以分别寻址,并单独使用。

另一组是指针寄存器和变址寄存器,包括:

  • SP(Stack Pointer):堆栈指针,与SS配合使用,可指向目前的堆栈位置

  • BP(Base Pointer):基址指针寄存器,可用作SS的一个相对基址位置

  • SI(Source Index):源变址寄存器,可用来存放相对于DS段之源变址指针

  • DI(Destination Index):目的变址寄存器,可用来存放相对于ES 段之目的变址指针。

这4个16位寄存器只能按16位进行存取操作,主要用来形成操作数的地址,用于堆栈操作和变址运算中计算操作数的有效地址。

2.2 字在寄存器中的存储

字节:记为byte,由8个bit组成。

字:记为word,分为高位字节和低位字节。
任务:练习二进制、十六进制、十进制之间转换。

2.4 物理地址

所有的内存单元构成的存储空间是一个一维的线性空间,每一个内存单元在这个空间中都有唯一的地址,我们将这个唯一的地址称为物理地址。
CPU访问内存单元时,必须向内存提供内存单元的物理地址。8086CPU 在内部用段地址和偏移地址移位相加的方法形成最终的物理地址。不同CPU可以有不同的形成物理地址的方式。

2.5 16位结构的CPU

16位结构(16位机字长为16位等常见说法,与16位结构的含义相同)描述了一个CPU具有下面几方面的结构特性。

  • 运算器一次最多可以处理16位的数据;

  • 寄存器的最大宽度为16位。

2.6 8086CPU给出物理地址的方法

物理地址=段地址×16+偏移地址
其本质含义是:CPU在访问内存时,用一个基础地址(段地址×16)和一个相对于基础地址的偏移地址相加,给出内存单元的物理地址。

2.8 段的概念

在编程时可以根据需要,将若干地址连续的内存单元看作一个段,用段地址×16定位段的起始地址(基础地址),用偏移地址定位段中的内存单元。
注意两点:段地址×16必然是16的倍数,所以一个段的起始地址也一定是16的倍数;偏移地址为16位,16位地址的寻址能力为64KB,所以一个段的长度最大为64KB。
CPU可以用不同的段地址和偏移地址形成同一个物理地址。
可以根据需要,将地址连续、起始地址为16的倍数的一组内存单元定义为一个段。

2.9 段寄存器

段地址在8086CPU的段寄存器中存放。当8086CPU 要访问内存时,由段寄存器提供内存单元的段地址。
8086CPU 有4个段寄存器:CS、DS、SS、ES。其中CS用来存放指令的段地址。
CS(Code Segment):代码段寄存器
DS(Data Segment):数据段寄存器
SS(Stack Segment):堆栈段寄存器
ES(Extra Segment):附加段寄存器

2.10 CS和IP

CS存放指令的段地址,IP存放指令的偏移地址。

8086机中,任意时刻,CPU将CS:IP指向的内容当作指令执行。

8086CPU的工作过程:

①从CS:IP指向的内存单元读取指令,读取的指令进入指令缓冲器;

②IP指向下一条指令;

③执行指令。(转到步骤①)

下面用图2.11~2.19来说明。

2.11 修改CS、IP的指令

传送指令:如mov指令等,不能用来修改CS、IP。原因是8086CPU 没有提供这样的功能。(?)

转移指令:如jmp指令等,可以用来修改CS、IP。

2.12 代码段

将一个段用来存放代码,从而定义了一个代码段。

实验一

主要是学习debug的使用,并跟踪程序的运行。该实验已完成。

Debug工具

Debug是DOS‘Windows都提供的实模式程序的调试工具。使用它,可以查看CPU各种寄存器中的内容、内存的情况和在机器码级跟踪程序的运行。

暂时掌握以下Debug功能。

  • 用 R 命令查看、改变CPU寄存器的内容;

  • 用 D 命令查看内存中的内容;

  • 用 E 命令改写内存中的内容;

  • 用 U 命令将内存中的机器指令翻译成汇编指令;

  • 用 T 命令执行一条机器指令;

  • 用 A 命令以汇编指令的个事在内存中写入一条机器指令。

Debug 比较强大,功能较多,以后有需要再详细学习。

注意:64位系统已经没有Debug了,据说是不支持16位。

© 著作权归作者所有

UFO2048
粉丝 0
博文 15
码字总数 12411
作品 0
唐山
私信 提问
JVM规范系列第3章:为Java虚拟机编译

Oracle 的 JDK 包括两部分内容:一部分是将 Java 源代码编译成 Java 虚拟机的指令集的编译器,另一部分是用于Java 虚拟机的运行时环境。 第一部分应该说的是 Javac 这个前置编译器,用于将J...

陈树义
2018/12/19
0
0
阅读《深入理解程序设计使用linux汇编语言》

以前有过,对熟悉汇编后的幻想。 如果会汇编,能打印coredmp文件里函数参数(没有用gcc -g 编译)的就好了。。 好吧,现在满足自己的心愿。 开始时间:6,30 结束时间:8,30 状态:closed 第3...

guonaihong
2015/06/30
497
2
深入理解程序设计使用linux汇编语言--第3章练习题

1.程序中的某一行以字符"#"开始意味着什么? 以字符"#"开头在汇编语言中是注释,汇编程序不会对注释进行任何处理。 2.汇编语言文件和对象代码之间有何区别? 汇编语言文件里的汇编语言是方便...

guonaihong
2015/07/05
212
0
【计算机类】大学生计算机专业电子书汇总

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 https://blog.csdn.net/dengjin20104042056/article/details/95334387 00. 目录 文章目录 本...

沧海一笑-dj
07/10
0
0
Python学习笔记-Day1

初识Python 第1章 初识Python 1.1什么是编程? 编程的目的就是:让机器按照人们事先为其编写好的程序自发地去工作。 1.2编程语言分为哪些种类? 1.2.1机器语言 机器语言是用二进制代码表示的...

白马探花M10
2017/07/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

【jQuery基础学习】05 jQuery与Ajax以及序列化

本文转载于:专业的前端网站➭【jQuery基础学习】05 jQuery与Ajax以及序列化 好吧,这章不像上章那么水了,总是炒剩饭也不好。 关于AJAX 所谓Ajax,全名Asynchronous JavaScript and XML。(也...

前端老手
20分钟前
9
0
CVE-2019-14287(Linux sudo 漏洞)分析

作者:lu4nx@知道创宇404积极防御实验室 作者博客:《CVE-2019-14287(Linux sudo 漏洞)分析》 原文链接:https://paper.seebug.org/1057/ 近日 sudo 被爆光一个漏洞,非授权的特权用户可以...

极客君
21分钟前
6
0
关于分布式,你需要知道的真相

目录 一、分布式锁 数据库的唯一索引 Redis 的 SETNX 指令 Redis 的 RedLock 算法 Zookeeper 的有序节点 二、分布式事务 2PC 本地消息表 三、CAP 一致性 可用性 分区容忍性 权衡 四、BASE 基...

李红欧巴
21分钟前
7
0
读书笔记:深入理解ES6 (附录B)

附录B:了解ES7(2016)   ES6经历了4年的发展,之后TC-39决定将发布周期转换为每年一版,以确保新语言特性能够更快地发展。   ES6中添加了三个语法特性,下面一一来讲。 第1节 指数运算...

张森ZS
27分钟前
12
0
计算机公开课推荐 2019.8

欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远。 ApacheCN 面试求职交流群 724187166 ApacheCN 学习资源 编程 哈佛 CS50:计算机科学导论 视频 MIT 6.00.1x:计算机科...

ApacheCN_飞龙
28分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部