码迷,mamicode.com
首页 > 其他好文 > 详细

汇编-8086内部寄存器+对段寄存器使用的约定

时间:2016-02-08 09:45:40      阅读:140      评论:0      收藏:0      [点我收藏+]

标签:

《微型计算机原理与接口技术(第2版)》冯博琴 吴宁 主编-清华大学出版社——做笔记用

一、8088/8086的14个16位寄存器: 

技术分享

 

//-------------------------------------------------------------------------------------------------------------------------------

1、通用寄存器——8个

(1)数据寄存器——4个

  AX:  累加器,常用于存放算数逻辑运算中的操作数,另外所有的I/O指令都使用累加器与外设接口传送信息。

  BX:  基址寄存器,常用来存放访问内存时的偏移地址。

  CX:  计数寄存器,在循环和串操作指令中用作计数器。

  DX:  数据寄存器,在寄存器间接寻址的I/O指令中存放I/O端口的地址。

  另外:  在做双字长除法运算时,DX与AX合起来存放一个双字长数(32位),其中,DX存放高16位,AX存放低16位。

(2)地址指针寄存器——2个

  SP:  堆栈指针寄存器,它在堆栈操作中存放栈顶偏移地址,即指向堆栈的栈顶。

  BP:  基址指针寄存器,一般也常用来存放访问内存时的偏移地址。但它通常是与SS寄存器配对使用。(比较:BX通常是与DS寄存器配对使用。)

  作为通用寄存器,SP和BP也可以存放数据,但实际上,它们更经常、更重要的用途是存放内存单元的偏移地址,特别是SP,在访问堆栈时作为指向栈顶的指针。

(3)变址寄存器——2个

  SI:  源变址寄存器。

  DI:  目的变址寄存器。

  它们常常在变址寻址方式中作为索引指针。

//-------------------------------------------------------------------------------------------------------------------------------

2、段寄存器——4个

  CS:  代码段寄存器

  SS:  堆栈段寄存器

  DS:  数据段寄存器

  ES:  附加段寄存器

  存放段基地址,即段起始地址的高16位。

//-------------------------------------------------------------------------------------------------------------------------------

3、控制寄存器——2个

  IP:  指令指针寄存器,用以存放预取指令的偏移地址。

  FLAGS: 称为标志寄存器或程序状态字(PSW)。

  CPU取指令时总是以CS为段基址,以IP为段内偏移地址。当CPU从CS段中偏移地址为IP的内存单元中取出指令代码的一个字节后,IP自动加1,指向指令代码的下一个字节。用户不能直接访问IP。

  FLAGS是16位寄存器,但只用到其中9位,其中包括6个状态标志和3个控制标志。

【下图来自百度百科】

 技术分享

二、8088/8086对段寄存器使用的约定

表2-3  8088/8086对段寄存器使用的约定
序号 内存访问类型 默认段寄存器 可重设的段寄存器 段内偏移地址来源
1 取指令 CS IP
2 堆栈操作 SS SP
3 串操作之源串 DS ES、SS SI
4 串操作之目标串 ES DI
5 BP用作基址寻址 SS ES、DS 按寻址方式计算得有效地址
6 一般数据存取 ES ES、SS 按寻址方式计算得有效地址

汇编-8086内部寄存器+对段寄存器使用的约定

标签:

原文地址:http://www.cnblogs.com/NoBreakNoEnd/p/5184892.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!