Цитата(rum200 @ 23.12.2007 1:27)
Раз элементы стека имеют тип байт, операция Push(a:byte) помещает в стек один байт, а функция Pop:byte извлекает байт из стека с соответствующим изменением в обеих случаях значения указателя. Для типа integer необходимо раздробить двухбайтовую переменную на два байте и дважды использовать Push, а при извлечении - склеить два последовательно извлеченных байта в одно
integer. Для longint аналогично, но работая с группами по 4 байта.
Вообще-то я не вижу ничего общего между заголовком и телом темы.
По поводу заголовка:
биты извлекаются из числа соответствующими логическими операциями, например, бит номер n (начиная с 0):
MyBit := (MyNumber shr n) and 1;
Обратно возвратить бит в число можно, например, так:
MyNumber := (MyNumber and (not(1 shl n)) or (MyBit shl n);
По поводу тела:
Во-первых, никто не ограничивает длину объекта, с которым работает стек именно 1 байтом. Если стек реализуется ручками на ЯВУ, то заихиваь можно хоть строки переменной длины.
Если же речь идет о языке Ассемблера, то разрядность запихиваемого числа равняется разрядности АЛУ, т.е. для 16-разрядных процессоров запихиваться будет 2 байта, для 32-разрядых - 4, а 64-разрядных - 8.