Registriert seit: 28. Okt 2003
Ort: Bamberg
519 Beiträge
|
Base Pointer
5. Jan 2006, 07:28
Was macht eigentlich der Base Pointer (BP - Register)? Angeblich zeigt er immer auf den Boden des Stacks? Bei mir ist der aber immer irgendwie 0000h? Wann wir der gesetzt der Base Pointer durch welche Operationen? und wozu wird er verwendet?
soweit ich weiß wird er in Unterprogrammen dazu verwendet auf die übergebenen Argumente zuzugreifen:
f1: PUSH BP
MOV BP,SP
...
MOV BX,[BP] ; gesicherte Base Pointer
MOV BX,[BP+2] ; Rücksprungadresse
MOV BX,[BP+4] ; 1. Parameter in BX laden
MOV AX,[BP+6] ; 2. Parameter in AX laden
...
POP BP
RET
ist das aber alles? und muss ich den wie hier immer manuell setzen?
|