начинающий ассемблерист или как там...
Модератор: Andy
- Oleg_Rus
- Сообщения: 335
- Зарегистрирован: 16 окт 2006, 09:56
- Откуда: г.Улан-Удэ, респ.Бурятия, Российская Федерация
- Контактная информация:
вот решил посмотреть что такое ассемблер.
Препод говорит, что "Сложно-Сложно" и мне стало любопытно как им работать...
для начала такой вопрос: для ассемлера нужен спецальный компилятор и если да то где его мона найти, скачать?
дальше: дайте мне пожалуйста листинг программы сложения 2 чисел (желательно с комментариями, но я человек не придирчивый, могу и так).
Препод говорит, что "Сложно-Сложно" и мне стало любопытно как им работать...
для начала такой вопрос: для ассемлера нужен спецальный компилятор и если да то где его мона найти, скачать?
дальше: дайте мне пожалуйста листинг программы сложения 2 чисел (желательно с комментариями, но я человек не придирчивый, могу и так).
e-mail: garmayev@yandex.ru
---------------------------------------------------------------------------
<a href="http://nick-name.ru/sertificates/711965/"><img src="http://nick-name.ru/img.php?nick=Garmay ... =2&text=t5" alt="Никнейм Garmayev зарегистрирован!" /></a>
---------------------------------------------------------------------------
<a href="http://nick-name.ru/sertificates/711965/"><img src="http://nick-name.ru/img.php?nick=Garmay ... =2&text=t5" alt="Никнейм Garmayev зарегистрирован!" /></a>
Много интересного, так же компилятор и линковщик найдешь на http://www.wasm.ru.
программа сложения 2 чисел, для TASM:
В результате компиляции получается .com-файл.
Это самый простой вариант, когда результат одноразрядный
программа сложения 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
Это самый простой вариант, когда результат одноразрядный
- Oleg_Rus
- Сообщения: 335
- Зарегистрирован: 16 окт 2006, 09:56
- Откуда: г.Улан-Удэ, респ.Бурятия, Российская Федерация
- Контактная информация:
ага... Ramzey, а на той ссылочке, которую ты мне кинул, дофига всяких там компилеров, нон какой больше подойдет для начанающего ассемблериста?
спасибо за приведенный мне пример
)
спасибо за приведенный мне пример

e-mail: garmayev@yandex.ru
---------------------------------------------------------------------------
<a href="http://nick-name.ru/sertificates/711965/"><img src="http://nick-name.ru/img.php?nick=Garmay ... =2&text=t5" alt="Никнейм Garmayev зарегистрирован!" /></a>
---------------------------------------------------------------------------
<a href="http://nick-name.ru/sertificates/711965/"><img src="http://nick-name.ru/img.php?nick=Garmay ... =2&text=t5" alt="Никнейм Garmayev зарегистрирован!" /></a>
Я с TASMа начинал - так в институте было.
Рекомендую использовать DN (или ему подобный файл менеджер) для писания текстов прог и настройть запуск файлов с расширением *.asm.
Рекомендую использовать DN (или ему подобный файл менеджер) для писания текстов прог и настройть запуск файлов с расширением *.asm.
- Колядин Максим
- Сообщения: 297
- Зарегистрирован: 16 ноя 2006, 19:09
- Откуда: Seattle, WA
- Контактная информация:
В Turbo Pascal 7.0 есть встроенный ассемблер. Чтобы включить в программу код asm нужно
Код: Выделить всё
asm
.....
..... код Assembler'a
.....
end;
Программист - это человек, который решает способом, который вы не понимаете, проблемы, о которых вы даже не подозревали...
Oleg_Rus, это поможет тебе быстро компилить asm файлы с помощью bat файла, указав имя проги в параметрах (asm.bat myprog.asm - сокр. вариант: asm myprog):" писал(а):и настройть запуск файлов с расширением *.asm.
Код: Выделить всё
@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
It's a long way to the top if you wanna rock'n'roll
- Oleg_Rus
- Сообщения: 335
- Зарегистрирован: 16 окт 2006, 09:56
- Откуда: г.Улан-Удэ, респ.Бурятия, Российская Федерация
- Контактная информация:
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`е, но не компилится и, так как я в ассемблере ламер, то прошу объяснить почему не пашет, почему никак не хочет работать, и как это исправить
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`е, но не компилится и, так как я в ассемблере ламер, то прошу объяснить почему не пашет, почему никак не хочет работать, и как это исправить
e-mail: garmayev@yandex.ru
---------------------------------------------------------------------------
<a href="http://nick-name.ru/sertificates/711965/"><img src="http://nick-name.ru/img.php?nick=Garmay ... =2&text=t5" alt="Никнейм Garmayev зарегистрирован!" /></a>
---------------------------------------------------------------------------
<a href="http://nick-name.ru/sertificates/711965/"><img src="http://nick-name.ru/img.php?nick=Garmay ... =2&text=t5" alt="Никнейм Garmayev зарегистрирован!" /></a>
" писал(а):a db 5
b db 4
Код: Выделить всё
var a,b: byte;
Примерно эти строки генерит сам паскаль после end." писал(а):mov ax, 4c00h
int 21h
It's a long way to the top if you wanna rock'n'roll
- Oleg_Rus
- Сообщения: 335
- Зарегистрирован: 16 окт 2006, 09:56
- Откуда: г.Улан-Удэ, респ.Бурятия, Российская Федерация
- Контактная информация:
somewhere, спасибо, доработал, но теперь выдает ошибку
a bd 5;
говорит Syntax error;
a bd 5;
говорит Syntax error;
e-mail: garmayev@yandex.ru
---------------------------------------------------------------------------
<a href="http://nick-name.ru/sertificates/711965/"><img src="http://nick-name.ru/img.php?nick=Garmay ... =2&text=t5" alt="Никнейм Garmayev зарегистрирован!" /></a>
---------------------------------------------------------------------------
<a href="http://nick-name.ru/sertificates/711965/"><img src="http://nick-name.ru/img.php?nick=Garmay ... =2&text=t5" alt="Никнейм Garmayev зарегистрирован!" /></a>
Вот как это выглядит на паскале:
Код: Выделить всё
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.