Поиск:

Ответ в темуСоздание новой темы Создание опроса
> проблема спростейшей прогой 
:(
    Опции темы
Logree
Дата 16.7.2008, 23:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Вобщем так, поставил я себе на VMware MS-DOS 6.22 кинул туда tasm 7 версии и сижу шаманю...
и вроде бы все хорошо вывод работает но только я этот вывод помещаю в процедуры ли в метки как сразу что-то идет не так хотя во время компиляции проблем нет...

вот прога
Код

codseg segment 
assume CS:codseg,DS:codseg,SS:codseg,ES:codseg

org 100h

begin:

    mov ax,3d02h
    mov dx,offset file_name
    int 21h

    mov ax,9
    
    jnc Error
    jc good

    Error:
        mov dx,offset errm
        int 21h
        int 20h
    good:
        mov dx,offset okm
        int 21h 
        int 20h

errm db 'Error$'
okm db 'Ok$'
file_name db 'exemp.txt',0

codseg ends
end begin

файл есть а он ни чего не выводит просто пустая строчка..

Ps может это по тому что сначала тасм требовал некий {что-то там}16bi.ovl  и rtm.exe. а я ему слил эти файлы из 7 паскаля?


--------------------
Самый распространенный способ дебага пятиста строк ассемблерного кода - очень долгий, очень пристальный и очень задумчивый взгляд.
PM MAIL ICQ   Вверх
airyashov
Дата 17.7.2008, 07:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



"mov ax,9" и "mov ah,9" это не одно и тоже

"mov ax,9" эквивалентно "mov al,9"

ихмо "mov ax,0900h"это верно


--------------------
icq:3(один)7748666
mail:airyashov( а )inbox.ru
PM MAIL   Вверх
izlesa
Дата 17.7.2008, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



во-первых, как было сказано выше
mov ah, 09h либо mov ax, 0900h

во-вторых CF выставляется в 1 когда произошла ошибка, а у тебя в программе наоборот по логике.
так что измени проверку 

    jnc good
    jc Error
PM MAIL   Вверх
THandle
Дата 18.7.2008, 06:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

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



Код

codseg segment

assume CS:codseg, DS:codseg, SS:codseg, ES:codseg

org 100h

begin:
  
  mov ax, 3d02h
  mov dx, offset file_name
  int 21h
  
  mov ah, 9h
  
  jnc good
  jc error
  
  error:
  
    mov dx, offset errm
    int 21h
    int 20h
    
  good:
    
    mov dx, offset okm
    int 21h
    int 20h
    
errm db 'Error$'
okm db 'Ok$'
file_name db 'example.txt', 0

codseg ends
end begin

PM   Вверх
Logree
Дата 18.7.2008, 22:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



всем спасибо... бывает. неусмотрел smile


--------------------
Самый распространенный способ дебага пятиста строк ассемблерного кода - очень долгий, очень пристальный и очень задумчивый взгляд.
PM MAIL ICQ   Вверх
Logree
Дата 8.8.2008, 22:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Код

title make_file_prog

DSEG SEGMENT

hello DB 'Введите имя файла',0Dh,0Ah,'$'
istr DB 255 DUP('')

DSEG ENDS

SSEG SEGMENT STACK
DW 100 DUP(?)
SSEG ENDS

CSEG SEGMENT
ASSUME CS:CSEG, DS:DSEG, SS:SSEG, ES:CSEG

cod:
    mov AX,DSEG
    mov DS,AX
    ;
    mov AX,SSEG
    mov SS,AX
    ;
    mov AH,09h
    mov DX,offset hello
    int 21h
    ;
    mov DI,0
read_name:
    mov AH,00h
    int 21h
    ;
    cmp AH,1Ch
    je make_file
    mov istr[DI],AL
    inc DI
    jmp read_name

make_file:
    mov AH,3Ch
    mov CX,0
    mov DX,offset istr
    int 21h
    ;
    mov [BX+istr+1],'$'
    mov AH,09h
    int 21h
    ;
    mov AH,4Ch
    int 21h

CSEG ENDS
end cod


Почему-то программа зависает после вывода hello,  где ошибка?


--------------------
Самый распространенный способ дебага пятиста строк ассемблерного кода - очень долгий, очень пристальный и очень задумчивый взгляд.
PM MAIL ICQ   Вверх
Akina
Дата 8.8.2008, 23:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Код
read_name:
    mov AH,00h
    int 21h

Это как бы Program termination - выход по-русски.

А почему оно зависает... покажи опции компиляции и линковки. Включая переменные среды.


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

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


Опытный
**


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

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



не пропечаталось 

00 - > 0D

user posted image

и я забылл сделать вывод вводимых символов
исправил все равно что-то не так

Код

read_name:
    mov AH,0Dh
    int 21h
    ;
    cmp AH,1Ch
    je make_file
    mov [istr+DI],AL
    inc DI
    ;
    mov AH,02h
    mov Dl,AL
    int  21h
    jmp read_name


я её в чистом MS-DOS запускаю 
Код

tasm file.asm | tlink file.obj




--------------------
Самый распространенный способ дебага пятиста строк ассемблерного кода - очень долгий, очень пристальный и очень задумчивый взгляд.
PM MAIL ICQ   Вверх
airyashov
Дата 13.8.2008, 13:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Я что-то ваш код не догоняю

Int 21h, функция ODh
Сброс диска 
Вход: 
AH=ODh 
Описание. 
Сбрасывает диск (записывает на диск все файловые буферы). Файл,
размер которого изменился, должен быть предварительно закрыт (при
помощи функций 10h или 3Eh).

Добавлено @ 13:55
Прерывание int 16h
Функция 00h (10h). Чтение символа клавиатуры с ожиданием.
Читает из кольцевого буфера ввода символ и скан-код. После считывания они удаляются из буфера и возвращаются в регистре AX. Если буфер пуст, ожидает ввода. Каждой клавише на клавиатуре соответствует так называемый скан-код, соответствующий только этой клавише. Этот код посылается клавиатурой при каждом нажатии и отпускании клавиши и обрабатывается в BIOS обработчиком прерывания Int 09h. Функция 00h даёт возможность получить код нажатия, не перехватывая этот обработчик. Если нажатой клавише соответствует ASCII-символ, то:

AL – ASCII-код символа,   AH – скан-код клавиши.
Если нажатой клавише соответствует расширенный ASCII-код, то:
AL – 00h,  AH – расширенный ASCII-код.
Вызов:    AH = 00h (83/84-key).
Возврат: AL = ASCII-код символа, изображённый на клавише/00h,
               AH = скан-код/расширенный ASCII-код клавиши.
Функция 10h (AH = 10) – усовершенствованный вариант функции 00h для расширенной клавиатуры (101/102-key). Позволяет получить расширенные 
ASCII-коды для клавиш F11, F12, а также для ряда других комбинаций. 
В качества признака управляющих клавиш или их комбинаций, помимо значения 00h, используются 0Ah, 0Dh и E0h.

Но даже если измените, все равно код будет не рабочий, почему подумайте сами, если Я напишу за вас толку не будет.


Это сообщение отредактировал(а) airyashov - 13.8.2008, 13:59


--------------------
icq:3(один)7748666
mail:airyashov( а )inbox.ru
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm для начинающих"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

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

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


 




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


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

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