0 / 0 / 1
Регистрация: 13.02.2011
Сообщений: 8
1

Замена символа на экране при прямом доступе к видеопамяти

13.02.2011, 23:19. Показов 1448. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно в процедуре обработать выведеную на экран строку следующим образом: с помощью видеопамяти загрузить символ с экрана и сравнить его с "А". Если одинаковые, то на экране заменить текущий символ тем, который перед этим ввели. Ниже код процедури, но она не правильно работает:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
obrob proc
    pushf
pr:
    mov ah,10h      ;вводим символ с клавиатуры
    int 16h
 
    mov l,ah
 
    cmp ah,esc_key
    je exit
 
    jmp obr
exit:
    mov AX,4c00h
    int 21h
 
obr:
 
    mov  ax, 0b800h
    mov  es, ax
    mov  di, 0
    mov  si, 0
 
    cld
    mov ax,0
    mov cx,13
    K:
        lodsb
        cmp al,'A'
        JE K1
        inc di
        inc si
        jmp K2
    K1:
        mov al,l
        stosb
    K2: inc di
        inc si
        loop K
    jmp pr
    iret
obrob endp
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.02.2011, 23:19
Ответы с готовыми решениями:

При движении символа '##' по тексту дали команду cls – остался след от символа на экране
Программа запускается через командную строку. По экрану летает символ "##" . Попадая на какой-либо...

Замена символа при вводе
Хочу сделать так чтоб при readln(S); если человек вводит символ '#' программа вводила символ...

EditText Замена символа при вводе
Всем привет! Помогите реализовать замену символа ' ' на '_' при вводе. Пытался сделать с...

Замена символа в строке на число соответствующему номеру по порядку вхождения этого символа в строку
В заданной строке заменить каждый символ «*» числом, соответствующим номеру по порядку вхождения...

4
4149 / 1803 / 213
Регистрация: 06.10.2010
Сообщений: 4,033
14.02.2011, 19:11 2
Заменить все символы "A" на какой-нибудь другой можно таким циклом
Assembler
1
2
3
4
5
6
7
8
push 0B800h
pop  es
mov  di,3998
mov  ah,<символ для замены>
c:mov     al,'A'
  cmpxchg es:[di],ah
  sub     di,2
jnl c
Добавлено через 1 минуту
для компиляции нужна директива .486
0
0 / 0 / 1
Регистрация: 13.02.2011
Сообщений: 8
14.02.2011, 19:42  [ТС] 3
Цитата Сообщение от murderer Посмотреть сообщение
для компиляции нужна директива .486
Что-то не выходит подключить... Вроде прописал вначале, а оно пишет "Expected: instruction or directive".
0
4149 / 1803 / 213
Регистрация: 06.10.2010
Сообщений: 4,033
14.02.2011, 19:46 4
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
.model tiny
.code
.486
.startup
org 100h
  mov ax,3
  int 10h
  
  mov ah,9
  mov dx,offset _str
  int 21h
  
  push 0B800h
  pop  es
  mov  di,3998
  mov  ah,'B';<символ для замены>
  c:mov     al,'A'
    cmpxchg es:[di],ah
    sub     di,2
  jnl c
 
  xor ax,ax 
  int 16h
ret
 
_str db 'AsdsfA$'
end
Добавлено через 41 секунду
Надеюсь знаешь как com-программу линковать
1
0 / 0 / 1
Регистрация: 13.02.2011
Сообщений: 8
15.02.2011, 19:05  [ТС] 5
Спасибо, murderer, вроде бы все ОК
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.02.2011, 19:05
Помогаю со студенческими работами здесь

не могу понять реальный объём видеопамяти. (Ноут за 10к с 6 ГБ видеопамяти О_о)
Друг реши себе ноут взять на авито. Вот вижу такое объявление: Тыц Заголовок товара: Мощный HP...

Поиск и замена только при условии наличия определенного символа перед искомой строкой
Нужно сделать замену в документе word по следующему шаблону: &quot;(не точка);пробел;перенос строки&quot; на...

Замена символа на их сочетание - происходит множественная замена
примером есть у меня текст типа &quot;globus&quot; замена у меня происходит так: gg = gg.Replace(&quot;a&quot;,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru