Assembly x86寄存器名称、寻址模式、移位和存储

Assembly x86寄存器名称、寻址模式、移位和存储,assembly,x86,masm,addressing-mode,Assembly,X86,Masm,Addressing Mode,我有一些关于组装的问题,我正在学习,我很困惑 bx和bp和ss和sp之间有什么区别?这本书说,bx是基址寄存器,bp是基址指针。这是否意味着它们是相同的东西 与mov-ax,bx,mov-ax,[bx],mov-ax,bp和mov-ax,[bp]有什么区别 在索引寻址模式下,disp是什么意思?例如mov al,disp[bx]?或mov al,disp[si]?本书没有解释disp的含义 寄存器在CPU中不是RAM对吗 请原谅我的英语,它不是我的第一语言 哦,天哪,这些16位寄存器在1

我有一些关于组装的问题,我正在学习,我很困惑

  • bx
    bp
    ss
    sp
    之间有什么区别?这本书说,
    bx
    是基址寄存器,
    bp
    是基址指针。这是否意味着它们是相同的东西

  • mov-ax,bx
    mov-ax,[bx]
    mov-ax,bp
    mov-ax,[bp]
    有什么区别

  • 在索引寻址模式下,
    disp
    是什么意思?例如
    mov al,disp[bx]
    ?或
    mov al,disp[si]
    ?本书没有解释
    disp
    的含义

  • 寄存器在CPU中不是RAM对吗

    请原谅我的英语,它不是我的第一语言


  • 哦,天哪,这些16位寄存器在1984年几乎过时了。对不起,你有一本旧书。然而,现代处理器仍然使用这些东西,所以你的问题是有道理的。当时我写了一些16位汇编,奇怪的是我还记得。哎呀

  • BX、BP、SS和SP只是四个独立的寄存器。BX、BP和SP是通用寄存器(其他16位GPRs是AX、CX、DX、SI和DI),SS是段寄存器,您不经常使用(在引用BP和SP时隐式使用)。对这些寄存器中的每一个的完整回答都会占用比通常答案多得多的空间。但要回答您的具体问题,BX和BP是两个不同的寄存器,而不是同一个。BP通常用于索引堆栈帧,BX通常用于索引到结构或数组中

  • MOV-AX,BX
    将BX的内容移动到AX中,而
    MOV-AX,[BX]
    将其值在DS:BX中的内存位置的内容移动到AX中。也就是说,如果BX包含值500,那么第一条指令将500移到AX中,而第二条指令将地址500的内容(从技术上讲,超过段DS的开头500字节)移到AX中。(请注意,在不同的汇编程序(如MASM和NASM)中解释此类MOV指令的方式存在一些细微的差异。)

  • DISP只是“displacement”的缩写,是一个添加到寄存器值中的数字,用于计算堆栈帧中变量的地址或结构中的元素。在类似于
    MOV AX的指令中,[BX+25]
    则25是位移

  • 是的,寄存器是CPU的一部分


  • 4:在x86体系结构中,寄存器确实在CPU中,而不是在RAM中。好的,我不知道有哪个1970年后的体系结构没有在CPU中显示寄存器,但我知道有一些体系结构(例如8051),其中寄存器与RAM位于同一地址空间,或者至少寄存器是一个子地址空间:访问RAM的指令可以同样轻松地访问寄存器,使用完全相同的指令代码,访问是从芯片外进入RAM还是留在芯片内进入寄存器,只取决于使用的地址。但在x86中,寄存器的活动值根本无法通过内存引用指令访问。(除非您先显式或隐式地将它们保存到内存中,但我们这里不讨论这一点。)

    请每个问题只问一个问题;一旦人们开始只回答你的一些问题,很难判断你的问题是否得到了回答。如果你有不止一件事要问,请随时同时提出多个问题;请把它们分开。非常感谢!有没有文章可以让我解释一下
    bx
    bp
    之间的区别?再次感谢大家再重复4次直到投票:可能有你需要的粒子:,