Немогу догнать что я делаю не так.Прога должна загружать файл в оперативку а потом побайтно читать. Пишу в ТАSМе. masm model small stack 100h DATA Segment byte public 'DATA' ; Описываем сегмент данных pl DW 0 ;длинна сстроки 2байта pl2 DW 0 ;длинна сстроки 2байта py DW 0 ;кол-во строк 2 байта pz DB 0 ;глубина фрезы 1байт pz=0 черный цвет, pz=FF белый цвет pd DB 0 ;диаметр фрезы 1 байт pz2 DB 0 ;глубина фрезы (2-ой параметр) 1байт pzi DB 0 ;истинное значение глубины фрезы 1байт pi DB 0 ; S23 DW 0 S22 DW 0 S21 DW 0 Ha DW 0 D22 DW 0 ;\ D21 DW 0 ; ---длинна файла в байтах Mem DW 0 ;переменная для начала сегмента выделенной памяти NA DB 's.bmp',0 NA2 DB 'sss.bmp',0 ;название открываемого файла DATA ENDS ; конец сегмента данных ; Сегмент кода - в нем расположим саму программу CODE Segment byte public 'CODE' ASSUME CS:CODE,DSATA,ESATA START: mov ah,48h mov bx,32768 ;512*(1024/16) int 21h ; Выделяем 512Kb памяти jnc Mee ; Продолжаем, если памяти хватает ;действие если ошибка ;........ Mee: mov Mem,ax mov es,ax ; ES = сегмент начала выделенной памяти mov ah,49h int 21h ;открыть фаил MOV AX,0019;H; INT 10H MOV AH,3DH MOV DX,SEG NA MOV DS,DX MOV DX,OFFSET NA2 MOV AL,0 INT 21H mov Ha,AX ;определяем размер файла mov bx,ax xor cx,cx xor dx,dx MOV AL,02 ; 0-Начало,1-В Текущ,2-На конец MOV AH,42H INT 21H ;в DX:AX -возвращается длинна файла в байтах mov D22,DX ;-длинна файла в байтах mov D21,AX ;-длинна файла в байтах ;указат MOV AH,42H MOV CX,0 MOV DX,0 MOV AL,0; 0-Начало,1-В Текущ,2-На конец INT 21H ;взять из файла MOV AH,3FH MOV BX,5 MOV DX,D22;---\ MOV DS,DX; }адрес куда послать даные файла MOV DX,D21;------/ MOV CX,65535;Длина фаила INT 21H ;закрыть MOV AH,3EH MOV BX,5 INT 21H ;читаем первый байт из памяти куда сохранили часть файла MOV DX,D22 \ MOV BX,D21 \ MOV DS,DX \ MOV AL,DS:[BX];-И ЭТО В ЦИКЛЕ ВОБЩЕМ ret code ends end start можно писать в АСЮ:429297632. могу небольшим денежным вознагрождением отблагодарить за помощь
IceT дальше идет дополнение к программе где она должна в порт этот байт выводить , а его там я невижу. вот и незнаю толи файл негрузится в память толи он неоттуда читает
1) не из всякого порта можно прочитать то, что записали. 2) где вы смотрите, что в порту и в какой порт пишите? 3) вы вообще слышали про сегменты, 512Кб сегментов в реальном режиме не держат 4) а отладчик на что 5) а зачем читать все разом, можно читать по частям, хоть по 1024 байта 6) в общем алгоритм следующий Код (Text): 1. читать из файла 1024 байт 2. выводить в порт прочитанное количество байт 3. если было прочитано 1024 байта, то перейти к п.1
max7C4 да это мне понятно уже пробовал выделить памяти всеголиш в 64кБ. и вы меня наверное неправильно поняли. читаю из файла, сохраняю в память, а из памяти в порт ЛПТ. если сам переменную выводимую в порт меняю то и в порту меняются еденицы на нули, а вот тут чтото немогу понять что нетак я зделал
ладно, тогда по порядку. 1) куда программа выходит после выделения памяти (сработало ли jnc) 2) Код (Text): ;открыть фаил MOV AX,0019;H; INT 10H вы представляете, что оно выдаст (всмысле какой режим установит, 320*200 16 цветов) 3) уверены, что файл открывается? 4) чет не то, вам так не кажется? 5) опять не то?
max7C4 jnc на ошибку не проверял пункт 2 мне такой экран нужен 3 пункту неуверен 4 и 5 пунк я непойму что я там нетак написал. можете пояснить? заранее спасибо
mov D22,DX ;-длинна файла в байтах mov D21,AX ;-длинна файла в байтах MOV DX,D22;---\ MOV DS,DX; }адрес куда послать даные файла MOV DX,D21;------/ пункт 4 аналогично