汇编语言:BX,BP,SP,基址寄存器,基址指针,堆栈指针。他们的段寄存器默认都为SS? 那么这几个寄存器之间

作者&投稿:旗荀 (若有异议请与网页底部的电邮联系)
什么是基址寄存器,什么是源变址寄存器,什么是目的变址寄存器?他们的功能又是什么?~

1、SI(Source Index):源变址寄存器可用来存放相对于DS段之源变址指针;
2、DI(Destination Index):目的变址寄存器,可用来存放相对于 ES 段之目的变址指针。;
3、BX叫做基址寄存器,用来存放操作数或中间结果,以减少对存储器的访问次数。
数情况下,数据寄存器被用在算术或者逻辑指令运算中进行算术逻辑运算。在有些指令中,则有隐含的用途,如累加器(AX),基址(base)寄存器(BX),计数器(CX),数据寄存器(DX)。

扩展资料
在8086CPU中,只有bx,si,di,bp这4个寄存器可以用在[...]中来进行内存单元的寻址;
在[...]中,这4个寄存器可以单个出现或只能以四种组合出现;bx和si,bx和di,bp和si,bp和di。
codesg segment
start:mov ax,datasg
mov ds,ax
mov si,0
mov di,16
mov cx,8
s:mov ax,[si]
mov [di],ax
add si,2
add di,2
loop s
mov ax,4c00H
int 21H
codesg ends
end start

很简单的啊,基址寄存器存放的是相当于某内存空间的首地址,而基址指针存放的是偏移量,类似其他编程语言中的索引,不同的是基址指针的单位是字节,而索引的单位是依赖于数据类型宽度,比如C++中int类型的宽度为4字节,因此索引必须乘以4才能换算成字节单位。
假设BX=1000,BP=102 ,则 计算后的地址为 BX+BP=1102;而如果假设数组int A[XXXX]的首地址也是为1000,index=102,则计算后的地址为A+index*4=1000+408=1408。
PS:由于8086开始内存地址空间的需求大于寄存器数据宽度,因此采用了分段技术,所以以上计算结果是相对于段地址空间的,实际内存的物理地址还要结合段地址一起运算。

只有BP作为间址寄存器时,段寄存器才缺省使用SS。

用BX, SI, DI这三个寄存器作为间址寄存器时,都缺省使用DS作为段寄存器。

SP是不可以作为间址寄存器使用的。它只是在堆栈操作时(比如PUSH,CALL等)与SS配合指示栈顶。它也可作为一般数据寄存器存放数据和参与运算。不过,由于堆栈的重要性,一般除了特别需要处理堆栈时才使用外,应尽量避免用它作数据寄存或运算。

要看出标志位的值,最好是掌握标志位的英文表示。
比如:
溢出标志OF是Overflow Flag的缩写,在DEBUG中用"NV"表示Not oVerflow(OF=0),用"OV"表示OVerflow(OF=1)
方向标志DF表示串操作时地址改变的方向,DF=0是地址增加,向上调整,用"UP"表示。DF=1是减小,用"DN"(DowN)
"EI"是Enable Interrupt,允许中断,IF=1. "DI"是Deny Interrupt ,拒绝中断,IF=0
"ZR"是Zero,运算结果为0,ZF=1。 “NZ”是Not Zero,结果不是0,ZF=0
其它几个都类似这样,一般教材上都有解释。
这样搞懂英文含义去记,就容易了。
当然,也可以死记硬背,只是效率低,难记,且记不牢。


mov AX,[BX][BP] 什么意思
这个汇编指令是错误的吧。 BX和BP不能配对。可以修改为mov AX,[BX][SI]意思是以基址变址寻址方式,将内存中的一个字送到AX中,EA=[BX]+[SI]

汇编语言指出错在哪并改正
MOV AH,BX 两个操作数类型不一致,一个8位一个16位。可以将ah改为ax。MOV [SI],[BX] 两个操作数不能同时为存储器操作数。可以将 [si]改为si MOV AX,[SI][DI] 源操作数错误,没有这种寻址方式(不能同时为变址),可以改成基址变址寻址,比如将si改成 bx MOV AX,[BX][BP] ...

为什么下列这些指令是错误的 mov [bx],[bp] mov[bx],20h
mov [bx],[bp] ;没有这种寻址方式,记住,源操作数和目的操作数不能同时为存储器寻址。mov [bx],20h ;这条指令是正确的

请问LEA BX,[BP]和MOV BX,BP结果是一样的吗?这两句有什么区别呀。今天老...
简单:LEA BX,[BP]是指BX取到【BP】的偏移地址!MOV BX,BP是指BX取到【BP】中的内容而不是偏移地址!这就是他们之间的区别。ok

ADD AL,[BX][BP]对错,错了为什么
BP只能和SS段地址结合。BX只能和DS或ES段地址结合。所以这种用法错误 !

