текстовый редактор на Асме
Модераторы: Naeel Maqsudov, C_O_D_E
-
- Сообщения: 4
- Зарегистрирован: 25 апр 2008, 16:45
Мне нужно написать тектовый редактор на ассемблере..
если есть какие нибуть алгоритмы,исходники или мысли о программе напишите пожалуйста)
заранее благодарен.
если есть какие нибуть алгоритмы,исходники или мысли о программе напишите пожалуйста)
заранее благодарен.
Есть программа, только очень ограниченная, позволяет вводить символы, работает с одним экраном (80*25), навигация по тексту стрелки, удалять BackSpace, если есть желание разбираться давайте майл, в программе три экрана где-то текста.
-
- Сообщения: 4
- Зарегистрирован: 25 апр 2008, 16:45
Спасибо! Fox_ne@mail.ru
с удовольствием приму еси ещё что то есть)
с удовольствием приму еси ещё что то есть)
-
- Сообщения: 375
- Зарегистрирован: 31 авг 2007, 03:06
ну, редактор не такая уже и элементарная задача..
тем более на асме.
ну вот, порыскал по сети чуток..
может пригодятся ссылочки:
http://programmerts.by.ru/assembler/ishod/
http://mc-black.narod.ru/x3mEd.htm
тем более на асме.
ну вот, порыскал по сети чуток..
может пригодятся ссылочки:
http://programmerts.by.ru/assembler/ishod/
http://mc-black.narod.ru/x3mEd.htm
- mc-black
- Сообщения: 250
- Зарегистрирован: 08 май 2008, 16:09
- Откуда: Россия, Нижний Новгород
- Контактная информация:
Собственно вот и сам автор этого безобразия:
http://mc-black.narod.ru/x3mEd.htm
Если его надо сдать как курсовик, то я бы на вашем месте убрал из него поиск по тексту - там сильно глючило и вообще сам проект давно заброшен. Есть редактор в знаменитых пособиях iczellion'a и ещё пяток - не меньше - редактором можно найти в исходниках на васме (wasm.ru)
http://mc-black.narod.ru/x3mEd.htm
Если его надо сдать как курсовик, то я бы на вашем месте убрал из него поиск по тексту - там сильно глючило и вообще сам проект давно заброшен. Есть редактор в знаменитых пособиях iczellion'a и ещё пяток - не меньше - редактором можно найти в исходниках на васме (wasm.ru)
Я мог бы выставить свой редактор (70kb, tasm) если интересно. Он может прокручивать текст, менять цвет, есть коммандная строка и т.п.
P.S. если бы мне позволили прикрепить файл
P.S. если бы мне позволили прикрепить файл

-
- Сообщения: 4
- Зарегистрирован: 25 апр 2008, 16:45
70 kb мощно конечно)))))) не разберусь))
-
- Сообщения: 4
- Зарегистрирован: 25 апр 2008, 16:45
вот прога...сюда надо вставить выход по клавише,переход на новуцю строку по нажатию enter...и много ли будет кода для подключения возможности выделения\копипаста? и ещё вопрос в сохранении,открывании файла,много это работы?; редактор
.model small
.stack 100h
.data
InfoMess db 'Text editor.',0ah,0dh
db 'Any key - run programm',0ah,0dh,'$'
Xmax equ 80
Ymax equ 25
enter db 0ah,0dh
cOff dw 0
.code
MoveCursor proc
cmp dl,0
jge mc_next1
mov dl,Xmax-1
dec dh
cmp dh,0
jge test_cur
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
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
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
Ent proc
mov ah, 07h
int21h
cmp ah, enter
je bl1
bl1:
cmp
Ent endp
AddrSym proc
push cx
push ax
push bx
mov si,dx
xor ax,ax; =0
xor bx,bx; =0
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
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
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
заранее благодарю)
-
- Сообщения: 2
- Зарегистрирован: 14 дек 2009, 11:11
Ребята выручайте, мне нужна блок-схема данной программы (исходник выше)___он мне как раз подходит. И комментари к коду...чтобы для простого смертного как я было понятно, что происходит на каждом этапе.
Разумеется за вознаграждение
Разумеется за вознаграждение
