Форум программистов, компьютерный форум, киберфорум
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/18: Рейтинг темы: голосов - 18, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 22.11.2010
Сообщений: 14

Текстовый редактор

22.11.2010, 08:59. Показов 3732. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Народ,есть текстовый редактор,но он не совсем полный.Помогите добавить: удаление по клавише Del,переход на другую строку по клавише Enter,и сохранение в файл.И если возможно открыть файл и считать с него информацию.Код ниже

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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
; редактор
.model small
.stack 100h
.data
    InfoMess db 'Text editor.',0ah,0dh
             db 'Any key - run programm',0ah,0dh,'$'
    Xmax equ 80  
    Ymax equ 25
    
    cOff dw 0
.code
 
MoveCursor proc; dh-стр, dl-стл
    cmp dl,0
    jge mc_next1; >=0
    mov dl,Xmax-1
    dec dh
    cmp dh,0
    jge test_cur; >=0
    xor dx,dx
    jmp test_cur        
mc_next1:
    cmp dl,Xmax-1 
    jle mc_next2 ;<=
    xor dl,dl
    inc dh
    cmp dh,Ymax-1
    jle mov_cur;<=
    mov dl,Xmax-1
    mov dh,Ymax-1
    jmp test_cur    
mc_next2:   
    cmp dh,0
    jge mc_next3;>=
    xor dh,dh
    jmp test_cur
mc_next3:   
    cmp dh,Ymax-1
    jle test_cur;<=
    mov dh,Ymax-1   
test_cur:
    call AddrSym
    cmp si,bp
    jg no_move
mov_cur:
    xor bx,bx
    mov ax,0200h
    int 10h
    ret
no_move:
    mov dx,bx
    ret
MoveCursor endp
 
DelSym proc ;dh-стр, dl-стл Удаление символа с позиции курсора
    call AddrSym
    ;проветить нажата ли инсерт или нет
    ;если нет
    dec bp
    mov cx,bp
    sub cx,si
    mov di,si
    inc si
    shl si,1
    shl di,1
    push ds
    push es
    pop ds
    cld
    rep movsw
    pop ds
    mov word ptr es:[di],0720h
    ret
DelSym endp
 
InsSym proc; dh-стр, dl-стл, al-символ Вставка симола в позицию курсора
    cmp bp, 80*25
    jae  exit_InsSym
    call AddrSym
    ;проветить нажата ли инсерт или нет
    ;если нет
    mov cx,bp
    sub cx,si
    
    jcxz no_sym
    push si
    mov di,bp
    mov si,bp
    dec si
    shl si,1
    shl di,1
    push ds
    push es
    pop ds
    std
    rep movsw
    pop ds
    pop si
no_sym:
    shl si,1
    mov word ptr es:[si],ax
    inc dl
    inc bp
    call MoveCursor 
exit_InsSym:    
    ret
InsSym endp
 
AddrSym proc; dh-стр, dl-стл; SI адрес в поле 80х25
    push cx
    push ax
    push bx
 
    mov si,dx
    xor ax,ax
    xor bx,bx
    and si,00ffh
    mov bl,dh
    mov al,dh
    shl al,1
    shl al,1
    mov cx,4
    add ax, bx
    shl ax, cl
    
    add si,ax
 
    pop bx
    pop ax
    pop cx
    ret
AddrSym endp
 
.startup
    mov dx,offset InfoMess ; вывести информационное сообщение
    mov ax,0900h
    int 21h
    mov ax,0c07h ; ожидаем нажатие клавиши для запуска программы
    int 21h
run:
    mov ax,0f00h ;чтение информации о режиме экрана
    int 10h
    mov ah,bh 
    push ax
    
    mov ax,0003h ; 3 режим 80х25 
    int 10h
;   mov ax,0500h ; 2 страница активная
;   int 10h
 
    mov ax,0b800h
    mov es,ax
    xor dx,dx;начальное положение курсора
    xor bp,bp;счетчик символов 
getchar:
    mov ax,0700h ; ожидаем нажатие на клавишу
    int 21h
 
    cmp al,27;Esc   
    jne edit
    jmp exit
    
edit:
    mov bx,dx;запомнить старое положение курсора
    cmp al,8; BS
    jne edit0
    test dx,dx
    jz getchar;край экрана
        
    dec dl;сдвинуть курсор влево 
    call MoveCursor
    
    call DelSym;удалить символ под курсором
    jmp getchar
edit0:  
    cmp al,20h
    jb edit1
    cmp al,7dh
    ja edit1
    call InsSym 
    jmp getchar
 
edit1:
    cmp al,0; расширенный ASCII
    jne getchar
    mov ax,0700h
    int 21h 
    
    ;mov bx,dx;запомнить старое положение курсора
    ;cmp al,53;Del
    
    cmp al,48h; стрелка вверх
    jne kDown   
    dec dh
    jmp lSetCursor
kDown:
    cmp al,50h; стрелка вниз
    jne kLeft
    inc dh 
    jmp lSetCursor
kLeft:  
    cmp al,4bh; стрелка влево
    jne kRigth
    dec dl
    jmp lSetCursor
kRigth:
    cmp al,4dh; стрелка вправо 
    jne getchar
    inc dl
 
lSetCursor:
    call MoveCursor
    jmp getchar ; вернутся к опросу клавиатуры
exit:
    pop dx ;восстанавливаем режим экрана
    mov ax,0000h
    mov al,dl
    int 10h
    mov ax,0500h ;восстанавливаем активную страницу
    mov al,dh
    int 10h
exit1:
    mov ax, 4c00h ; закончить программу
    int 21h
end
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.11.2010, 08:59
Ответы с готовыми решениями:

Текстовый редактор
Доброго времени суток, уважаемые. Не поможете ли разобраться с одной проблемой? Есть готовый редактор, написанный на ассемблере, но вот...

Текстовый редактор на Asm
Доброго времени суток! Необходимо сделать примитивный текстовый редактор, чтобы можно было редактировать текст, считывать с файла текст и...

Написать текстовый редактор под dos
Нужно написать простой текстовый редактор похожий на блокнот в windows с функцией сохранения,редактирования и открытия файлов

5
69 / 74 / 0
Регистрация: 15.12.2008
Сообщений: 302
22.11.2010, 11:03
эта программа не предназначена для такого, проще написать новую, хотя Del еще можно добавить
0
0 / 0 / 0
Регистрация: 22.11.2010
Сообщений: 14
22.11.2010, 11:59  [ТС]
Может тогда у кого то есть готовый текстовый редактор,простой.
0
20 / 19 / 1
Регистрация: 16.10.2010
Сообщений: 74
22.11.2010, 21:03
конечно, есть! Например, в папке
C:\masm32\examples\exampl02\qikpad
- всего 600 строк, а у тебя уже 200. В AsmEditV5 исходники посмотри - там с комментариями (сорцы WordEdit глянь). И скачай
win32asmboard_code_arhive.tar.bz2
- там куча файлов на асме с исходниками.
0
0 / 0 / 0
Регистрация: 22.11.2010
Сообщений: 14
22.11.2010, 22:06  [ТС]
Цитата Сообщение от xOr Посмотреть сообщение
win32asmboard_code_arhive.tar.bz2
что-то я не могу это в интернете найти.Не подскажешь?
0
20 / 19 / 1
Регистрация: 16.10.2010
Сообщений: 74
22.11.2010, 23:52
мои гугля и рамблер находят первой ссылкой. Исчи!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.11.2010, 23:52
Помогаю со студенческими работами здесь

Текстовый редактор на Ассемблере: нужны исходники или готовый код
Доброе время суток. Уважаемые программисты, помогите, нужны исходники или куски исходников к самому простому текстовому редактору...

Чтобы создать текстовый редактор и компилятор на машинном языке, нужно?
предварительно создать операционную систему, для управления процессами?

Текстовый редактор на MASMe
Может кто то предоставить самый примитивный текстовый редактор (на MASMe) на 3 функции: -Открыть файл -Редактирование его -Сохранить...

Подскажите текстовый редактор
Приветствую! Текстовый редактор Notpade++, в нем есть возможность сворачивать строки, но только при web синтаксисе Есть ли что...

Добавить в текстовый редактор функцию открытия файла
Есть очень навороченный текстовый редактор, он умеет многое, но только не открывать файл. Помогите пожалуйста упростить по максимуму и...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1 У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\ А в самом низу файла-профиля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru