mov ax,[bp+si] mov ax,[bp+di] 而下面都是错误的:mov ax,[cx] mov ax,[ax] mov ax,[dx] mov ax,[ds] (2).在[]中,这四个寄存器可以单独出现,或者只能以四此前我们学习了bp 寄存器,我们知道bp 的作用是为访问栈空间数据提供方便,其默认绑定的段寄存器就是SS 段寄存器。在此前的博文中博主提及到,bp 的作用其实不止方便访问栈空间数据
[bp+si] 用来表示一处内存地址,该地址的偏移地址为bp 寄存器中的值加上si 寄存器中的值,段地址默认为SS 段寄存器中的值。汇编指令:mov ax,[bp+si],含义为:x86的bp寄存器其实有两个功能:指向栈底指向返回地址arm却把这两个功能拆开了,用两个存,为的就是减少一步访存。https://blog.csdn.net/tangg555/article/details/62231285 X86(-
BP寄存器默认选用SS段,MOV AX,[BP]就是把BP作为偏移地址,SS作为段所寻到的内存设为AX。如果不用[BP]而用[SP],就是把SP作为偏移。使用BP的理由是SP会随着push.pop而改变,而BP却不变,存放偏移地址,功能与BX相同,DI不能被拆分成两个小寄存器,BX就可以,BX有BL和BH 三:BP寄存器存放偏移地址,主要用于存放指向栈底的偏移地址,段寄存器使用SS(注意
bp为基址寄存器,一般在函数中用来保存进入函数时的sp的栈顶基址每次子函数调用时,系统在开始时都会保存这个两个指针并在函数结束时恢复sp和bp的值。像下面这样:在函数进入时:bp:是基址指针,段地址默认在SS中.可以定位物理地址,比如:mov ax,[bp+si+6]/mov ax,[bp+di+6].DI:是目的变址寄存器.一般情况下与ds联用,来确定某个储存单元的