Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СПО Билеты.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
5.24 Mб
Скачать

!! Ставьте у заголовков билетов стиль Заголовок 1. Вверху есть панелька на ней написано обычный, выделяем текст и меняем там на заголовок 1.

!! Еще смотрим комментарии, так как там иногда возникают вопросы

!! Есть билеты, лекции и шпоры за 5, 6 семестр скачать можно здесь (возможно на часть вопросов там можно найти ответы)

!! на всякий случай, вверху в правом углу есть кнопочка чат, общаться там намного удобнее

Нерешенные задачи:

Добавить теории(может быть, чтобы не дублировать сделать ссылки на типы анализов, методы разбора)

1.Про адрес 031221 и вектор 32-битный //непонятное задание аля XYNTA хохляцкая.

Тут никакой вариант даже косячный не приудмали?

2. Дискета: подсчитать размер кластера(походу ассемблер)

с кластером тоже никакой лабуды нет?

3. Синтаксический анализ(теория)

4. Формула для представления многомерного массива в одномерный (строкой вроде логичная, а в столбец ...) по ссылке вверху, есть лекции, там вроде это было, могу посмотреть..то что скинули типа отображение обратно в массив?дребедень

В нисходящем разборе переделала без итерации как в лекции, одно не знаю последнюю сточку нужно менять или нет, ее не было

E::=T|TB

B::=+T|-T|+TB|-TB

T::=F|FG

G::=*F|/F|*FG|/FG

F::=id | (E)

Билет 1 (Обработчик нажатия ALT+A)

Билет 2 (Проверка открытия EXE файла)

Клава.асм

Выводит хвост командной строки

Породитель процесса (PAR.ASM)

Порождаемый процесс

Билет 3 (сканер для лексем)

Билет 4 (построить грамматику с возведением в степень)

Билет 5 (преобразование для нисходящего разбора)*

Билет 6 (грамматика для if then else)*

Билет 7 (представление массива и выведение формулы)

Билет 8 (хеш - функция)

Билет 9(Построить таблицу идентификаторов)

Билет 10 (КА для сканера лексем)

Билет 11(грамматика для чисел)

Билет 12 (стек для выражения a+b*(c+d))

Билет 13 (матрица предшествования для грамматики)*

Билет 14(анализ грамматики для метода предшествования)**

Билет 15(a+b*c является ли сентенциальной формой)*

Билет 16 (Заголовок exe)

Билет 17(Структура диска MS-DOS)

Билет 18 (Синтаксический анализ теория) не написано

Билет 19 (Лексический анализ теория)

Требования к грамматике нисходящего метода

Семантические программы. Перевод инфиксной записи в польскую.

Обратная польская запись(как польская запись только в польской +АБ а тут АБ+,по умному “постфиксная”)

Тетрады

Триады

Хранение грамматики с использованием сети

Аппаратные прерывания

Представление многомерных массивов в памяти ЭВМ

Свободные кластеры логического диска "А" (на всякий)

Билет 1 (Обработчик нажатия ALT+A)

.model tiny

.code

org 100h

start:

;сохранение старого обработчика

mov ax, 3509h

int 21h

mov word ptr old_09h, bx

mov word ptr old_09h + 2, es

;установка нового обработчика

mov dx, offset new_09h

mov ax, 2509h

int 21h

;считать строку в буфер

mov ah, 0ah

mov dx, offset user_input

int 21h

;восстановление старого обработчика

mov dx, word ptr old_09h

mov bx, word ptr old_09h + 2

mov ds, bx

mov ax, 2509h

int 21h

ret

;новый обработчик

new_09h proc

pushf

call cs:[old_09h]

push ds

push di

push cx

push ax

;обработчик активирован?

mov al, is_active

cmp al, 1h

je new_09h_active

;проверить, нажат ли Alt

mov ah, 02h

int 16h

test al, 8

jz exit_new_09h

;проверить, нажата ли клавиша A

mov ah, 01h

int

jz exit_ne16hw_09h

cmp ah, 1eh

jne exit_new_09h

;активация обработчика

mov al, 1h

mov is_active, al

jmp exit_new_09h

;обработчик активирован

new_09h_active:

;проверить, что это нажатие

push 0040h

pop ds

mov di, word ptr ds:001ah

cmp di, word ptr ds:001ch

je exit_new_09h

;выполнить необходимое по заданию действие

mov ah, 01h

int 16h

jz exit_new_09h

cmp al, 'A'

jne check_B

mov al, 94h

jmp write_to_buffer

check_B:

;продолжение для остальных символов

;...

check_z:

cmp al, 'z'

jne exit_new_09h

mov al, 0efh

write_to_buffer:

mov [di], ax

exit_new_09h:

pop ax

pop cx

pop di

pop ds

iret

new_09h endp

is_active db 0

old_09h dd ?

user_input db 128

db 128 dup (0)

end start

Второй метод(одноразовый но можно переделать под цикл)

masm

.model small

.stack 256

.data

Msg_about db 'Распознать нажатие «горячей» комбинации клавиш', 0Ah, 0Dh

.code

start:

; Инициализация сегментного регистра ds

mov ax, @data

mov ds, ax

; Вывод сообщения на экран

mov ah, 9

mov dx, offset Msg_about

int 21h

; Чтение символа с ожиданием

mov ah, 0

int 16h

; Проверка нажатия ALT

cmp ah, 38h

jne exit

; Получение состояния клавиатуры

mov ah, 12h

int 16h

; Проверка нажатия A

test ah, 1e

jz exit

mov ah, 2 ; Вывод символа

mov dl, 7 ; Сигнал

int 21h

; Завершение программы, возврат управления ОС

exit:

mov ax, 4c00h

int 21h

end start

Билет 2 (Проверка открытия exe файла)

.model tiny

.code

org 100h

start:

;сохранение старого обработчика

mov ax, 3521h

int 21h

mov word ptr old_21h, bx

mov word ptr old_21h + 2, es

;установка нового обработчика

mov dx, offset new_21h

mov ax, 2521h

int 21h

;активация обработчика

mov ax, 0ff00h

int 21h

;открытие файла на запись

mov ax, 3d01h

mov dx, offset file_name

int 21h

;восстановление старого обработчика

mov dx, word ptr old_21h

mov bx, word ptr old_21h + 2

mov ds, bx

mov ax, 2521h

int 21h

ret

;новый обработчик

new_21h proc

;обработчик активирован?

push ax

mov al, is_active

cmp al, 1h

pop ax

je new_21h_active

;активация обработчика

cmp ax, 0ff00h

jne start_old_21h

push ax

mov al, 1h

mov is_active, al

pop ax

jmp start_old_21h

;обработчик активирован

new_21h_active:

cmp ah, 3dh

jne start_old_21h

test al, 01h

jz start_old_21h

;проверка имени файла

push es

push ax

push ds

pop es

mov al, 0

mov di, dx

find_zero:

scasb

jne find_zero

pop ax

push ds

push cs

pop ds

mov si, offset exe_suf

sub di, 5

push cx

mov cx, 4

repe cmpsb

pop cx

pop ds

pop es

jne start_old_21h

jmp exit_new_21h

start_old_21h:

jmp cs:[old_21h]

exit_new_21h:

iret

new_21h endp

is_active db 0

file_name db "123.exe", 0

exe_suf db ".exe"

old_21h dd ?

end start

Клава.Асм

MODEL small

STACK 256

.386

.data

m1 db 0ah,0dh,' ','$'

m2 db 0ah,0dh,'Nagmite lubuu klavishy, ESC - vyhod + - vremya ','$'

.code

main:

mov ax,@data

mov ds,ax

xor ax,ax

mov dx, offset m2

mov ah,09h

int 21h

main2:

mov ah,0h

int 16h

cmp ax,011bh

jz exit

cmp al,3Dh

jz task

jmp main2

task:

mov ah,02h

int 1Ah

movzx ax, ch

mov bh, 16

div bh

mov bl,al

mov bh,ah

add bl,30h

add bh,30h

mov ah,02h

mov dl,bl

int 21h

mov ah,02h

mov dl,bh

int 21h

mov dl,':'

mov ah,2

int 21h

mov ah,02h

int 1Ah

movzx ax, cl

mov bh, 16

div bh

mov bl,al

mov bh,ah

add bl,30h

add bh,30h

mov ah,02h

mov dl,bl

int 21h

mov ah,02h

mov dl,bh

int 21h

mov dl,':'

mov ah,2

int 21h

movzx ax, dh

mov bh, 16

div bh

mov bl,al

mov bh,ah

add bl,30h

add bh,30h

mov ah,02h

mov dl,bl

int 21h

mov ah,02h

mov dl,bh

int 21h

mov dx, offset m1

mov ah,09h

int 21h

jmp main

exit:

mov ax,4c00h

int 21h

end main

Выводит хвост командной строки

.model tiny

.code

org 80h

cmd_len db ?

cmd_start db ?

org 100h

start:

cld ;Сброс флага направления DF

; вывод на консоль

lea dx, cmd_start

mov ax, 0900h

int 21h

quit:

mov ax, 4c00h

int 21h

fname db 'com_str1.txt',0

buff db 100 dup ('$')

end start

Породитель процесса (par.Asm)

.model small

.data

chname db 'prg.com',0

parmblk dw 7 dup(0)

msg1 db '(par)parant proc started',10,13,'$'

msg2 db '(par)chield proc work norm and close',10,13,'$'

msg3 db '(par)chield proc closed error',10,13,'$'

msg4 db '(par)chield proc unactive',10,13,'$'

.code

start:

jmp rr

rr:

mov ax,@data

mov ds,ax

mov ah,09h

mov dx,offset msg1

int 21h

;clean memmory

mov bx,abcd

mov ax,es

sub bx,ax

mov ah,4ah

int 21h

;started chield process

push ds

pop es

mov ah,4bh

mov al,0

mov bx,offset parmblk

mov dx,offset chname

int 21h

jc errexec

;return code analized

mov ah,4dh

int 21h

cmp al,1

je errchld

;print message

mov ah,09h

mov dx,offset msg2

int 21h

quit:

mov ax,4c00h

int 21h

errchld:

mov ah,09h

mov dx,offset msg3

int 21h

jmp quit

errexec:

mov ah,09h

mov dx,offset msg4

int 21h

jmp quit

abcd segment

abcd ends

end start