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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了汇编-8086内部寄存器+对段寄存器使用的约定相关的知识,希望对你有一定的参考价值。

《微型计算机原理与接口技术(第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内部寄存器+对段寄存器使用的约定的主要内容,如果未能解决你的问题,请参考以下文章

8086汇编 段寄存器

8086汇编入门级知识(待补)

8086汇编学习之代码段数据段栈段与段地址寄存器

王爽《汇编语言》第三版 第二章 寄存器

汇编 学习笔记2

8086汇编语言基础学习——8086微机基础