汇编语言中ax,bx,cx,dx……英文全称是什么,中文代表什么
8086中共有4个16位的通用寄存器(AX、BX、CX、DX),4个16位的指针与变址寄存器(BP、SP、SI、DI),4个16位的段寄存器(CS、DS、SS、ES),一个指令指针寄存器(IP)及一个标志寄存器(PSW)。 AX BX CX DX是CPU内部的通用寄存器中的数据寄存器,数据寄存器一般用于存放参与运算的数据或运算的结果,每一个数据寄存器都...

用汇编语言编制一个计算从2开始的N个偶数之和,将结果显示出来
1 INT 21H CMP AL,13 JE @1 SHL BP,1 MOV DI,BP SHL BP,1 SHL BP,1 ADD BP,DI AND AL,0FH XOR AH,AH

汇编语言bp寄存器和es寄存器有何用?
实际上,BP可以作SP使用,ES可以作DS使用。除了BP可以作为间接寻址寄存器而SP不能以外,其余的功能基本相同。Intel做这样的设计也是为了避免因程序过大而寄存器不够使用或者程序逻辑混乱的情况。因为BP默认引用的段寄存器为SS,故当程序中设有多个栈,在不与SP冲突的情况下可以选用BP寄存器。一般在(相对)...

汇编语言小问题 微机原理
输出提示信息 INT 21H MOV AH,4CH INT21H CODE ENDS END START 第三题:MOV CL,300;溢出错误 MOV BX,Dl;原操作数和目标操作数位数不一致 MOV ES,1000H;段寄存器不能立即寻址 TEST BX,[CX];test原操作数不能用内存变量 SUB [BX],[BP+SI];内存和内存间不能直接操作 ...

汇编语言 mov ax,word ptr [ si ] [ di ] 这条语句为什么有错误_百度...
si、bx均可作为源数据的偏移与ds段地址配合使用;di、bx均可作为目的数据的偏移与es段地址配合使用 即si指向源,di指向目的,si、di不能出现的一个偏移地址中 !!!

广河县19851906939: 汇编语言:BX,BP,SP,基址寄存器,基址指针,堆栈指针.他们的段寄存器默认都为SS? 那么这几个寄存器之间 -
董溥咪唑: 只有BP作为间址寄存器时,段寄存器才缺省使用SS.用BX, SI, DI这三个寄存器作为间址寄存器时,都缺省使用DS作为段寄存器.SP是不可以作为间址寄存器使用的.它只是在堆栈操作时(比如PUSH,CALL等)与SS配合指示栈顶.它也可...

广河县19851906939: 汇编中,BP,SP有何区别?分别怎么使用? -
董溥咪唑: bp寄存器,跟其它什么BX,AX一样的用法, SP是用在栈上的,配合SS使用,像SS:SP SS上放段地址,SP上放偏移地址. 寻址时,像[bp],相当于SS:[bp] 就是说它默认使用SS 像BX默认使用CS

广河县19851906939: 汇编语言里什么时候用基址变址寻址? -
董溥咪唑: 用 bx、sp 寄存器寻址 称为 基址寻址.(bx是数据段的基址寄存器,bp为栈段的基址寄存器) 用 si 或 di 寄存器寻址 称为源 或 目的 变址寻址.用 bx+si 或 bx+di 寄存器寻址 称为 基址+变址 寻址.mov ds:[si], al ----------这是源变址寻址

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

广河县19851906939: 汇编语言中语句 xorebx,ebx 什么意思
董溥咪唑: 这些32位CPU,32位寄存器名. 注册为正在运行的CPU的内部临时数据存储单元.PC的16位CPU 8086,8088,注册名称AX(累加器),计数寄存器基址寄存器(BX)CX,DX(数据寄存器),SP(堆栈指针),BP(基址指针),SI(源变址寄存器),DI(目的变址寄存器),IP(指令指针),等等...... 除了能看到这些寄存器的用途以外的名称,该部分的寄存器可被用作一个共同的通用数据存储的.为了清楚明白,对每个寄存器的特定功能相关联的具体说明,在与各种.386以上的32位CPU,这些寄存器扩展到32,这个名字是在原来的16个字母“E”的名称为EAX,EBX,...... .. ...

广河县19851906939: 请教汇编语言高手——CX寄存器基础问题 -
董溥咪唑: 不能作为寄存器间接寻址 只有bx、bp、sp、si,可以作为间址寄存器.段寄存器: CS(Code Segment,代码段) 指定当前执行的代码段. EIP (Instruction pointer, 指令指针)则指向该段中一个具体的指令. CS:EIP指向哪个指令, CPU 就执行它. ...

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

广河县19851906939: 汇编语言中寄存器的英文全称 -
董溥咪唑: 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):源变址寄存器...

广河县19851906939: 在汇编语言中,怎么用BX寄存器作为地址指针,可将内容输入其内存单元?? -
董溥咪唑: 你辟一个数据段,比如,s db 30 dup(0),然后用mov bx,s.就把这段开始地址指针给了bx寄存器.内容输到s这段,其实也就是bx在控制.

广河县19851906939: 汇编 中add ss:[sp],bx,这个指令对吗,错了麻烦说下原因
董溥咪唑: 不对的 []中只能是si,di,bx,bp四个寄存器,也就是基址寄存器或者变址寄存器

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