Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Подскажите где ошибка! 
:(
    Опции темы
HellanD
Дата 17.6.2006, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 443
Регистрация: 16.5.2006
Где: Киев

Репутация: нет
Всего: 2



Посмотрите код
Код

         .model tiny                     ;
         .code                           ;
          org  100h                      ;
start:   mov     ah,9                    ;
         mov     dx,offset message       ;
         int     21h                     ;
         ret                             ;
message         db  "Hello world!",0Dh,0Ah,'$';
         end     start                   

Он должен выводить фразу Hello world!, и он ее выводит! но со странными иероглифами и даже более того выводит ее в цикле до тех пор пока не выдается сообщение об ошибке!!! 


--------------------
Мой сайт на django
Japanese Innovations
PM ICQ   Вверх
Mysterio
Дата 17.6.2006, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Планирующий
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 28.12.2004

Репутация: нет
Всего: нет



Ето com.(самая распространённая ошибка).  Если ошибка не в этом, тогда для exe(никогда не уважал модели): 

Код


DATA SEGMENT
 TEXT DB 'HELLO,HELLO',10,13,'$'
DATA ENDS

CODE SEGMENT
 ASSUME CS:CODE, DS:DATA

BEGIN:

 MOV AX,DATA
 MOV DS,AX

 LEA DX,TEXT
 MOV AH,9
 INT 21H

 MOV AH,0
 INT 16H

 MOV AH,4CH
 INT 21H



CODE ENDS
END BEGIN

 
PM MAIL   Вверх
HellanD
Дата 17.6.2006, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 443
Регистрация: 16.5.2006
Где: Киев

Репутация: нет
Всего: 2



Цитата

Ето com.(самая распространённая ошибка). 

Спасибо за ответ!
но что имеется ввиду? Да это програма com файла! Подскажите подробнее в чем дело! Неед хелп! 


--------------------
Мой сайт на django
Japanese Innovations
PM ICQ   Вверх
Akina
Дата 17.6.2006, 21:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 1
Всего: 454



Замени в конце программы ret на

Код

mov ax,4C00h
int 21h


или 

Код

xor ah,ah
int 21h


или хотя бы

Код

int 20h
 


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
HellanD
Дата 18.6.2006, 09:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 443
Регистрация: 16.5.2006
Где: Киев

Репутация: нет
Всего: 2



Спасибо за ответ! Помоголо такое:
mov ax,4C00h
int 21h
вместо ret
хотя и здесь есть нечто странное! Цикла до ошибки уже нет, а выводится одна фраза "Hello world!", а вернее еще перед ней какието значки и смайлики! Что это и как с этим бороться!!!
А две последние рекомендациии дали ошибку вида:
16-разрядная подсистема МС-ДОС:
С:\windows\system32\cmd.exe
Процессор NTVDM обнаружил недопустимую инструкцию.CS:0000 IP:0077 OP:f0 37 05 10 02....  
ПОМОГИТЕ РАЗОБРАТЬСЯ 


--------------------
Мой сайт на django
Japanese Innovations
PM ICQ   Вверх
Mysterio
Дата 18.6.2006, 13:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Планирующий
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 28.12.2004

Репутация: нет
Всего: нет



HellanD, 
Цитата(HellanD @  18.6.2006,  09:32 Найти цитируемый пост)
С:\windows\system32\cmd.exe

А, ну если у тебя NT, тогда всё понятно.  smile 

Где "это com", имелось ввиду, что компилить ея надо с ключом tlink.exe [filename.obj] /t . Exe действительно будет зацикливать программу, хотя бы по причине org 100h и ret'a;

Цитата(HellanD @  18.6.2006,  09:32 Найти цитируемый пост)
хотя и здесь есть нечто странное! Цикла до ошибки уже нет, а выводится одна фраза "Hello world!", а вернее еще перед ней какието значки и смайлики! Что это и как с этим бороться!!!


Убирай к ч.м. org 100h, ибо компилируется exe файл.  Или тогда пиши так: 
Код

         .model tiny                     ;    
         .code                           ;    
        org  100h                      ;    
message         db  "Hello world!",0Dh,0Ah,'$';    
start:  

         mov     ah,9                    ;    
         mov     dx,offset [message+100h]       ;    
         int     21h                     ;    

        mov ax , 4c00h
        int 21h


         end     start                


 "Значки" это и есть твоя небольшая программа и то что было в памяти. (если добавишь ключ, тогда строку message - в сегмент перед концом программы.)



Akina, 
Цитата(Akina @  17.6.2006,  21:23 Найти цитируемый пост)
или 
xor ah,ah    
int 21h

С какой целью сбрасывать ah для  int 21h ???
 
PM MAIL   Вверх
HellanD
Дата 18.6.2006, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 443
Регистрация: 16.5.2006
Где: Киев

Репутация: нет
Всего: 2



Благодарю за исчерпываюший ответ!
У меня ХП 
А что значит
Цитата

А, ну если у тебя NT, тогда всё понятно.

Имеется ввиду что что на блокирует инструкции АСМ?
 


--------------------
Мой сайт на django
Japanese Innovations
PM ICQ   Вверх
HellanD
Дата 18.6.2006, 15:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 443
Регистрация: 16.5.2006
Где: Киев

Репутация: нет
Всего: 2



Цитата

Убирай к ч.м. org 100h, ибо компилируется exe файл.  Или тогда пиши так: 
код Ассемблера 
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:

          .model tiny                     ;    
         .code                           ;    
        org  100h                      ;    
message         db  "Hello world!",0Dh,0Ah,'$';    
start:  

         mov     ah,9                    ;    
         mov     dx,offset [message+100h]       ;    
         int     21h                     ;    

        mov ax , 4c00h
        int 21h


         end     start                

 
 



 "Значки" это и есть твоя небольшая программа и то что было в памяти. (если добавишь ключ, тогда строку message - в сегмент перед концом программы.)

Слушай работает просто супер! А как это работает????! В чем разница? 


--------------------
Мой сайт на django
Japanese Innovations
PM ICQ   Вверх
HellanD
Дата 18.6.2006, 19:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 443
Регистрация: 16.5.2006
Где: Киев

Репутация: нет
Всего: 2



Это КОМ!!smile
Спасибо за помощь! Все пашет теперь на все 100%!!!
Можна еще вопрос! Что это за деректива ret, и чего она циклит exe-шник??? 


--------------------
Мой сайт на django
Japanese Innovations
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm для начинающих"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm для начинающих | Следующая тема »


 




[ Время генерации скрипта: 0.0510 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.