汇编-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对段寄存器使用的约定
序号 | 内存访问类型 | 默认段寄存器 | 可重设的段寄存器 | 段内偏移地址来源 |
1 | 取指令 | CS | 无 | IP |
2 | 堆栈操作 | SS | 无 | SP |
3 | 串操作之源串 | DS | ES、SS | SI |
4 | 串操作之目标串 | ES | 无 | DI |
5 | BP用作基址寻址 | SS | ES、DS | 按寻址方式计算得有效地址 |
6 | 一般数据存取 | ES | ES、SS | 按寻址方式计算得有效地址 |
以上是关于汇编-8086内部寄存器+对段寄存器使用的约定的主要内容,如果未能解决你的问题,请参考以下文章