Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Ассемблер? Это просто! Учимся программировать


РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты в разделе

Коцюрбенко Алексей aka Жерар
Статус: Мастер-Эксперт
Рейтинг: 443
∙ повысить рейтинг »
Evgen aka Chuma
Статус: 6-й класс
Рейтинг: 52
∙ повысить рейтинг »
quirck
Статус: 1-й класс
Рейтинг: 0
∙ повысить рейтинг »

∙ Assembler

Номер выпуска:1688
Дата выхода:13.02.2018, 21:45
Администратор рассылки:Лысков Игорь Витальевич (Старший модератор)
Подписчиков / экспертов:54 / 18
Вопросов / ответов:1 / 1

Консультация # 192544: Здравствуйте! Прошу помощи в следующем вопросе: работаю на WinXP, опять проблема с примером из Калашникова:
;открытие, чтение и вывод файла на экран
CS
...

Консультация # 192544:

Здравствуйте! Прошу помощи в следующем вопросе:
работаю на WinXP, опять проблема с примером из Калашникова:

;открытие, чтение и вывод файла на экран
CSEG segment  ;в com-файлах существует только один сегмент
assume cs:CSEG, ds:CSEG, es:CSEG, ss:CSEG 
org 100h
Start:
  ;mov ax,0003h   
  ;int 10h
          
  mov dx,offset File_name 
  call Open_file 
  jc Error_file
  mov bx,ax                          ;сохраняем id файла
  
  mov ah,3Fh 
  mov cx,offset Finish-100h ;сколько байтов будем читать
  mov dx,offset Start   ;читаем файл в память...
  int 21h   ;...с метки Start 
  
  call Close_file                ;вызываем процедуру закрытия и...
  mov ah,9 
  mov dx,offset Mess_ok  ;...сообщаем об этом
  int 21h 
  ret 
  
  Error_file:                       ;сигнал, если файл не нашли
    mov ah,2 
    mov dl,7 
    int 21h 
    ret 
    
  Open_file proc 
    cmp Handle,0FFFFh             ;открыт-ли файл...
    jne Quit_open                    ;...если нет-открываем
    mov ax,3D00h 
    int 21h 
    mov Handle,ax 
    ret 
    Quit_open: 
      stc                                    ;установка флага переноса в 1 (3Dh)
      ret                                  ;подтверждение факта открытия-для jc
      Handle dw 0FFFFh 
  Open_file endp
  
  Close_file proc 
    mov ah,3Eh 
    mov bx,Handle 
    int 21h 
    ret 
  Close_file endp 
  
  File_name db '07.asm', 0 
  Mess_ok db 'Все нормально!', 0Ah, 0Dh, '$' 
  Finish equ $                               ;адрес конца программы
CSEG ends
end Start

При попытке создать com-файл появляется форточка с сообщением : Процессор NTVDM обнаружил недопустимую инструкцию. CS:00cf IP:0911 OP:de df 90 91 92. А при подключении (mov ax,0003h int 10h) появляется чистая панель с мигающим курсором.


Дата отправки: 08.02.2018, 12:50
Вопрос задал: cupoma58 (Посетитель)
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Лысков Игорь Витальевич (Старший модератор):

Здравствуйте, cupoma58!
Если бы Вы внимательно просмотрели листинг из 9 главы (кстати, почему у Вас имя файла 07 smile ), то увидели бы, то имя загружаемого файла должно быть не ASM, а COM.
Т.к. программа грузит свой же код на свое же место. Вы же пытаетесь грузить исходник, текстовый файл...
Так что последствия интерпретации текста, как кода, абсолютно правильные... smile

Консультировал: Лысков Игорь Витальевич (Старший модератор)
Дата отправки: 08.02.2018, 13:24
Рейтинг ответа:

НЕ одобряю +1 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!


В избранное