Замена символа.Резидент - Assembler
Формулировка задачи:
Добрый день , есть программа , которая по нажатию левого шрифта меняет "g" на собственный символ. Надо из этого сделать резидент(и COM файл) , прошу помощи ( если можно , то с комментариями , буду очень признателен )
Листинг программы
- .model small
- .stack 100h
- .data
- char DB 00000000B
- DB 00000000B
- DB 00000000B
- DB 00000000B
- DB 00000000B
- DB 01111110B
- DB 01000010B
- DB 01000010B
- DB 01000010B
- DB 01000010B
- DB 01000010B
- DB 01000010B
- DB 01000010B
- DB 00000000B
- DB 00000000B
- DB 00000000B
- .code
- repeat1:
- mov ah, 2
- int 16h
- test al, 2
- jnz sym111
- cmp al,0dh
- je exit
- jmp repeat1
- sym proc
- mov ax,seg char
- mov es,ax
- mov BP,offset char
- mov cx,1
- mov dx,103
- mov bl,0
- mov bh,16
- mov al,0
- mov ah,11h
- int 10h
- ret
- endp
- jmp repeat1
- sym111:
- call sym
- exit:
- mov ah,4ch
- int 21h
- end
Решение задачи: «Замена символа.Резидент»
textual
Листинг программы
- .MODEL Tiny
- .286
- .CODE
- ORG 100h
- Start:
- jmp SetIntVec
- char DB 00000000B
- DB 00000000B
- DB 00000000B
- DB 00000000B
- DB 00000000B
- DB 01111110B
- DB 01000010B
- DB 01000010B
- DB 01000010B
- DB 01000010B
- DB 01000010B
- DB 01000010B
- DB 01000010B
- DB 00000000B
- DB 00000000B
- DB 00000000B
- Handler: ; обработчик прерывания
- pusha
- in al,60h ; скан-код нажатой клавиши
- cmp al,2Ah ; Left Shift?
- jne leave
- push es
- push cs
- pop es
- mov bp,offset char
- mov cx,1
- mov dx,103
- mov bl,0
- mov bh,16
- mov al,0
- mov ah,11h
- int 10h ; устанавливаем символ
- pop es
- leave: popa
- RealInt: db 0EAh ; возвращаем управление старому обработчику прерывания
- RealAddr dw ?,?
- TSREnd = $
- ORG $-4
- ;----------------------------------------------------------------------------;
- SetIntVec:
- mov ax,3509h
- int 21h ; получаем адрес обработчика прерывания
- mov RealAddr[0],bx
- mov RealAddr[2],es
- mov ah,25h
- lea dx,Handler
- int 21h ; устанавливаем наш обработчик
- mov ah,49h
- mov es,ds:[2Ch]
- int 21h ; удаляем переменные окружения (освобождаем никому ненужную память)
- lea dx,TSREnd
- int 27h ; остаёмся резидентными
- END Start
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д