Страница 1 из 2

начинающий ассемблерист или как там...

Добавлено: 10 фев 2007, 09:07
Oleg_Rus
вот решил посмотреть что такое ассемблер.
Препод говорит, что "Сложно-Сложно" и мне стало любопытно как им работать...

для начала такой вопрос: для ассемлера нужен спецальный компилятор и если да то где его мона найти, скачать?

дальше: дайте мне пожалуйста листинг программы сложения 2 чисел (желательно с комментариями, но я человек не придирчивый, могу и так).

Re: начинающий ассемблерист или как там...

Добавлено: 12 фев 2007, 01:27
Ramzey
Много интересного, так же компилятор и линковщик найдешь на http://www.wasm.ru.
программа сложения 2 чисел, для TASM:

Код: Выделить всё


                .model  tiny
                .code
                ORG     100h
BEGIN:
;устанавливаем указатель сегмента данных на cs (ds:=cs)
                push    cs
                pop     ds
;сложение чисел a и b
                mov     al, a
                add     al, b
;подготавливаем результат для вывода на экран
                add     al, 30h
;выводим на экран 0Ah функцией биос
                mov     ah, 0Ah
;обнуляем bx - нулевая видеостраница
                xor     bh, bh
;количество повторений 1
                mov     cx, 1
;вызываем обработчик 10h прерывания - функции биос
                int     10h
;функция ДОС 4Ch завершение работы программы с кодом 00
                mov     ax, 4c00h
                int     21h
;переменные
a               db      5
b               db      4
                END     BEGIN
В результате компиляции получается .com-файл.
Это самый простой вариант, когда результат одноразрядный

Re: начинающий ассемблерист или как там...

Добавлено: 12 фев 2007, 05:18
Oleg_Rus
ага... Ramzey, а на той ссылочке, которую ты мне кинул, дофига всяких там компилеров, нон какой больше подойдет для начанающего ассемблериста?

спасибо за приведенный мне пример :) )

Re: начинающий ассемблерист или как там...

Добавлено: 13 фев 2007, 00:19
Ramzey
Я с TASMа начинал - так в институте было.
Рекомендую использовать DN (или ему подобный файл менеджер) для писания текстов прог и настройть запуск файлов с расширением *.asm.

Re: начинающий ассемблерист или как там...

Добавлено: 15 фев 2007, 01:39
Колядин Максим
В Turbo Pascal 7.0 есть встроенный ассемблер. Чтобы включить в программу код asm нужно

Код: Выделить всё

asm
.....
.....           код Assembler'a
.....
end;

Re: начинающий ассемблерист или как там...

Добавлено: 15 фев 2007, 17:30
somewhere
&quot писал(а):и настройть запуск файлов с расширением *.asm.
Oleg_Rus, это поможет тебе быстро компилить asm файлы с помощью bat файла, указав имя проги в параметрах (asm.bat myprog.asm - сокр. вариант: asm myprog):

Код: Выделить всё

@echo off
D:\Langs\asm\tasm %1.asm  /iD:\Langs\asm\Includes /q/m3 /la
D:\Langs\asm\tlink %1.obj /m /e /3 /yx
del *.obj

Re: начинающий ассемблерист или как там...

Добавлено: 16 фев 2007, 12:39
Oleg_Rus
somewhere,
begin
asm
push cs
pop ds

mov a1, a
add a1, b

add a1, 30h

mov a1, 0Ah

xor bh, bh

mov cx, 1

int 10h

mov ax, 4c00h
int 21h

a db 5
b db 4
end

допустим я набил этот самый код в pascal`е, но не компилится и, так как я в ассемблере ламер, то прошу объяснить почему не пашет, почему никак не хочет работать, и как это исправить

Re: начинающий ассемблерист или как там...

Добавлено: 16 фев 2007, 13:05
somewhere
&quot писал(а):a db 5
b db 4

Код: Выделить всё

var a,b: byte;
&quot писал(а):mov ax, 4c00h
int 21h
Примерно эти строки генерит сам паскаль после end.

Re: начинающий ассемблерист или как там...

Добавлено: 17 фев 2007, 06:04
Oleg_Rus
somewhere, спасибо, доработал, но теперь выдает ошибку

a bd 5;

говорит Syntax error;

Re: начинающий ассемблерист или как там...

Добавлено: 19 фев 2007, 12:39
Ramzey
Вот как это выглядит на паскале:

Код: Выделить всё

var
  a,b : byte;
begin
  a:=5;
  b:=4;
  asm
{;сложение чисел a и b}
                mov     al, a
                add     al, b
{;подготавливаем результат для вывода на экран}
                add     al, 30h
{;выводим на экран 0Ah функцией биос}
                mov     ah, 0Ah
{;обнуляем bx - нулевая видеостраница}
                xor     bh, bh
{;количество повторений 1}
                mov     cx, 1
{;вызываем обработчик 10h прерывания - функции биос}
                int     10h        
  end;
end.