Каковы различия между этими толчками стека носа? - PullRequest
0 голосов
/ 12 июля 2011

это 16-битный реальный режим, NASM.

 ; ---- variables ------
    cursorRow db 1
 .
 .
 .

 ; what are the differences between these two pushes?
 push cursorRow ; is this the address of?

 push [cursorRow] ; is this the value of?

У меня проблемы с изменением этой переменной в функции, где cursorRow является параметром.Вопрос, который я опубликовал, который имеет отношение к делу: Обновление переменной, которая находится в сегменте данных из стека и его сегмента

Ответы [ 2 ]

1 голос
/ 13 февраля 2012

Если cursorRow (не [cursorRow]) инициируется в разделе данных, это похоже на указатель C.Использование [cursorRow] разыменовывает его и возвращает сохраненное там значение, и вам нужно будет поставить префикс [cursorRow] с размером значения, например mov al, byte [cursorRow].

1 голос
/ 12 июля 2011

cursorRow - это значение, а [cursorRow] - это значение в позиции cursorRow. Если вам нужно поместить адрес cursorRow в стек, то вам нужно нажать bp + 1 или любой другой фактический адрес переменной

...