Помощь - Поиск - Пользователи - Календарь
Полная версия: Файлы
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Ассемблер
Айра
Всем здрасьте)
То ли я совсем слепая и не вижу глупой ошибки, то ли это мистикакая какая-то.
Не могу понять, почему в этом коде файл создается (тут надо было просто записать n чисел в файл)
include io.asm

stak segment
db 32 dup (?)
stak ends
data segment
file_name db 'file.dat','0'
st_error1 db 'error_1 !','$'
st_error2 db 'error_2 !','$'
buf dw ?
n dw ?
handler dw ?
data ends
code segment
begin proc
assume ss: stak, ds: data, cs: code
push ds
mov ax,data
mov ds,ax
xor ax,ax
push ax

mov ah,3ch
mov cx,0
lea dx,file_name
int 21h
jc error1
mov handler,ax
jmp cont

error1:
mov ah,9h
lea dx,st_error1
int 21h
jmp exit

cont:
inint n
mov cx,n
a1: push cx
inint buf
mov ah,40h
mov bx,handler
mov cx,2
lea dx,buf
int 21h
jc error2
cmp ax,2
jne error2
pop cx
loop a1
jmp close

error2:
outint ax
mov ah,9h
lea dx,st_error2
int 21h

close:
mov ah,3eh
mov bx,handler
int 21h
exit:
mov ah,4ch
int 21h
begin endp
code ends
end begin


а тут ошибка 3 (здесь надо в файл g.dat поместить четные элементы, в h.dat - нечетные)
include io.asm

stak segment
db 32 dup (?)
stak ends
data segment
file_name1 db 'g.dat','0'
file_name2 db 'h.dat','0'
error1 db 'Σб⌐Ѕ ЎС Я«єсбЎ, ¬«с «Φїн¬ї - ','$' ; файл не создан, код ошибки -
error2 db '«Φїн¬б »αї τΓСЎїї\єб»їЯї, ¬«с «Φїн¬ї - ','$' ; ошибка чтения\записи, код ошибки -
s1 db 'ууСсїΓС ¬«ЅїτСЯΓу« φЅСјСЎΓ«у: ','$' ; введите количество элементов
s2 db 'ууСсїΓС τїЯЅ«: ','$' ; введите число
a dw ?
n dw ?
dva dw 2
handler dw ?
handler1 dw ?
handler2 dw ?
vvd macro x
push ax
mov ah,9h
lea dx,x
int 21h
pop ax
endm
data ends
code segment
begin proc
assume ss: stak, ds: data, cs: code
push ds
mov ax,data
mov ds,ax
xor ax,ax
push ax

mov ah,3ch
mov cx,0
lea dx,file_name1
int 21h
jc err1
mov handler1,ax

mov ah,3ch
mov cx,0
lea dx,file_name2
int 21h
jc err1
mov handler2,ax
jmp cont

err1:
vvd error1
outint ax
jmp exit

cont:
vvd s1
inint n
mov cx,n
a1: push cx
mov ax,handler1
mov handler,ax
inint a
xor dx,dx ; глупое ошибко найдено )
mov ax,a
div dva
cmp dx,0
je a2
mov ax,handler2
mov handler,ax
a2: mov ah,40h
mov bx,handler
mov cx,2
lea dx,a
int 21h
jc err2
cmp ax,2
jne err2
pop cx
loop a1
jmp close

err2:
vvd error2
outint ax

close:
mov ah,3eh
mov bx,handler1
int 21h

mov ah,3eh
mov bx,handler2
int 21h

exit:
mov ah,4ch
int 21h
begin endp
code ends
end begin


добавлено: да, забыла, компилятор - tasm, OC - виста, оба кода запускаются с флешки, и файлы, создаются там же, если это имеет значение..
volvo
Угу, мистика... Как у тебя в первом случае это работало - непонятно. Вообще-то надо завершать строку нулем (это все-таки ASCIIZ-строка), а не символом '0':
  file_name1 db 'g.dat',0
file_name2 db 'h.dat',0
теперь оба файла прекрасно создаются...
Айра
ээ.. дык ноль там, несколько раз проверяла.. только вот нам говорили, что его в апострофы брать надо..
*пошла проверять без апострофов

Добавлено через 1 мин.
создался без них.. спасибо smile.gif буду разбирать дальнейшие ошибки..
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.