Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите не могу понять что делать), абель 
:(
    Опции темы
H2M_nikola01
Дата 25.10.2006, 21:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



вот из книжки абеля:
Код

ITLE   RANREAD (COM) Прямое чтение записей,
;                        созданных в FCBCREAT
CODESG  SEGMENT PARA 'Code'
        ASSUME  CS:CODESG,DS:CODESG,SS:CODESG,ES:CODESG
        ORG     100H
BEGIN:  JMP     MAIN
;-----------------------------------------------------
FCBREC  LABEL   BYTE            ;FCB для дискового файла
FCBDRIV DB      04              ; дисковод D
FCBNAME DB      'MAMEFILE'      ; имя файла
FCBEXT  DB      'DAT'           ; тип файла
FCBBLK  DW      0000            ; номер текущего блока
FCBRCSZ DW      0000            ; длина логической записи
        DD      ?               ; размер файла (DOS)
        DW      ?               ; дата (DOS)
        DT      ?               ; зарезервировано (DOS)
        DB      00              ; номер текущей записи
FCBRNRC DD      000000000       ; относительный номер

RECLEN  EQU     32              ;Длина записи
RECDPAR LABEL   BYTE            ;Список параметров:
MAXLEN  DB      3               ;
ACTLEN  DB      ?               ;
RECDNO  DB      3 DUP(' ')      ;

NAMEFLD DB      RECLEN DUP(' '),13,10,'$' ;DTA

OPENMSG DB      '*** Open error ***',13,10,'$'
READMSG DB      '*** Read error ***',13,10,'$'
COL     DB      00
PROMPT  DB      'Record number? $'
ROW     DB      00
ENDCDE  DB      00
;-----------------------------------------------------
MAIN    PROC    NEAR
        CALL    Q10CLR          ;Очистить экран
        CALL    Q20CURS         ;Установить курсор
        CALL    C10OPEN         ;Открыть файл,
                                ; установить DTA
        CMP     ENDCDE,00       ;Открытие без ошибок?
        JZ      A20LOOP         ; да - продолжить,
        RET                     ; нет - завершить
A20LOOP:
        CALL    D10RECN         ;Получить номер записи
        CMP     ACTLEN,00       ;Есть запрос?
        JE      A40             ; нет - выйти
        CALL    F10READ         ;Чтение (прямой доступ)
        CMP     ENDCDE,00       ;Есть ошибки чтения?
        JNZ     A30             ; да - обойти
        CALL    G10DISP         ;Вывести на экран
A30:
        JMP     A20LOOP
A40:    RET                     ;Завершить программу
MAIN    ENDP
;               Подпрограмма открытия файла на диске:
;               ------------------------------------
C10OPEN PROC    NEAR
        MOV     AH,0FH          ;Функция открытия
        LEA     DX,FCBREC
        INT     21H
        CMP     AL,00           ;Открытие нормальное?
        JNZ     C20             ; нет - ошибка
        MOV     FCBRCSZ,RECLEN  ;Длина записи (EQU)
        MOV     AH,1AH
        LEA     DX,NAMEFLD      ;Установить адрес DTA
        INT     21H
        RET
C20:
        LEA     DX,OPENMSG
        CALL    X10ERR
        RET
C10OPEN ENDP
;               Ввод с клавиатуры номера записи:
;               -------------------------------
D10RECN PROC    NEAR
        MOV     AH,09H          ;Функция вывода на экран
        LEA     DX,PROMPT
        INT     21H
        MOV     AH,0AH          ;Функция ввода с клавиатуры
        LEA     DX,RECDPAR
        INT     21H
        CMP     ACTLEN,01       ;Проверить длину (0,1,2)
        JB      D40             ;Длина 0, завершить
        JA      D20
        SUB     AH,AH           ;Длина 1
        MOV     AL,RECDNO
        JMP     D30
D20:
        MOV     AH,RECDNO       ;Длина 2
        MOV     AL,RECDNO+1
D30:
        AND     AX,0F0FH        ;Удалить ASCII тройки
        AAD                     ;Преобразовать в двоичное
        MOV     WORD PTR FCBRNRC,AX
D40:
        MOV     COL,20
        CALL    Q20CURS         ;Установить курсор
        RET
D10RECN ENDP
;               Чтение дисковой записи:
;               ----------------------
F10READ PROC    NEAR
        MOV     ENDCDE,00       ;Очистить код завершения
        MOV     AH,21H          ;Функция прямого чтения
        LEA     DX,FCBREC
        INT     21H
        CMP     AL,00           ;Чтение без ошибок?
        JZ      F20             ; да - выйти
        LEA     DX,READMSG      ; нет - выдать
        CALL    X10ERR          ; сообщение об ошибке
F20:    RET
F10READ ENDP
;               Вывод имени на экран:
;               --------------------
G10DISP PROC    NEAR
        MOV     AH,09           ;Функция вывода на экран
        LEA     DX,NAMEFLD
        INC     21H
        INC     ROW
        MOV     COL,00
        RET
G10DISP ENDP
;               Очистка экрана:
;               --------------
Q10CLR  PROC    NEAR
        MOV     AX,0600H        ;Функция прокрутки
        MOV     BH,41H          ;Цвет (07 для ч/б)
        MOV     CX,0000
        MOV     DX,184FH
        INT     10H
        RET
Q10CLR  ENDP
;               Установка курсора:
;               -----------------
Q20CURS PROC    NEAR
        MOV     AH,02           ;Функция установки
        MOV     BH,00           ; курсора
        MOV     DH,ROW
        MOV     DL,COL
        INT     10H
        RET
Q20CURS ENDP
;               Вывод сообщения об ошибке на диске:
;               ----------------------------------
X10ERR  PROC    NEAR
        MOV     AH,09           ;DX содержит адрес
        INT     21H             ; сообщения
        INC     ROW
        MOV     ENDCDE,01
        RET
X10ERR  ENDP
        CODESG  ENDS
        END     BEGIN
 __________________________________________________________________________

     Рис.8.1. Вывод на экран набора символов кода ASCII

сохраняю етот код в 1.asm
дальше что делать? пишу ml.exe 1.asm -  масма32 выдает кучу кучу ошибок тоже самое и в tasm32
что делать с *.asm? может че не так делаю? подскажите!

как переделать код чтоб он на ТАСМ5 работал?

Это сообщение отредактировал(а) H2M_nikola01 - 27.10.2006, 13:25
PM MAIL   Вверх
anwe
Дата 25.10.2006, 22:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата
что делать с *.asm?

Сначало компилируешь (переводишь) свой *.asm в так называемый объектный файл --> *.obj. Потом этот *.obj компилируешь (компонуешь) уже в исполняемый файл --> *.com (*.exe)
Цитата
как переделать код чтоб он на ТАСМ5 работал?

Для TASM для com-файлов (каким есть твой пример):
tasm ALLASC.asm
tlink/t/x ALLASC.obj

Для exe-файлов:
ассемблируешь также
tlink/t *.obj, то есть без /x

Да, и заметь: после имени коммандного файла tasm, tlink (ml) расширение .exe не ставиться.

И последнее: пользуйся, пожалуйста тэгами, в частности код
PM MAIL   Вверх
H2M_nikola01
Дата 26.10.2006, 08:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



[QUOTE=anwe,25.10.2006,  22:57]
Цитата
что делать с *.asm?
Цитата
как переделать код чтоб он на ТАСМ5 работал?

Для TASM для com-файлов (каким есть твой пример):
tasm ALLASC.asm
tlink/t/x ALLASC.obj

Для exe-файлов:
ассемблируешь также
tlink/t *.obj, то есть без /x

Да, и заметь: после имени коммандного файла tasm, tlink (ml) расширение .exe не ставиться.

[/i]

когда делаю tasm ALLASC.asm выдает порядка 10ти ошибок типа Undefined Symbol:CODESG
И естественно obj файл не создает. ЧТО делать?
PM MAIL   Вверх
spin2
Дата 26.10.2006, 10:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 598
Регистрация: 15.12.2005
Где: Москва-Одесса

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



H2M_nikola01, у Вас во второй строчке написано CODESC. Опечатка.


--------------------
"С кем тяжело молчать, с тем не о чем говорить" (Метерлинк)
блог
Все об ICQ-ботах
PM MAIL WWW ICQ Skype Jabber   Вверх
anwe
Дата 26.10.2006, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата
у Вас во второй строчке написано CODESC. Опечатка. 

Опечатка-то есть, да не там. Там как раз написано так, как надо. Опечатки в третей строке.
Но, если бы только там. H2M_nikola01, что называется найди 10 отличий  smile Сравни строки: 11, 18 и 25; найди  ошибку в строке 29 и 30; 40 - там надо двоеточие, ну и 49.
А вообще, H2M_nikola01, учись работать: компилятор выдает код ошибки и номер строки, линковщик - код ошибки.

Это сообщение отредактировал(а) anwe - 26.10.2006, 12:16
PM MAIL   Вверх
H2M_nikola01
Дата 26.10.2006, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(anwe @ 26.10.2006,  12:15)
Цитата
у Вас во второй строчке написано CODESC. Опечатка. 

Опечатка-то есть, да не там. Там как раз написано так, как надо. Опечатки в третей строке.
Но, если бы только там. H2M_nikola01, что называется найди 10 отличий  smile Сравни строки: 11, 18 и 25; найди  ошибку в строке 29 и 30; 40 - там надо двоеточие, ну и 49.
А вообще, H2M_nikola01, учись работать: компилятор выдает код ошибки и номер строки, линковщик - код ошибки.

наверное вы правы! но етот пример я прям взял из книжки абеля ничего не изменяя! тоесть в книжке столько ошибок или может та примеры для более старого TurboAssemblera?????. 
так как debug надоел то я начал разбиратся с TASM5. 
есть вопрос какова струтура файла *.asm должна быть чтобы успешно пройти компиляцию? может есть книжки о том как писать на TASM5 ? подскажите! 
Заранее спасибо!

Это сообщение отредактировал(а) H2M_nikola01 - 26.10.2006, 15:16
PM MAIL   Вверх
dumb
Дата 26.10.2006, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

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



Цитата(H2M_nikola01 @  26.10.2006,  15:16 Найти цитируемый пост)
но етот пример я прям взял из книжки абеля ничего не изменяя!

в книжках по программингу довольно часто встречаются опечатки. машинистка ж не сечет в asm'е, например. посему, когда она фигачит "MOV AN, 02", ее ничего не смущает. такие опечатки означают только то, что перед выпуском в набор ее никто особо не проверял.

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

так как указания строк с очепятками, похоже, тебе ничего не дали, то вот исправленный листинг:
Код

TITLE   ALLASC  (COM) Вывод на экран ASCII-символов 00-FF
CODESG  SEGMENT PARA 'Code'
        ASSUME  CS:CODESG,DS:CODESG,SS:CODESG,ES:NOTHING
        ORG     100H
BEGIN:  JMP     SHORT MAIN
CTR     DB      00,'$'
;               Основная процедура:
;               ------------------
MAIN    PROC    NEAR
        CALL    B10CLR          ;Очистить экран
        CALL    C10SET          ;Установить курсор
        CALL    D10DISP         ;Вывести символ на экран
        RET
MAIN    ENDP
;               Очистка экрана:
;               --------------
B10CLR  PROC
        MOV     AX,0600H
        MOV     BH,07
        MOV     CX,0000         ;Левая верхняя позиция
        MOV     DX,184FH        ;Правая нижняя позиция
        INT     10H
        RET
B10CLR  ENDP
;               Установка курсора в 00,00:
;               -------------------------
C10SET  PROC
        MOV     AH,02
        MOV     BH,00
        MOV     DX,0000
        INT     10H
        RET
C10SET  ENDP
;               Вывод на экран ASCII символов:
;               -----------------------------
D10DISP PROC
        MOV     CX,256          ;256 итераций
        LEA     DX,CTR          ;Адрес счетчика
D20:
        MOV     AH,09           ;Функция вывода символа
        INT     21H
        INC     CTR             ;Увеличить счетчик
        LOOP    D20             ;Уменьшить CX,
                                ; цикл, если не ноль
        RET                     ;Вернуться
D10DISP ENDP
CODESG  ENDS
        END     BEGIN


сборка:
Код

tasm sample.asm
tlink /t sample.obj


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


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

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



H2M_nikola01, ай маладца! код в первом посте другой вставил через пару дней... smile

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

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

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


 




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


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

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