![]() |
|
|
![]()
|
|
| Гость_Владимир |
|
|||
|
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. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Asm для начинающих | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |