- 1
- 2
- 3
- 4
MOV CX,4 ;All devices are 4 letters
REPE CMPSB ;Check for name in list
JZ IOCHK ;If first 3 letters OK, check for the rest
ADD SI,CX ;Point to next device name
Препроцессор клевый)
Все пнятненько, тащемто. Ложим в CX четверку чтобы REPE 4 раза повторила CMPSB которая сравнивает байты по адресу DS:SI с байтами по адресу ES:DI и устанавливает флаг.
Если флаг нулевой то прыг (JZ) на IOCHK, а иначе к SI прибавляет 4 чтобы проверить следующее слово в DS
Сейчас придут Борманд с Инкаусом и объяснят
NAME1 состоит из 8 букв имени файла и трёх букв расширения имени файла. Неиспользованные символы добиваются пробелами.
И здесь тоже пробелы.
В версии NOT IBM все имена девайсов были трёхбуквенными, потому и сохранился комментарий про "3 letters".
Всегда помните об этом.
https://www.youtube.com/watch?v=hVD6ev_9VgE
Какой RAnal )))
Палец в жо
Палец в желтеньком колечке
Запер де
Запер девку навека
Уху я, уху я, уху я варила.
Уху я варила, сваху я кормила.
Сваху я, сваху я, сваху я кормила.
На речку ходила, ольху я ломала.
Ольху я, ольху я, ольху я ломала.
Ольху я ломала, сверху я упала.
Сверху я, сверху я, сверху я упала.
Сверху я упала, рубаху я порвала.
Рубаху я, рубаху я, рубаху я порвала.
Рубаху я порвала, Доху я купила.
Доху я, доху я, доху я купила.
по склону двигались три деда.
Вели неспешную беседу,
о тленной старости толкуя.
Пора закончить с альпинизмом,
да заниматься огородом,
мне всё труднее с каждым годом
бороться с дряхлым организмом.
А я, пожалуй, вспомню греблю,
да и старуха любит воду.
Я приучил её к походам –—
садится в лодку, не колеблясь.
А как же первенство Европы! –—
воскликнул третий, сев на камень,
но соскользнул, взмахнув руками,
и потащил всю связку в пропасть.
Их нервы были на пределе,
они летели и вопили,
но вверх взметнув три тонны пыли,
в итоге всё же уцелели.
http://mail.raceclub.ru/images/2221/138662.jpg
@SI^ <> DI^
Это в каком таком пасцале стало возможным сравниение ссылок логическими операндами?
1. В Паскале всегда можно было сравнивать указатели (правда, только операторами = и <>).
2. Тут сравнение не указателей, а разыменованных данных (бо крышечка означает разыменование).
Что за «сравниение ссылок логическими операндами»?
Я не силен в пасцале, но в делфях сравнение "разыменования данных", как ты выразился, возможно, только если указатель типизированный, в противном случае, компилятор подумает, что ты хочешь сравнить хуй с пальцем, и не станет это компилировать.
Меня вот это больше беспокоит: SI := SI + CX;
Если переменная SI объявлена как указатель, то арифметические операции с ней выполнять нельзя. Нужно кастовать в число: longint(SI) := longint(SI) + CX; Либо вызывать процедуру Inc. Например, так: Inc(SI, CX);
Если указатель типизированный, он инкрементится на + SizeOf(Data).
P.S. Понял. Если SI: ^DataType, то Inc(SI, CX) прибавит к указателю CX*SizeOf(DataType).
PChar увеличивается на + SizeOf(Char), и т.д.
Это юзабельно лишь в массивах.
В реальном режиме линейный адрес вычислялся как Ofs + Seg * 16. В защищённом всё хуже: для получения линейного адреса нужно было в таблице дескрипторов искать запись по номеру Seg. В операционках даже был API для получения этого адреса. Поэтому в защищённом режиме обычно линейный адрес не получали, ограничивая размеры массива размером сегмента (64 килобайта для 16-битных смещений). Короче, инкремент применяли только к смещению.
ОЙ:
INC(SI, CX)
Свинорылые уёбки.