Важная информация
Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 11

Тема: Нужно скомпилировать прогу

  1. #1 Нужно скомпилировать прогу 
    Новичок
    Регистрация
    26.09.2013
    Сообщений
    2
    Сказал(а) спасибо
    1
    Поблагодарили 0 раз(а) в 0 сообщениях
    Добрый день!
    Есть код программы, необходимо скомпеоировать и создать EXE файл.
    У меня стоит Win 7 64? поэтому есть некоторые затруднения с этим!
    Вот код проги. Заранее спасибо!
    [Ссылки могут видеть только зарегистрированные пользователи. ]
    .model small ; модель памяти ближнего типа
    .stack 100h ; определить стек размером 100h
    .data ; открыть сегмент данных
    cr equ 0dh ; возврат каретки
    lf equ 0ah ; подача строки
    Strr db cr,lf,'KURSOVAJA RABOTA$'
    Str1 db cr,lf,'"po discipline: Systemnoe Programmnoe Obespechenie"$'
    Str2 db cr,lf,'Studenta gruppy ASOI-301z$'
    Str3 db cr,lf,'Khabibullina L. R.$'
    Str4 db cr,lf,'Variant: 19$'
    fname db 'report.txt',0

    .code ; открыть сегмент кода
    main:

    mov dx, 03DAh ; читаем из порта
    in al, dx
    int 10h
    ; установка видеорежима и атрибута мигания
    mov dx, 03C0h ; пишем индекс регистра видеоадаптера
    mov al, 10h
    out dx, al
    int 10h

    mov dx, 03C0h ; пишем значение регистра видеоадаптера
    mov al, 00h
    out dx, al
    int 10h

    mov ax, @data ; настраивается сегментный регистр
    mov ds, ax

    mov ah,09h ; вывод текстовой информации
    mov dx,offset Strr
    int 21h
    mov dx,offset Str1
    int 21h
    mov dx,offset Str2
    int 21h
    mov dx,offset Str3
    int 21h
    mov dx,offset Str4
    int 21h
    mov ah,10h
    int 16h

    mov es,es:2ch
    mov ah,49h
    int 21h

    for_start :
    mov ah,3ch
    mov cx,0
    mov dx,offset fname
    int 21h
    push ax

    mov ah,48h
    mov bx,100h
    int 21h
    jnc @ok
    mov ah,48h ; если запрошенное количество памяти
    int 21h ; не может быть выделено, то в bx вернётся значение
    @ok: ; доступной памяти в параграфах
    shl bx,4 ; умножаем на 16, получаем кол-во выделенных байт
    mov es,ax
    mov ds,ax
    mov di,0 ; Счетчик = 0

    for_loop: ; метка для перехода назад

    mov ax,di
    stosb
    cmp di,bx
    jnz for_loop

    dec di
    mov cx,di
    pop bx
    mov ah,40h
    xor dx,dx
    int 21h

    for_finish:
    mov ah,3Eh
    int 21h
    mov ax,4c00h
    int 21h
    end main
    Ответить с цитированием  
     

  2. #2  
    Профи Аватар для Dimon012
    Регистрация
    09.02.2011
    Адрес
    Владивосток
    Сообщений
    850
    Сказал(а) спасибо
    29
    Поблагодарили 130 раз(а) в 108 сообщениях
    Записей в блоге
    3
    Цитата Сообщение от Линар Посмотреть сообщение
    ...необходимо скомпеоировать...
    Вообще то процесс создания исполняемого файла называется компиляцией [Ссылки могут видеть только зарегистрированные пользователи. ]
    Очевидно это Ваша курсовая работа, так Вы хоть терминологию подтяните, а то как сдавать будете.
    Ответить с цитированием  
     

  3. #3  
    Профи Аватар для rrrFer
    Регистрация
    01.08.2013
    Сообщений
    561
    Сказал(а) спасибо
    34
    Поблагодарили 249 раз(а) в 164 сообщениях
    чем скомпилировать? - на чем она написана?
    [Ссылки могут видеть только зарегистрированные пользователи. ] // программирование на Prolog, Erlang, C++
    Ответить с цитированием  
     

  4. #4  
    Супер модератор Аватар для >Quiet Snow<
    Регистрация
    11.04.2011
    Адрес
    Планета земля
    Сообщений
    3,931
    Сказал(а) спасибо
    1,842
    Поблагодарили 982 раз(а) в 840 сообщениях
    Записей в блоге
    1
    чем скомпилировать? - на чем она написана?
    Macro Assembler

    P.S: Да сейчас курсачи уже не те, помню, когда на первом курсе развлекался с асмом
    написал прогу что-то около 300 строк на асме + 600 на бейсике, ну редактор и моделинг
    мне помогли, но всё же, а тут как бы вообще азы.
    Последний раз редактировалось >Quiet Snow<; 26.09.2013 в 21:22.
    Обучение прикладному программированию(по skype), качественно, недорого, 18+, вопросы в личку.
    «Если вы ничего не сделаете, я уверяю вас, ничего и не произойдёт» © Жак Фреско
    Ограниченно модерирую.
    Ответить с цитированием  
     

  5. #5  
    Профи Аватар для rrrFer
    Регистрация
    01.08.2013
    Сообщений
    561
    Сказал(а) спасибо
    34
    Поблагодарили 249 раз(а) в 164 сообщениях
    Macro Assembler
    как ты определил, если не секрет?
    всяких ассемблеров существует невероятное количество и что там за ассемблер преподают ТС я, лично, понятия не имею.

    По его посту можно сократить диапазон диалектов, не не сильно (он писал что нужен .exe, значит он пишет не под микроконтроллеры, как минимум, ну и не на GAS {и прочих}).

    Но почему это не TASM, например? - вроде бы и на TASM смахивает...
    [Ссылки могут видеть только зарегистрированные пользователи. ] // программирование на Prolog, Erlang, C++
    Ответить с цитированием  
     

  6. #6  
    Супер модератор Аватар для >Quiet Snow<
    Регистрация
    11.04.2011
    Адрес
    Планета земля
    Сообщений
    3,931
    Сказал(а) спасибо
    1,842
    Поблагодарили 982 раз(а) в 840 сообщениях
    Записей в блоге
    1
    как ты определил, если не секрет?
    Посмотрел на код, на подсознательном уровне понял, что он скомпилируется.
    Хм, ты посеял во мне зерно сомнения поэтому я взял и скомпилил, код потребовал добавить директиву .386
    т.к. в коде есть (нет не запись в сегментный регистр как я сначала ляпнул не подумав, а сдвиг на n-ое
    кол-во битов, т.к. до 386-го позволялось сдвигать только на 1 бит).


    Листинг
    Microsoft (R) Macro Assembler Version 5.10 9/26/13 20:57:52
    Page 1-1


    .model small ; модель памяти ближнего типа
    .stack 100h ; определить стек размером 100h
    .data ; открыть сегмент данных
    = 000D cr equ 0dh ; возврат каретки
    = 000A lf equ 0ah ; подача строки
    0000 0D 0A 4B 55 52 53 Strr db cr,lf,'KURSOVAJA RABOTA$'
    4F 56 41 4A 41 20
    52 41 42 4F 54 41
    24
    0013 0D 0A 22 70 6F 20 Str1 db cr,lf,'"po discipline: Systemnoe Progr
    ammnoe Obespechenie"$'
    64 69 73 63 69 70
    6C 69 6E 65 3A 20
    53 79 73 74 65 6D
    6E 6F 65 20 50 72
    6F 67 72 61 6D 6D
    6E 6F 65 20 4F 62
    65 73 70 65 63 68
    65 6E 69 65 22 24
    0049 0D 0A 53 74 75 64 Str2 db cr,lf,'Studenta gruppy ASOI-301z$'
    65 6E 74 61 20 67
    72 75 70 70 79 20
    41 53 4F 49 2D 33
    30 31 7A 24
    0065 0D 0A 4B 68 61 62 Str3 db cr,lf,'Khabibullina L. R.$'
    69 62 75 6C 6C 69
    6E 61 20 4C 2E 20
    52 2E 24
    007A 0D 0A 56 61 72 69 Str4 db cr,lf,'Variant: 19$'
    61 6E 74 3A 20 31
    39 24
    0088 72 65 70 6F 72 74 fname db 'report.txt',0
    2E 74 78 74 00

    .code ; открыть сегмент кода
    0000 main:

    0000 BA 03DA mov dx, 03DAh ; читаем из порта
    0003 EC in al, dx
    0004 CD 10 int 10h
    ; установка видеорежима и атрибута мигания
    0006 BA 03C0 mov dx, 03C0h ; пишем индекс регистра видеоада
    птера
    0009 B0 10 mov al, 10h
    000B EE out dx, al
    000C CD 10 int 10h

    000E BA 03C0 mov dx, 03C0h ; пишем значение регистра видеоа
    даптера
    0011 B0 00 mov al, 00h
    0013 EE out dx, al
    0014 CD 10 int 10h

    0016 B8 ---- R mov ax, @data ; настраивается сегментный регис
    Microsoft (R) Macro Assembler Version 5.10 9/26/13 20:57:52
    Page 1-2


    тр
    0019 8E D8 mov ds, ax

    001B B4 09 mov ah,09h ; вывод текстовой информации
    001D BA 0000 R mov dx,offset Strr
    0020 CD 21 int 21h
    0022 BA 0013 R mov dx,offset Str1
    0025 CD 21 int 21h
    0027 BA 0049 R mov dx,offset Str2
    002A CD 21 int 21h
    002C BA 0065 R mov dx,offset Str3
    002F CD 21 int 21h
    0031 BA 007A R mov dx,offset Str4
    0034 CD 21 int 21h
    0036 B4 10 mov ah,10h
    0038 CD 16 int 16h

    003A 26: 8E 06 002C mov es,es:2ch
    003F B4 49 mov ah,49h
    0041 CD 21 int 21h

    0043 for_start :
    0043 B4 3C mov ah,3ch
    0045 B9 0000 mov cx,0
    0048 BA 0088 R mov dx,offset fname
    004B CD 21 int 21h
    004D 50 push ax

    004E B4 48 mov ah,48h
    0050 BB 0100 mov bx,100h
    0053 CD 21 int 21h
    0055 73 04 jnc @ok
    0057 B4 48 mov ah,48h ; если запрошенное количество памят
    и
    0059 CD 21 int 21h ; не может быть выделено, то в bx верн
    ётся значение
    005B @ok: ; доступной памяти в параграфах
    005B E3 shl bx,4 ; умножаем на 16, получаем кол-во выд
    еленных байт
    TTT.ASM(65): error A2052: Improper operand type
    005C 8E C0 mov es,ax
    005E 8E D8 mov ds,ax
    0060 BF 0000 mov di,0 ; Счетчик = 0

    0063 for_loop: ; метка для перехода назад

    0063 8B C7 mov ax,di
    0065 AA stosb
    0066 3B FB cmp di,bx
    0068 75 F9 jnz for_loop

    006A 4F dec di
    006B 8B CF mov cx,di
    006D 5B pop bx
    006E B4 40 mov ah,40h
    Microsoft (R) Macro Assembler Version 5.10 9/26/13 20:57:52
    Page 1-3


    0070 33 D2 xor dx,dx
    0072 CD 21 int 21h

    0074 for_finish:
    0074 B4 3E mov ah,3Eh
    0076 CD 21 int 21h
    0078 B8 4C00 mov ax,4c00h
    007B CD 21 int 21h
    end main
    Microsoft (R) Macro Assembler Version 5.10 9/26/13 20:57:52
    Symbols-1


    Segments and Groups:

    N a m e Length Align Combine Class

    DGROUP . . . . . . . . . . . . . GROUP
    _DATA . . . . . . . . . . . . 0093 WORD PUBLIC 'DATA'
    STACK . . . . . . . . . . . . 0100 PARA STACK 'STACK'
    _TEXT . . . . . . . . . . . . . 007D WORD PUBLIC 'CODE'

    Symbols:

    N a m e Type Value Attr

    CR . . . . . . . . . . . . . . . NUMBER 000D

    FNAME . . . . . . . . . . . . . L BYTE 0088 _DATA
    FOR_FINISH . . . . . . . . . . . L NEAR 0074 _TEXT
    FOR_LOOP . . . . . . . . . . . . L NEAR 0063 _TEXT
    FOR_START . . . . . . . . . . . L NEAR 0043 _TEXT

    LF . . . . . . . . . . . . . . . NUMBER 000A

    MAIN . . . . . . . . . . . . . . L NEAR 0000 _TEXT

    STR1 . . . . . . . . . . . . . . L BYTE 0013 _DATA
    STR2 . . . . . . . . . . . . . . L BYTE 0049 _DATA
    STR3 . . . . . . . . . . . . . . L BYTE 0065 _DATA
    STR4 . . . . . . . . . . . . . . L BYTE 007A _DATA
    STRR . . . . . . . . . . . . . . L BYTE 0000 _DATA

    @CODE . . . . . . . . . . . . . TEXT _TEXT
    @CODESIZE . . . . . . . . . . . TEXT 0
    @CPU . . . . . . . . . . . . . . TEXT 0101h
    @DATASIZE . . . . . . . . . . . TEXT 0
    @FILENAME . . . . . . . . . . . TEXT TTT
    @OK . . . . . . . . . . . . . . L NEAR 005B _TEXT
    @VERSION . . . . . . . . . . . . TEXT 510


    89 Source Lines
    89 Total Lines
    30 Symbols

    47110 + 436583 Bytes symbol space free

    0 Warning Errors
    1 Severe Errors


    Но почему это не TASM, например?
    У тасм есть режим совместимости, вообще я TASM мало юзал, в основном четвёртую версию под дос,
    поэтому не знаю точно, но вряд ли на нём скомпилится сходу. По крайней мере помню, что если писать
    на чистом тасме без режима совместимости, код достаточно неплохо синтаксически изменён.

    Линар, ваша прога во вложении в архивчике - скомпиленная. Под DOSBox меняет режим экрана
    на текстовый с меньшим кол-вом символов в строке и пишет что-то сверху, т.е. вроде работает.
    Вложения
    • Тип файла: zip Kurs.zip (3.3 Кб, Просмотров: 3)
    Последний раз редактировалось >Quiet Snow<; 26.09.2013 в 22:11.
    Обучение прикладному программированию(по skype), качественно, недорого, 18+, вопросы в личку.
    «Если вы ничего не сделаете, я уверяю вас, ничего и не произойдёт» © Жак Фреско
    Ограниченно модерирую.
    Ответить с цитированием  
     

  7. 2 пользователя(ей) сказали cпасибо:

    Абадябер (26.09.2013), Линар (29.09.2013)

  8. #7  
    Супер модератор Аватар для >Quiet Snow<
    Регистрация
    11.04.2011
    Адрес
    Планета земля
    Сообщений
    3,931
    Сказал(а) спасибо
    1,842
    Поблагодарили 982 раз(а) в 840 сообщениях
    Записей в блоге
    1
    Мда давно уже на асме под DOS ничего не писал, забывается он сильно, ваще печаль.
    Это называется учишь 1 язык, забываешь другой.
    Обучение прикладному программированию(по skype), качественно, недорого, 18+, вопросы в личку.
    «Если вы ничего не сделаете, я уверяю вас, ничего и не произойдёт» © Жак Фреско
    Ограниченно модерирую.
    Ответить с цитированием  
     

  9. #8  
    Супер модератор Аватар для Kakos_nonos
    Регистрация
    07.01.2011
    Адрес
    Кубань
    Сообщений
    1,536
    Сказал(а) спасибо
    126
    Поблагодарили 432 раз(а) в 293 сообщениях
    Записей в блоге
    6
    На windows 7 x64 досовские проги не идут вообще. Скорее всего проблема в этом.
    [Ссылки могут видеть только зарегистрированные пользователи. ]
    Ответить с цитированием  
     

  10. #9  
    Гуру Аватар для Абадябер
    Регистрация
    09.12.2010
    Адрес
    Беларусь, Минск
    Сообщений
    1,219
    Сказал(а) спасибо
    302
    Поблагодарили 176 раз(а) в 144 сообщениях
    Записей в блоге
    5
    На windows 7 x64 досовские проги не идут вообще
    Увы, и не только досовские, но и писанные под Win16
    Это-же касается не только Win7 x64, но и любой 64-битной винды в целом.
    Дружба-магия-радость!
    Ответить с цитированием  
     

  11. #10  
    Гуру Аватар для Konstantin Shcherba
    Регистрация
    08.11.2010
    Сообщений
    1,336
    Сказал(а) спасибо
    26
    Поблагодарили 139 раз(а) в 107 сообщениях
    Записей в блоге
    1
    Можно еще компилить TASM-ом или FASM-ом, синтаксис отличается незначительно.
    Ответить с цитированием  
     

Страница 1 из 2 12 ПоследняяПоследняя
Информация о теме
Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Нужно поправить несколько модулей под DLE 9.7
    от Виталий Тяшкевич в разделе Изготовление сайтов и дизайн
    Ответов: 1
    Последнее сообщение: 26.08.2013, 20:03
  2. Нужно вычислить кол-во дней между датами
    от Рафиль в разделе Turbo Pascal
    Ответов: 1
    Последнее сообщение: 19.01.2013, 19:08
  3. Ответов: 1
    Последнее сообщение: 27.09.2012, 12:14
  4. Ответов: 11
    Последнее сообщение: 25.12.2010, 02:33
Ваши права
  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •