Консультация # 44451: Еще один вопрос... Что неверно в этой программе (открытие текстового документа), возможно я что то не так понял, помогите плз.....
Консультация # 23918: Здраствуйте. Я пытаюсь изучать асамблер по руководству Калашникова. И когда я компилирую вот етот текст: CSEG segment org 100h Begin: mov ax,0B800h mov es,ax mov di,0 mov al,1 mov ah,31 mov cx,2000 Next_face: mov es:[di],ax add di,2 loop Next_face mov ah,10hКонсультация # 127192: Здравствуйте уважаемые эксперты!!я приобрел книгу О.Калашникова "Ассемблер это просто!!" и у меня появились проблемы с компиляцией .asm файлов!!Набираю программу в блокноте либо в edit.com, сохраняю в файл с ASM расширением и копилирую путем запуска с командной строки C:MASM611BINML.EXE PROG001.asm /AT . Как я понимаю, в каталоге BIN (где...
Еще один вопрос... Что неверно в этой программе (открытие текстового документа), возможно я что то не так понял, помогите плз..
Дата отправки: 28.05.2006, 05:30 Вопрос задал: Бородин Евгений Викторович / k Всего ответов: 1 Страница онлайн-консультации »
Консультирует Пан Павел Константинович:
Здравствуйте, Бородин Евгений Викторович / kain!
Если вы решаете такую задачу то я вам рекомендую делать это через модель памяти TINY т.е. формат файла *.COM, где все сегментные Регистры равны между собой, это уменьшит код программы и упростит сопровождение.
Далее идёт код который демонстрирует только Открытие и Закрытие файла.
CSEG segment assume cs:CSEG,ds:CSEG,ss:CSEG,es:CSEG org 100h Begin: ;==================== ;Open file ;OUT: ax = handle mov ax,3D00h lea dx,filename int 21h ;==================== xchg ax,bx ;bx = handle ;==================== ;Close file mov ah,3Eh int 21h ;==================== ret ;exit ;==================== filename db \'1.txt\',0 CSEG ends end Begin
У вас в коде есть отрывок:
mov [numb],ax ;Здесь вы сохраняете Handle
mov ah,3Fh ;Номер функции Чтения из Файла mov cx,0FF00h ;Колличество считываемых байт mov dx,offset Buffer ;Адрес буфера куда будут читаться данные int 21h
Этот отрывок предназначен для чтения из файла. В данном отрывке не хватает загрузки в регистор BX, хэндла файла т.е. правельная версия выглядит так:
mov [numb],ax ;Здесь вы сохраняете Handle
mov bx,ax ;bx = HANDLE FILE
mov ah,3Fh ;Номер функции Чтения из Файла mov cx,0FF00h ;Колличество считываемых байт mov dx,offset Buffer ;Адрес буфера куда будут читаться данные int 21h
С, Уважением MnEm0n!C.
Консультировал: Пан Павел Константинович Дата отправки: 28.05.2006, 14:45
Здравствуйте, D.O.O.! Дело в том что ассемблер не знает чему у тебя равен CS, поэтому укажи ему, поставь после CSEG segment строку assume cs:CSEG, ds:CSEG, ss:CSEG, es:CSEG и все заработает.
Консультировал: Стас (Специалист) Дата отправки: 24.07.2005, 00:42
Здравствуйте уважаемые эксперты!!я приобрел книгу О.Калашникова "Ассемблер это просто!!" и у меня появились проблемы с компиляцией .asm файлов!!Набираю программу в блокноте либо в edit.com, сохраняю в файл с ASM расширением и копилирую путем запуска с командной строки C:MASM611BINML.EXE PROG001.asm /AT . Как я понимаю, в каталоге BIN (где и находится компилятор) должны появиться 2 файла с расширениями .com и .obj, но не появляется ничего!!Разъясните пожалуйста !! заранее благодарен
Использовать линкер можно примерно с такой командной строкой:
LINK /TINY имя.obj,имя.com;
; - обрывает строку
ключ /TINY - определяет мини-модели, то есть обычный формат com-файла для DOS. Для облегчения компиляции com-программ можно сделать следующее: Переименовать Segmented Executable Linker LINK.EXE в LINKDOS.EXE Поместить его в папку MASM32\BIN Создать в той же папке файл BCOM.BAT с таким содержанием:
@echo off if exist "%1.obj" del "%1.obj" if exist "%1.exe" del "%1.ex e" \masm32\bin\ml /c /AT "%1.asm" if errorlevel 1 goto errasm \masm32\bin\LINKDOS /TINY "%1.obj","%1.com"; if errorlevel 1 goto errlink dir "%1.*" goto TheEnd :errlink echo _ echo Link error goto TheEnd :errasm echo _ echo Assembly Error goto TheEnd :TheEnd pause
Линк по теме: http://bitfry.narod.ru/17.htm
Консультировал: Zetasm Дата отправки: 13.03.2008, 23:25
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
Комментариев нет:
Отправить комментарий