Operacje na stosie – prośba o wytłumaczenie

0

Witam mam następujące pytanie:
Po wykonaniu "push bx" bx znajduję się na szczycie stosu, następnie wykonywane są operacje na rejestrze bx: mov i mul (czy operacje są wykonywane na tym bx znajdującym się w naszym stosie czy jak to wygląda? Dziękuje z góry za odpowiedź!

_start:
    mov ax, 13
    mov bx, ax
    sub dx, dx
    sub cx, cx
loop:
    cmp dx, bx
    je fini
    push bx
    mov bx, 16
    mul bx
    pop bx
    add cx, 1
    jmp loop
fini:
    printReg cx
    return0
1

Zawartość bx jest na stosie, a nie bx jak zrobisz push bx.

Ale zawartość bx jest nadal taka sama, ale po wykonaniu jakiś działań na rejestrze bx, bx się zmieni, a na stosie będzie stara wartość.

Jak wrzucisz na stos liczbę 100 za pomocą rejestru bx, to na stosie będziesz miał 100, w bx 100 i jak zrobisz xor bx, bx, to bx będzie równe 0, a na stosie nadal będzie te 100.

wrzucając na stos zapisujesz w ramie dane, więc ich nie zmodyfikujesz inaczej jakbyś posługiwał się adresem stosu, no chyba, że wrzucisz adres na stos i gdzieś indziej na tym adresie co wskazuje będziesz modyfikował, to potem jak ze stosu zdejmiesz adres i tam skoczysz, to będzie coś innego.

Ja wiem, że na studia przedszkolaków biorą, a poziom inteligencji spada z roku na rok, ale to są proste rzeczy i oczywiste.

1 użytkowników online, w tym zalogowanych: 0, gości: 1