Автор: DeadStrelok
Дата сообщения: 17.10.2010 17:57
[more=Вот что я написал]
.MODEL small
.STACK 256
.data
string db 'a','b','c','d','e','f','g','h','i'
sogl db 'bcdfghjklmnpqrstvwxz'
X dw ?
failed db 0ah,0dh, 'Нет согласных символов в массиве! ','$'
success db 0ah,0dh, 'Согласные символы в массиве присутствует: ','$'
foundtime db ? ; количество наиденных элементов
fnd db ' шт.',0ah,0dh,'$'
.code
ASSUME ds:@data, es:@data
main:
mov ax, @data
mov ds, ax
mov es, ax
lea di, sogl
xor al, al
mov si, 0 ; si - столбцы в матрице
mov bx, 0 ; bx - строки в матрице
mov cx, 3 ; число для внешнего цикла (по строкам)
external: ; внешний цикл по строкам
push cx ; сохранение в стеке счетчика внешнего цикла
mov cx, 3 ; число для внутреннего цикла (по столбцам)
mov si, 0
iternal: ; внутренний цикл по столбцам
mov al, string[bx][si] ; в аl первый (очередной) элемент матрицы
inc si ; передвижение на следующий элемент в строке
cld ; ;брос флага df
lea di, sogl ; загрузка в es:di смещения строки
mov X, cx
mov cx, 20 ; для префикса repne - длина строки
;поиск в строке (пока искомый символ и символ в строке не совпадут)
repne scasb sogl
je found ; если равны
jmp notfound ; если не равны
found: inc foundtime ; увеличиваем счетчик совпавших
notfound:
mov cx, X
loop iternal ; цикл внутренний
move_next: ; продвижение в матрице
pop cx ; восстанавливаем СХ из стека
inc bx ; передвигаемся на следующую строку
loop external ; цикл внешний
cmp foundtime, 0h ; сравнение числа совпавших с 0
ja eql ; если больше 0, то переход
not_equal: ; нет согласных а массиве
mov ah, 09h ; вывод сообщения на экран
mov dx, offset failed
int 21h
jmp exit ; на выход
eql: ; есть элементы, совпавшие с искомым
mov ah, 09h ; вывод сообщений на экран
mov dx, offset success
int 21h
mov ah, 02h
mov dl, foundtime
add dl, 30h
int 21h
mov ah, 09h
mov dx, offset fnd
int 21h
exit: ; выход
mov ax, 4c00h ; стандартное завершение программы
int 21h
end main ; конец программы
[/more]
Посмотрите, пожалуйста, к строке repne scasb sogl ассемблер выдает ошибку Must have instruction after prefix. Подскажите, что делать.