26.04.2018, 10:49 [+3 UTC]
в нашей команде: 2 706 чел. | участники онлайн: 1 (рекорд: 21)

:: РЕГИСТРАЦИЯ

:: задать вопрос

:: все разделы

:: правила

:: новости

:: участники

:: доска почёта

:: форум

:: блоги

:: поиск

:: статистика

:: наш журнал

:: наши встречи

:: наша галерея

:: отзывы о нас

:: поддержка

:: руководство

Версия системы:
7.47 (16.04.2018)

Общие новости:
13.04.2018, 10:33

Форум:
25.04.2018, 16:22

Последний вопрос:
25.04.2018, 20:27

Последний ответ:
25.04.2018, 12:02

Последняя рассылка:
26.04.2018, 09:15

Писем в очереди:
0

Мы в соцсетях:

Наша кнопка:

RFpro.ru - здесь вам помогут!

Отзывы о нас:
03.10.2010, 13:58 »
Даниил Цветков
Большое спасибо! Ваш ответ очень помог! [вопрос № 180114, ответ № 263285]
30.03.2016, 11:02 »
anton74551
Cпасибо Вам большое за помощь! [вопрос № 189028, ответ № 273542]
02.06.2010, 12:18 »
Вознисеннский Сергей Андреевич
Спасибо большое.выручили меня! [вопрос № 178812, ответ № 261820]

РАЗДЕЛ • Assembler

Создание программ на языке Assembler.

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

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

Коцюрбенко Алексей aka Жерар
Статус: Мастер-Эксперт
Рейтинг: 244
Зенченко Константин Николаевич
Статус: Модератор
Рейтинг: 231
Лысков Игорь Витальевич
Статус: Старший модератор
Рейтинг: 0

Перейти к консультации №:
 

Консультация онлайн # 192544
Раздел: • Assembler
Автор вопроса: cupoma58 (Посетитель)
Отправлена: 08.02.2018, 12:50
Поступило ответов: 1

Здравствуйте! Прошу помощи в следующем вопросе:
работаю на 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) появляется чистая панель с мигающим курсором.


Состояние: Консультация закрыта

Ответ # 276134 от Лысков Игорь Витальевич (Старший модератор)

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


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

Рейтинг ответа:

+1

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Мини-форум консультации № 192544

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 1

= общий = | 08.02.2018, 13:29 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
cupoma58:

Еще момент: Вы захотели вывести сообщение на русском языке (вместо английского в оригинале).
Вы увидите абракадабру, т.к. в коде кириллица в коде ANSI (CP-1251), а при выводе в консоли используется досовская кодировка (CP-866). Или перекодируйте само сообщение в кодировку 866, или выводите сообщения английскими буковками smile smile

=====
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен

• Отредактировал: Лысков Игорь Витальевич (Старший модератор)
• Дата редактирования: 08.02.2018, 13:33

 

Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.

Яндекс Rambler's Top100

главная страница | поддержка | задать вопрос

Время генерирования страницы: 0.19541 сек.

© 2001-2018, Портал RFPRO.RU, Россия
Калашников О.А.  |  Гладенюк А.Г.
Версия системы: 7.47 от 16.04.2018