Доброго времени суток. Нужно выделить область памяти под файл. Но никак не получается это сделать, постоянно выдаёт ошибку, какого бы размера файл ни выбирал. Уже несколько дней сижу. Вот имеющийся код.
| Код | .386 dseg segment use16 psp_ dw 0 text db 'Vvedite put k failu: $' text1 db 'Oshibka otkritiya faila!$' text3 db 'Ne udalos videlit pamyat!$' filename db 30, 29 dup(?) dseg ends eseg segment use16 memory dw ? sizefile dw ? estr1 dw ? nstrend dw ? estrend dw ? handle dw ? eseg ends cseg segment use16 assume ds: dseg, cs: cseg, es: eseg ;загрузка регистров-указателей сегмента ds, es begin: mov cx, dseg mov ds, cx mov ds:psp_,es mov cx, eseg mov es, cx ;ввод имени файла mov ah,9 lea dx,text int 21h mov ah,0ah lea dx,filename int 21h ;открытие файла для чтения/записи lea si,ds:filename+1 movzx bx,byte ptr ds:[si] inc si mov byte ptr ds:[bx+si],0 mov dx,si mov al,2 mov ah,3dh int 21h mov es:handle, ax jc error ;определим размер файла mov bx, ax mov cx,0 mov dx,0 mov al,2 mov ah, 42h int 21h mov es:sizefile, ax ;установка указателя на начало файла mov bx, es:handle mov al, 0 mov cx, 0 mov dx, 0 mov ah, 42h int 21h ;выделим память mov ah,4ah mov es,ds:[psp_] mov bx,0ffffh int 21h mov ax, es:sizefile shr ax, 4 inc ax inc ax sub bx,ax push ax mov ah,4ah int 21h mov ah,48h pop bx dec bx int 21h jc errormem
|
Добавлено через 2 минуты и 28 секунд Извините, опечатался в названии темы. |