![]() |
1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!
![]() |
Хорек |
![]()
Сообщение
#1
|
![]() Группа: Пользователи Сообщений: 1 Пол: Мужской Репутация: ![]() ![]() ![]() |
Здравствуйте.
Задание такое: Цитата Составить программу повторяемости слов в тексте. Исходный текст в файле. Надо вывести кол-во повторений слова "see". Использовать для текста: See my eyes I can hardly see See me stand I can hardly walk I believe you can make me whole See my tongue I can hardly talk See my skin I'm a mass of blood See my legs I can hardly stand I believe you can make me well See my purse I'm a poor poor man. Написал вот такой код (ногами не пинать, асм последний раз 5 лет назад видел): data segment
S_file db "Source.txt", 0
R_file db "Result.txt", 0
;--------------------------------------------------
Handle_S dw ?
Handle_R dw ?
;-------------------------------------------------
S_size dd 0
;-------------------------------------------------
point_FName2 dd R_file
point_fName dd S_file
point_string dd string
;-------------------------------------------------
string db 80 dup(" ")
str1 db 'Result'
l_string=$ - string
kol db 0
;------------------------------------------------
data ends
stck segment
db 200 dup(?)
stck ends
code segment
assume cs:code, ds:data, ss:stck
begin:
mov ax, data
mov ds,ax
;Open source.txt
mov ah,3dh
mov al,0
lea dx,s_file
int 21h
jc exit ;if failed
mov handle_s,ax ;save handle
;указатель первого файла на начало
mov ah,42h
mov bx,handle_s
xor cx,cx
xor dx,dx
mov al,0
int 21h
; ------------получаем размер--------------------
mov bx, ax
mov al, 2
xor cx, cx
xor dx, dx
mov ah, 42h
int 21h
jc exit
; size in dx:ax
;указатель первого файла на начало
mov ah,42h
mov bx,handle_s
xor cx,cx
xor dx,dx
mov al,0
int 21h
jc exit
;read
mov bx, handle_s
mov cx, l_string
lds dx, point_string
mov ah, 3fh
int 21h
jc exit
mov di, offset string
mov si, offset string
mov cx, l_string
cycl:
cmp byte ptr[si], 53h
jne no
inc di
cmp byte ptr[di], 'e'
jne no
inc di
cmp byte ptr[di], 'e'
jne no
inc di
cmp byte ptr[di], ' '
jne no
inc kol
no:
inc si
dec cx
cmp byte ptr[si], 0
je exit
text:
mov ah, 09h
mov dx, offset str1
int 21
mov ah, 10h
int 16h
exit:
mov ah,3eh
mov bx,handle_s
int 21h
int 20h
code ends
end begin
Проблема в том, что что-то пошло не так, и результат не выводится. Помогите, пожалуйста разобраться. Сообщение отредактировано: Хорек - 16.03.2008 20:18 |
![]() ![]() |
![]() |
Текстовая версия | 28.07.2025 0:45 |