Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Первая программа на языке ASM "Helow World!", Не получается 
V
    Опции темы
Pakshin A. S.
Дата 13.2.2007, 19:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Вот и дошел учебный процесс до курса Assembler. Скачал Flat Assember 1.64. В универе дали два кода:
Код

; hello-1.asm
; Выводит на экран сообщение "Hello World!" и завершается
;
; Компиляция:
; MASM:
; ml /c hello-1.asm
; link hello-1.obj,,NUL,,,
; exe2bin hello-1.exe hello-1.com
;

    .model tiny            ; модель памяти, используемая для COM
    .code            ; начало сегмента кода
    org    100h        ; начальное значение счетчика - 100h
start:    mov    ah,9        ; номер функции DOS - в AH (вывод строки)
    mov    dx,offset message    ; адрес строки - в DX
    int    21h        ; вызов системной функции DOS
    ret            ; завершение COM-программы
message    db    'Hello World!',0Dh,0Ah,'$'    ; строка
    end    start        ; конец программы


Код

; hello-2.asm
; Выводит на экран сообщение "Hello World!" и завершается
;
    .model    small        ; модель памяти, используемая для EXE
    .stack    100h        ; Сегмент стека = 256
    .code            ; начало сегмента кода
start:    mov    ax, DGROUP    ; Сегментный адрес строки message
    mov    ds, ax        ; поместить в ds
    mov    dx,offset message    ; смещение строки - в DX
    mov    ah,9        ; номер функции DOS - в AH (вывод строки)
    int    21h        ; вызов функции 

    mov    ax, 4C00h        ; Функция "завершение программы"
    int    21h        ; вызов функции 
    .data            ; Сегмент данных
message    db    'Hello World!',0Dh,0Ah,'$'    ; строка
    end    start        ; конец программы


Но ни один в скаченнйо системе не хочет запускатсья...
Ругается на строчки с .model...
PM   Вверх
SergeCpp
Дата 13.2.2007, 19:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


 
**


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

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



Код
; fasm example of writing 16-bit COM program

    org    100h         ; code starts at offset 100h
    use16               ; use 16-bit code

display_text = 9

    mov    ah,display_text
    mov    dx,hello
    int    21h

    int    20h

hello db 'Hello world!',24h

Код
; fasm example of writing simple EXE program

format MZ

    push   cs
    pop    ds

    mov    ah,9
    mov    dx,hello
    int    21h

    mov    ax,4C00h
    int    21h

hello db 'Hello world!',24h


Эти программы (и другие примеры) есть в самой поставке FASM


Это сообщение отредактировал(а) SergeCpp - 13.2.2007, 20:06
PM MAIL WWW ICQ   Вверх
Pakshin A. S.
Дата 13.2.2007, 20:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



А моно масинький вопрос? Как сделать задержку, тобы выдеть что у меня там вывелось? НАпример, press any key или что-нить простенькое на подобие?
PM   Вверх
Rickert
Дата 13.2.2007, 20:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

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



Pakshin A. S., ИМХО - лучше уроков Калашникова нет. Бери их и сразу всё поймёшь.
Какие-то у вас монструозные исходники.
Вот самый простой вариант:
Код

CSEG    segment;
org    100h;

Begin:
    mov ah, 09h
    mov dx, offset Message
    int 21h
    int 20h

    Message db "Hello, World!$"
    CSEG ends
end Begin

Через tasm:
Цитата

tasm sf.asm
tlink sf.obj /t


Добавлено @ 20:24 
Pakshin A. S.
Ожидание нажатия клавиши реализуется так:
Код

mov ah, 10h
int 16h



--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
Pakshin A. S.
Дата 13.2.2007, 20:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(Rickert @  13.2.2007,  20:21 Найти цитируемый пост)
Ожидание нажатия клавиши реализуется так:

Чет не пашет.. smile
PM   Вверх
SergeCpp
Дата 13.2.2007, 20:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


 
**


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

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



Если запускать из консоли или из Far'а, то ничего не убежит и останется на экране.

И это тоже работает:
Код
; fasm example of writing 16-bit COM program

        org     100h   ; code starts at offset 100h
        use16          ; use 16-bit code

display_text = 9

        mov     ah,display_text
        mov     dx,hello
        int     21h

        mov     ah,10h
        int     16h

        int     20h

hello db 'Hello world!',24h



Это сообщение отредактировал(а) SergeCpp - 14.2.2007, 08:42
PM MAIL WWW ICQ   Вверх
Pakshin A. S.
Дата 13.2.2007, 20:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



 smile Всем спасибо.. Пойду разбираться как вводить дданые и тут же их выводить на экран...
PM   Вверх
vinter
Дата 13.2.2007, 22:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

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



вот простенькая программка с вводом, выводом и задержкой, макросы названы в стиле С
Код

getch macro
    mov ah,7
    int 21h
endm
printf macro out

    mov dx,offset out
    mov ah,9
    int 21h
endm
scanf macro in,num
    mov dx,offset in
        mov in,num+1
    mov ah,0ah
    int 21h
endm
d1 segment para public 'data'
  mess1 db '        Hello my dear user!!!',10,13,10,13,'$'
  mess2 db 'Please enter words(not more 8. Word it is 2 simbols.)',10,13,'$'
  ms db 'Result working of my program is:','$'
  msex db 'For exit please enter any key...','$'
  in_str dw 19 dup ('?')
  cr_lf db 10,13,'$'
d1 ends
e1 segment para public 'data'
  out_str dw 16 dup ('$')
e1 ends
c1 segment para public 'code'
  assume cs:c1,ds:d1,es:e1
start:    
        mov ax,d1
    mov ds,ax
        mov ax,e1
    mov es,ax
    printf mess1
        mov si,offset byte ptr in_str+2 
        mov di,offset out_str
st2:    printf mess2
        scanf in_str,16
        xor ah,ah
        mov al,byte ptr [in_str+1]
        mov cl,2
        idiv cl
        mov cl,al      
metka:   
        mov ax,[si]
        inc si
        inc si
        cmp ah,al
        jne lo 
        mov es:[di],ax
        inc di
        inc di  
lo:     loop metka
printf cr_lf
printf ms
mov ax,es
mov bx,ds
mov ds,ax
printf out_str
mov ds,bx
printf cr_lf
printf msex
getch
c1 ends
end start



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

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

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


 




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


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

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