Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.11.2018, 12:24   #1
Kalu4ka
Новичок
Джуниор
 
Регистрация: 02.10.2018
Сообщений: 2
По умолчанию Работа с буфером клавиатуры (посимвольное очистка консоли)

Программа выводит нажатые клавиши в консоль. Нажимая кнопку backspace символ "удаляется" из консоли.

1)Проблема в том что не "удаляется" последний символ.

2)Удаляя первый символ указатель стрелочка прыгает в непонятную сторону.Как от этого избавиться ?
Это происходит потому что я делаю sub si,2 в самом начале процедуры del, поэтому и возникает этот баг,но я не знаю как реализовать удаление по другому.
Подскажите как исправить эти два бага.

Код:
org 100h
 mov ah,0
 mov al,3
 int 10h
 
 start:
 mov ax,0b800h
 mov es,ax
 mov ax,0040h
 mov fs,ax
 mov si,0
 mov di,[fs:1Ch]
 
 mov cx,16
 main:
 mov ah,00h
 int 16h
 cmp al,1Bh
 je quite_program
 cmp al,08h
 je del
 call clear_draw
 call draw
 mov ah,07h
 mov [es:si],ax
 l:add si,2
 
 loop main
 mov ax,1eh
 mov [fs:1Ah],ax
 mov [fs:1Ch],ax
 jmp start
 
;-----------------------------------------------
 del: 
 sub si,2
 mov ax,00h
 mov [es:si],ax
 sub si,2
 push si
 mov word [es:si+160],0318h
 mov  word [es:si+162], 0
 pop si
 add cx,2
 jmp l
 
;-----------------------------------------------
 draw:
 push si
 push ax
 add si,160
 mov ax,0318h
 mov [es:si],ax
 mov ax,00h
 sub si,2
 mov [es:si],ax
 pop ax
 pop si
 ret
 
;---------------------------------------------------------
 clear_draw:
 push si
 push ax
 mov si,190
 mov ax,00h
 mov [es:si],ax
 pop ax
 pop si
 ret
 
;---------------------------------------------------------
 quite_program:
 mov ah,4ch
 int 21h
 ret
_____
Код программы нужно выделять (форматировать) тегами [CODE] [/CODE] (читать FAQ)
Модератор

Последний раз редактировалось Kalu4ka; 19.11.2018 в 01:47.
Kalu4ka вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Очистка консоли Xcode в необходимые моменты limas94 Общие вопросы C/C++ 0 28.08.2018 14:03
Очистка буфера ввода консоли Anton_Jag Общие вопросы C/C++ 7 03.06.2018 20:08
[Assembler] Буфером клавиатуры и вывод на экран Oktaram Помощь студентам 5 23.02.2013 13:27
Посимвольное считывание из файла. Проблема кодировки. Кириллица в консоли. SrgGld Общие вопросы C/C++ 0 16.11.2010 20:34
Резидентная программа. Работа с буфером клавиатуры Vohakisa Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 21.06.2009 00:16