汇编语言中,SP,BP ,SI,DI作用?

作者&投稿:朱陶 (若有异议请与网页底部的电邮联系)
求问IBM8086汇编语言中各通用寄存器的默认段~

(1)通用寄存器有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位进行存取操作,主要用来形成操作数的地址,用于堆栈操作和变址运算中计算操作数的有效地址。

1.汇编语言 SI DI BX BP SS DS 是什么
SI: 16位寄存器,源变址寄存器
DI: 16为寄存器,目的变址寄存器
BX: 16位寄存器(可分成2个8位寄存器BH,BL),基址寄存器
BP: 16位寄存器,基址指针寄存器
SS : 16位段寄存器,作用是存放当前堆栈段的段地址,一般和SP连用
DS: 16为段寄存器, 作用是存放当前数据段的段地址

2.怎样根据这些求物理地址
上面的这几个寄存器跟求物理地址谈不上关系.
有个公式: 物理地址 = 基础地址 + 偏移地址 = CS*10H(基础地址)+ IP(偏移地址)
CS: 16位段寄存器,存放当前代码段的段地址
IP: 存放下一条要执行的指令的偏移地址

LZ如有不明白的地方,可追问

这个很简单:
sp:表示栈顶指针,指向栈顶地址.与SS相配合使用.ss为栈段.
bp:是基址指针,段地址默认在SS中.可以定位物理地址,比如:"mov ax,[bp+si+6]/mov ax,[bp+di+6].
DI:是目的变址寄存器.一般情况下与ds联用,来确定某个储存单元的地址.
SI:是源变址寄存器,默认段地址和DI一样,在DS中.和DS联用.
这四个寄存器,都是16位的,不可以分割为八位.

要注意,1,sp和bp段地址默认在SS中.2..sp指向栈顶元素地址.有自加和自减能力,而bp没有.但是bp可以定位栈中某个元素的物理地址.

DI和SI
这两个属于变址寄存器.可以和bx.bp联用,但是和bx连用时,段地址在DS中,和bp联用时,段地址在SS中.也可以单独使用,单独使用时,段地址默认在DS中,想要越段使用,加上段前缀即可.

在串指令操作中,si和ds联用,确定目标源地址,di和es(附加段寄存器)联用,确定传送的目的地址.说白了就是,分别寻址数据段和附加段.

在串指令中,si和di具有自加和自减功能,

纯手打,望采纳!!!

SP 是堆栈指针,当你使用PHSU语句的时候就发现有变化
BP是辅助,在特殊时候用
SI,DI是一组指针
当你需要拷贝一组内存的数据的时候
一般是SI是源数据指针,DI是目的地址指针
CX是计数器,
只要CX不为零,就。。。。
直到完成数据拷贝

SI是源索引寄存器用于存放源操作数的偏移地址,并自动SI的内容,它被称为源索引寄存器。 DI是目标寄存器是用来存储到目标操作数的偏移地址,并自动的内容的DI,它被称为目标索引寄存器。

SI:source index; DI: destination index. 一般SI指向源操作数,DI指向目的操作数,比如将数据块从源传递到目的。si---->di.
SP: stack pointer; BP: base pointer. 堆栈中元素先进后出,后进先出,而sp指向栈顶,所以用sp访问堆栈只能得到栈顶数据。如果要得到堆栈中任意元素,不需要将堆栈弹出而使sp指向该元素,使用bp指向该元素即可。

SP BP堆栈指针(基址寄存器)
SI(原变址) DI(目的变址)变址寄存器


MCS-51单片机汇编语言的SP指令有什么作用?
MCS-51单片机汇编语言中,没有SP这条指令,只有针对SP操作的指令。51单片机中SP是堆栈指针寄存器,存放着当前堆栈地址。堆栈用于存储子程序调用、中断程序调用时程序返回的地址,或者用来临时保存某一寄存器的值。除了初始化堆栈时直接给SP赋值,SP显式存在,其它的对SP有影响的指令,对SP的操作都是隐式的...

C语言#define SP ((a*) b)是什么意思啊?谢谢
define SP ((a*) b)是定义((a*) b)为宏SP。((a*) b)的意思是把b强制成a*型指针。如:define SP ((int*)b)void main(void){ int b=4;int *p=SP;printf("%d\\n",p);} 输出结果是4。这说明用把b这个int数据变量强制成了一个int *型指针,并最后输出了。这里用最简单的int替换...

MCS-51单片机汇编语言的SP指令有什么作用?
把30H赋给了SP,称为设置栈底。以后:PUSH ACC ,就把ACC的内容存放到31H单元;PUSH PSW ,就把PSW的内容存放到32H单元;PUSH B ,就把B的内容存放到33H单元。……弹出时,要用POP指令。利用堆栈,就不用管具体的内容存放在什么单元了,SP会自动管理。

什么是堆栈,51单片机堆栈指针SP的使用
在计算机领域,堆栈是一个不容忽视的概念,堆栈是两种数据结构。堆栈都是一种数据项按序排列的数据结构,只能在一端(称为栈顶(top))对数据项进行插入和删除。在单片机应用中,堆栈是个特殊的存储区,主要功能是暂时存放数据和地址,通常用来保护断点和现场。要点:堆,队列优先,先进先出(FIFO—first i...

C语言简单的分析
;这句中sp初始化的内容是:第一个字符:\\t,表示横向跳到下一制表符位置。第二个字符:\\b,表示将输出位置左移一位。第三个字符:\\\\,表示一个“斜杠”。第四个字符:\\0,表示字符串结束。所以,到'\\0'处字符串结束,实际字符串sp只有3个字符,通过strlen函数即输出字符串长度即为3。

mcs51单片机中,dptr和sp分别是()的寄存器。a、dptr和sp均为8位 b、dp...
sp是8位的寄存器 汇编语言中SP是堆栈寄存器。堆栈——是一段按照后进先出(LIFO)原则组织起来的连续存储区域。用于程序保存或恢复数据,或用于子程序调用及中断响应时保护与恢复现场。SP是堆栈指针寄存器,存放着当前堆栈栈顶地址。一般情况下,对SP有影响的指令,对SP的操作都是隐式的,就是说SP并不出现...

我是单片机初学者 求指教 题:执行下列指令序列后sp内容()A内容...
;SP = SP - 1 = 42H POP B ;B = (SP) = (42H) = 88H ;SP = SP - 1 = 41H 最后:A = 39H B = 88H SP = 41H --- 小草的追求68 的答案是对的。推荐答案,就差远了,根本没有回答问题。推荐答案,追求PUSH、POP配对使用,这个思路有些僵化。

汇编语言中, DATA、 STACK、 TOP、 SP是什么意思
1、了解代码实际操作目的 该段代码实际目的是将DATA移动到DS,将STACK移动到SS,将TOP移动到SP。忽略DATA、STACK的实际含义,先把这两个参数看成存储器内部数据,这一段代码即可以理解为通过通用数据寄存器AX对DS,SS两个个特殊寄存器进行赋值。注意:以8086指令集为例,由于指令集不提供存储器与存储器或...

sp为什么要发成b的音
(2)/t/浊化成/d/:stand、student、mistake;(3)/p/浊化成/b/:spring、spirit、expression。其他浊化现象:1、在美音中,当/t/出现在两个元音之间并且处于非重读位置的时候,/t/需要浊化近似于/d/的音。这样,writer听起来和rider的发音几乎没有区别。如:(1)letter water ...

汇编中DUP和EQU指令的含义是什么?
DUP是伪指令,EQU是等于指令。dup是一个操作符,在汇编语言中同db、dw、dd等一样,也是由编译器识别处理的符号。是和db、dw、dd等数据定义伪指令配合使用的,用来进行数据的重复。EQU 伪指令把一个符号名称与一个整数表达式或一个任意文本连接起来。

志丹县18242284130: 汇编语言中“SP”“BP” “SI”“DI”的作用? -
夏关西地: SP 是堆栈指针,当你使用PHSU语句的时候就发现有变化 BP是辅助,在特殊时候用 SI,DI是一组指针 当你需要拷贝一组内存的数据的时候 一般是SI是源数据指针,DI是目的地址指针 CX是计数器. 汇编语言(assembly language)是一种用于...

志丹县18242284130: 汇编语言中,SI DI 的作用是什么? -
夏关西地: SI是源变址寄存器,用于存放源操作数的偏移地址,并且SI的内容有自动修改的功能,故称为源变址寄存器. DI是目的寄存器,用于存放目的操作数的偏移地址,并且DI的内容有自动修改的功能,故称为目的变址寄存器. DI和SI 这两个属于变址...

志丹县18242284130: 汇编语言每个专有名词的意思是什么啊? -
夏关西地: 8个通用寄存器: 数据寄存器:AX,BX,CX,DX 指针寄存器:SP(堆栈指针),BP(基址指针) 变址寄存器:SI(原地址),DI(目的地址) 1、通用寄存器 数据寄存器,指针寄存器和变址寄存器统称为通用寄存器.这些寄存器除了各自专门...

志丹县18242284130: 汇编语言中寄存器的英文全称 -
夏关西地: AH&AL=AX(accumulator):累加寄存器 BH&BL=BX(base):基址寄存器 CH&CL=CX(count):计数寄存器 DH&DL=DX(data):数据寄存器 SP(Stack Pointer):堆栈指针寄存器 BP(Base Pointer):基址指针寄存器 SI(Source Index):源变址寄存器...

志丹县18242284130: 汇编语言里的SEG DEST REG SRC什么意思,详细解释下 -
夏关西地: SEG表示段寄存器通用符号.REG表示通用寄存器组.SRC表示源操作数.DST表示目的操作数. 16位寄存器组包括:4个数据寄存器(AX、BX、CX和DX)、2个变址和指针寄存器(SI和DI) 2个指针寄存器(SP和BP)、4个段寄存器(...

志丹县18242284130: 举例说明AX,BX,CX,DX,SI,DI,BP,SP的主要作用
夏关西地: 汇编语言中的AX、BX、CX、DX是CPU内部的通用寄存器中的数据寄存器助记符.数据寄存器用来存放参与运算的数据或是存储运算的结果.这四个数据寄存器都是16位的,实际由两个8位寄存器组合而成,这是为了灵活处理8位数据.每个寄...

志丹县18242284130: 汇编语言 SI DI BX BP SS DS 是什么 怎样根据这些求物理地址 -
夏关西地: SI、DI、BX、BP是8086CPU可用来作指针使用的寄存器,一般用来表示一个偏移量,具体的和寻址方式有关.SS、DS是段地址寄存器.由于8086CPU是16的,而其存储容量可达1MB,也就是20位的寻址空间,因此编程时用两个16位的地址...

志丹县18242284130: 汇编中BP是什么 -
夏关西地: 上面的这位大哥,没有说到点子上.我是学汇编语言的,我来解释一下:不错,它的确是一个寄存器,它的用途有点特殊,是和堆栈指针SP联合使用的,作为SP校准使用的,只有在寻找堆栈里的数据和使用个别的寻址方式时候才能用到 比如说,堆栈中压入了很多数据或者地址,你肯定想通过SP来访问这些数据或者地址,但SP是要指向栈顶的,是不能随便乱改的,这时候你就需要使用BP,把SP的值传递给BP,通过BP来寻找堆栈里数据或者地址.

志丹县18242284130: 汇编语言bp寄存器和es寄存器有何用? -
夏关西地: 实际上,BP可以作SP使用,ES可以作DS使用.除了BP可以作为间接寻址寄存器而SP不能以外,其余的功能基本相同.Intel做这样的设计也是为了避免因程序过大而寄存器不够使用或者程序逻辑混乱的情况. 因为BP默认引用的段寄存器为SS...

志丹县18242284130: 汇编语言中di默认的段地址是什么哦 谢谢 -
夏关西地: ax,bx,cx,dx,sp,bp,si,di的默认段寄存器

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网