Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовая работа испр.docx
Скачиваний:
23
Добавлен:
30.07.2019
Размер:
734.58 Кб
Скачать

4.5.4 Процедура поиска нулевой строки

Помещаем в стек значение регистра CX (22), в BX – идентификатор файла (23). Помещаем в стек значение регистра DS (24) и извлекаем значение из стека в регистр ES (25). Помещаем в AH номер функции для чтения из файла (28), в CX – количество необходимых байт (строка – 16 байт) (27). Помещаем в DX исполнительный адрес буфера для приема данных (29). Производим чтение строки байтов из файла “Uk64.dat” (30). Помещаем в SI исполнительный адрес считанной строки (31), в DI – исполнительный адрес объявленной нулевой строки (32). Сохраняем в CX количество сравниваемых байтов (27, 33) и производим попарное сравнение байт по адресам из SI и DI (34). Если ZF равно 0, то сравниваем значение регистра CX и 0 (35), иначе, если ZF не равно 0, то продолжаем попарное сравнение байт по адресам из SI и DI (34). Если CX не равно 0, то переходим на метку «more» (36) и помещаем в AH номер функции для чтения из файла (28). Далее восстанавливаем из стека значение регистра CX (37).

4.5.5 Процедура записи в файл “My.Dat”

Помещаем в AH номер функции для создания файла (55), обнуляем CX (атрибут файла) (56), помещаем в DS:DX смещение переменной с именем файла (57), создаём файл “My.dat” (58). Сохраняем идентификатор файла “My.dat” в переменной (59), помещаем в AH номер функции для записи в файл (63). Сохраняем в BX идентификатор файла (64), помещаем в CX количество необходимых байт (65). Помещаем в DX исполнительный адрес буфера с данными (66), производим запись кадра в файл “My.dat” (67). Помещаем в AH номер функции для закрытия файла “My.dat” (71), в BX – идентификатор файла (72). Закрываем файл “My.dat” (73).

4.5.6 Процедура создания и записи канального файла

Помещаем в AH номер функции для создания файла (77), обнуляем CX (атрибут файла) (78). Помещаем в DS:DX адрес строки с именем файла (79), создаем файл “Result.dat” (80). Сохраняем идентификатор файла “Result.dat” в переменной (81), помещаем в SI исполнительный адрес буфера, содержащего кадр (99). Вычитаем из него 16 байт, т.к. первая строка (нулевая) не считана (100). Помещаем в DI исполнительный адрес буфера для хранения результатов (101). Устанавливаем счетчик CX, поместив в него необходимое количество байт (102). Сохраняем в стеке значения внешнего счетчика (104), инициализируем счетчик внутреннего цикла (105). Обнуляем DX (106), сохраняем в стеке значение счетчика (108). Помещаем (2 раза) в стек значение регистра SI (109,110). Производим суммирование SI и смещения первого байта (111). Инициализируем AX байтом по адресу DS:SI (112), помещаем в CX смещение первого бита (его номер) (113). Производим считывание в флаг CF бита из AX со смещением, равным CX (114). Осуществляем циклический сдвиг регистра DX влево через флаг CF на 1 (115), затем восстанавливаем значение SI из стека (116). Суммируем SI и смещение второго байта (117), производим пересылку байта из DS:SI в AX (118). Помещаем в CX смещение второго бита (его номер) (119), производим считывание в флаг CF бита из AX со смещением, равным CX (120). Осуществляем циклический сдвиг регистра DX влево через флаг CF на 1 (121), восстанавливаем значение SI из стека (122), затем увеличиваем его на 16 (переход на следующую строку) (123). Восстанавливаем счетчик внутреннего цикла (124), если значение CX равно нулю, то помещаем значение байта из DL по адресу DS:DI (126), иначе возвращаемся к метки «look_string» и сохраняем в стеке значение счетчика (127). Делаем инкремент адреса в DI (переход на следующий байт) (128), восстанавливаем значение счетчика внешнего цикла (128). Если его значение равно 0, то помещаем в AH номер функции для записи в файл (91), иначе осуществляем переход на метку «make_byte» и сохраняем в стеке значение внешнего счетчика (104). Помещаем в BX идентификатор файла (92), сохраняем в CX количество записываемых байт (93). Помещаем в DS:DX адрес строки с названием файла (94), осуществляем запись результата в файл “Result.dat” (95). Помещаем в AH номер функции для закрытия файла (96) и закрываем его (97).