Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Подскажите, отказывается писать по адресу 
:(
    Опции темы
Гость_Владимир
Дата 12.6.2005, 14:13 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Подскажите пожалуйста:
Сначала выделяю память:
mov ah, 48h
mov bx, Par
int 21h
cmp ax,8
je mem1
mov Text_ad,ax
mov ah,48h
mov bx, Par
int 21h
cmp ax,8
je mem1
mov Text_num,ax
jmp mem2
mem1:
mov ah,09h
mov dx, offset mem_err
int 21h
jmp fin2
mem2:
...........
(При выделении памяти не возникает ошибка)
потом когда заполняю область памяти в цикле следующим кодом (привожу весь цикл, потому что уже совсем не понимаю где ошибка):

cikle:
call Glasn
cmp Ind, 01h
jne c1
mov bl, 01h
mov es:[si],bl
jmp c4
c1:
call Nsym
cmp Ind, 01h
jne c2
mov bl, 03h
mov es:[si], bl
jmp c4
c2:
mov es, Text_ad
mov bl, 20h
cmp es:[si], bl
jne c3
mov es, Text_num
mov bl, 00h
mov es:[si],bl
jmp c4
c3:
mov es, Text_num
call Soglasn
cmp Ind, 01h
je c5
mov es, Text_ad
mov bl,0ah
cmp es:[si],bl
jne c7
mov es, Text_num
mov bl,00h
mov es:[si],bl
jmp c4

c7:
mov bl,0dh
mov bh, es:[si]
cmp bh, bl
jne c6
mov es, Text_num
mov bl, 00h
mov bh, es:[si]
mov bh, bl
jmp c4

c6: ;выход из программы с сообщением о неправильном формате файла
mov ah,49h
mov es, Text_ad
int 21h
mov ah,49h
mov es, Text_num
int 21h
mov ah,9
mov dx, offset err_str
int 21h
mov ax, 4c00h
int 21h


c5:
mov bl, 02h
mov es:[si], bl
c4:
inc si
dec cx
cmp cx,0
je c8
jmp cikle
c8:

;создаем файл для вывода
mov ah,3ch
mov cx,0
mov dx,offset fname2
int 21h
jb fl3
mov ax,3d01h
mov cx,0
mov dx,offset fname2
int 21h
jb fl3
mov handle2, ax
jmp fl7


fl3:
mov ah,09h
mov dx, offset fl_err3
int 21h
jmp fin2

fl7:

Процедуры используемые здесь:

Glasn proc ;определяем гласная или нет
cld
push cx
push di
push es
mov es, Text_ad
lea di, glasn_str
mov cx,22
mov al,es:[si]
push ds
pop es
repne scasb
jne met1
mov ind,01h
jmp met2
met1:
mov ind,00h

met2:
pop es
pop di
pop cx
ret
endp

Nsym proc ;определяем ъ или ь
cld
push cx
push di
push es
mov es, Text_ad
lea di, nsym_str
mov cx,4
mov al,es:[si]
push ds
pop es
repne scasb
jne met3
mov ind,01h
jmp met4
met3:
mov ind,00h

met4:
pop es
pop di
pop cx
ret
endp

Soglasn proc ;определяем согласная или нет
cld
push cx
push di
push es
mov es, Text_ad
lea di, soglasn_str
mov cx,40
mov al,es:[si]
push ds
pop es
repne scasb
jne met5
mov ind,01h
jmp met6
met5:
mov ind,00h

met6:
pop es
pop di
pop cx
ret
endp


Записываю 01 если гласная, 02 если согласная, 03 если ъ или ь знак, 00 если пробел.
При проходе цикла в 28 раз встречается символ 03 и кусок примерно из 20 байт не записывается , дальше все продолжается, причем когда не пишет ничего не происходит как-будто всё в порядке вещей.

  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm для начинающих"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm для начинающих | Следующая тема »


 




[ Время генерации скрипта: 0.0505 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.