Есть файл с данными data.dat Код (Text): <'Vopros1',"Skolko budet dva plus dva",'tri','piat','cetyre','3'> Код программы asem.asm Код (Text): FileName DB 'C:/4023_3/TASM4/data.dat',0h Buffer DB 41h DUP(0),'$' mov dx, OFFSET FileName ; имя файла CALL OpenFileRead mov bx,ax ; дескриптор файла в ВХ mov ah,3fh ; функция чтения файла mov cx,41h ; сколько читать mov dx,OFFSET Buffer ; буфер int 21h ; выполнить vopros struc voprosnomer db 8 dup(" ") voprosy db 30 dup(" ") otvet1 db 10 dup(" ") otvet2 db 10 dup(" ") otvet3 db 10 dup(" ") protvet db 1 dup(" ") vopros ends [u]stroka1 vopros [b]buffer[/b][/u] так вот вопрос, как обратиться к структуре чтоб, данные с файла привязаны были к stroka1 vopros buffer - это неправельный вариант.
Либо так: vopros struc voprosnomer db 8 dup(" ") ... protvet db 1 dup(" ") vopros ends buffer vopros <> mov al,byte ptr buffer.protvet Либо так: mov si,offset buffer mov al,[si].protvet
buffer vopros <> У меня buffer - это <'Vopros1',"Skolko budet dva plus dva",'tri','piat','cetyre','3'> следобательно buffer должен стоять слева от vopros ! или я не прав!
И еще идентификатор buffer уже объявлен с другим типом, так что buffer vopros <> тоже не подходит, как описать не знаю :/
Код (Text): .286 vopros struc voprosnomer db 8 dup(?) voprosy db 30 dup(?) otvet1 db 10 dup(?) otvet2 db 10 dup(?) otvet3 db 10 dup(?) protvet db 1 dup(?) vopros ends text segment byte public assume cs:text,ds:text org 100h begin: ; Read filename from CMD mov ax,3D02h xor cx,cx mov bl,ds:[80h] xor bh,bh mov byte ptr ds:[bx+81h],0 mov dx,82h int 21h jnc @@FileOpened mov ah,09h mov dx,offset MsgFileNotOpened int 21h ret MsgFileNotOpened db 'File not opened !',0Dh,0Ah,'/code] @@FileOpened: mov bx,ax mov ah,3Fh mov cx,size vopros mov dx,offset myvopros int 21h cmp ax,cx jz @@FileReaded mov ah,09h mov dx,offset MsgFileNotRead int 21h ret MsgFileNotRead db 'File not read !',0Dh,0Ah,'/code] @@FileReaded: ; Display vopros.voprosy mov ah,09h mov dx,offset myvopros.voprosy push word ptr myvopros.voprosy[size voprosy] mov byte ptr myvopros.voprosy[(size voprosy)-1],'/code] int 21h pop word ptr myvopros.voprosy[size voprosy] ret myvopros vopros <> Text Ends end begin