微机原理问题,有会汇编语言的大佬么?求帮助!谢谢。

2025-03-15 00:16:31
推荐回答(2个)
回答1:

bp与sp一般都用于堆栈寻址。
bp,sp一般与ss段联用,sp做为基准(栈顶),bp在这个基准的基础上,在ss段内寻址。
你图中的例子,是典型的用ss段进行参数传递的方式(函数的参数),在调用该函数之前,把需要传递给函数的数据,压入栈中;进入函数体后,栈不做出栈操作,而是利用bp定位到数据所在位置,读出使用。

bp为基址寄存器,一般在函数中用来保存进入函数时的sp的栈顶基址

每次子函数调用时,系统在开始时都会保存这个两个指针并在函数结束时恢复sp和bp的值。
在函数进入时:push bp    ; 保存bp指针
             mov bp,sp  ; 将sp指针传给bp,此时bp指向sp的基地址。
                        ; 这个时候,如果该函数有参数
                        ;则[bp + 2*4]则是该子函数的第一个参数
                        ;[bp+3*4]则是该子函数的 第二个参数
                        ;以此类推,有多少个参数则[bp+(n-1)*4]。
..........
函数结束时:
  mov sp,bp  ;将原sp指针传回给sp
  pop bp     ;恢复原bp的值。
  ret        ;退出子函数

回答2:

第一个就是把,bs的值传到sp,其他的以此类推