Программирование на ASM

Эта тема предназначена для обсуждения и решение любых проблем, связанных с программированием на языке ASM, обмена секретами, опытом и помощи в программирование другим пользователям.
 

Robert Manson

Ословед
Потребность следующая: нужно собрать программку на TASM или MASM которая будет банально складывать 2 числа, есть у кого-нибудь "русские" книжки по какому нибудь из этих компиляторов?
 

G@n$

Ословед
Нраод помогите с часами по Асму код времени есть а изменялись чтобы как сделать(те вызывать часы раз в секунду)Буду благодарен А лучшек исходничеке для примера
 

Doktor Lampochkin

Ословед
Люди подскажите через какие команды в TASM или MASM асемблировать, а потом отлинковать в *.EXE файл ??
 

cz

Ословед
tasm название *.asm файла
tlink название *.asm файла
 

Robert Manson

Ословед
Расскажите как используя MASM и WinApi вывести окошко с двумя полями для ввода и кнопкой!!!
 

Den

Ословед
нужно написать две проги на языке Ассемблер, для masm 5!!


первая
Даны натуральные числа a,b,c - обозначающие дату (число, месяц, год) по Юлианскому календарю, получить эту дату по современному календарю. Расхождения междудатами определяется тем, что в юлианском календаре каждый год, номер, которого длится на 4, является высокостным, и из этого правила нет никаких исключений! ....



вторая большая:
В качестве исходных данных задано простое гра-
фическое изображение, построенное с помощью от-
резков прямых на экране стандартного монитора
VGA с разрешением 640*480 пикселей.
На экране монитора задана система координат,
вид которой зависит от варианта.

Написать программу преобразования графического
изображения.

Преобразование выполняется линейно, то есть
путем преобразования координат каждой из точек
изображения по соотношению вида:
x1=a*x+b
y1=c*y+d
Вертикальную левую и вертикальную правую
границы экрана считать "склеенными", другими
словами, при выходе преобразованного изображения
за правую границу экрана это изображение следует
продолжить, начиная от левой границы экрана.
Верхнюю и нижнюю горизонтальные границы не
склеивать.

Положение и размеры исходного изображения
задаются во входном текстовом файле. Положение и
размеры преобразованного изображения сохраняют-
ся в выходном текстовом файле.

Тексты программ, имеющие признаки написанных
"под копирку",- с идентификаторами и участками
кода, использовавшимися в уже предъявленных по-
яснительных записках,- к рассмотрению не прини-
маются.

Варианты заданий.

1. Положение нуля системы координат на экране:
а)в центре левой верхней четверти поля экрана,

2. Ориентация осей координат относительно вер-
тикальной и горизонтальной границ экрана.

- положительная полуось ординат направлена
вверх и параллельна вертикальной границе экрана,
положительная полуось абсцисс направлена вправо
и параллельна горизонтальной границе экрана.

3. Исходное графическое изображение:
отрезок прямой, положение на экране крайних
точек которого заданы двумя парами номеров
пикселей вдоль вертикальной и горизонтальной
границ экрана соответственно. Номера пикселей
отсчитываются от левого верхнего угла вправо и
вниз.
Смещение Смещение
по горизонтали по вертикали
б) 500 310 точка1
250 450 точка2,

4. Условие линейного преобразования.
б) отобразить зеркально исходное графическое
изображение относительно оси абсцисс, ,(осе-
симметричное отображение),



кто уверен что смогет написать первую или вторую или бед о выходных, прошу помочь, соответственно за вознаграждение!!! но нуна имеено для 5 масма. и коментами чем полней тем лудше
 

Larry_

Ословед
Подскажите, пожалуйста, что означает ошибка:
error LNK2026: module unsafe for SAFESEH image.?

Заранее благодарен.

--
Вопрос снимается. Уже разобрался. Нужно было компилировать asm файл с параметром /safeseh.
 

Quantum-Person

Ословед
Если кто-нибудь жив в етой теме то может кто нибудь выкинуть хелпы или справочник или самоучитель ! Заранее благодарен!
 

gureedo

Самец :)
а по фасму хелпов не надо.
если ты знаешь x86 или аналогичный асм, то взгляда на примеры из фасма будет достаточно чтобы разобратся.
 
V

VIRUS 13

Вообщем такая ситуация ...нужна помощь по коду, который должен выводить на экран российский флаг,прога написана вот ее код :
Код:
org 100h
start:
mov ah,02h
mov al,13h
int 10h
mov al,16

call vert
mov ah,00h
int 20h

vert:
mov [y],10
@2:
inc [y]
call line
cmp [y],60
je @ch
cmp [y],90
je @ch2
cmp [y],120
jne @2
ret

line:
mov [x],10
@1:
mov ah,0ch
mov bh,0
mov dx,[y]
mov cx,[x]
int 10h
inc [x]
cmp [x],270
jne @1
ret
@ch:
mov al,1
jmp @2
@ch2:
mov al,4
jmp @2

x dw 0
y dw 0

помощь нужна такая: описать каждую строку ,что она делает? кто с асемблером знаком плиз помогите...
 
S

Sgt. Pepper

Код:
CSEG segment  {задаем имя сегменту (CSEG)}
assume cs:cseg, ds:cseg, es:cseg, ss:cseg {не помню, зачем это, но иначе не компилируется}
org 100h  {код программы будет располагаться начиная со смещения 100h По этому адресу в память загружаются программы .COM}

start: {тут обзываем как хотим}
mov ah,02h 
mov al,13h {видеорежим - 256 цветов 320х200}
int 10h {прерывание для упр. дисплеем и видюхой/собсно переключ.в видеорежим}
mov al,16

call vert {вызов функции vert}
mov ah,00h
int 20h {насколько помню, выход из программы}

vert:{функция vert}
mov [y],10
@2:
inc [y]
call line
cmp [y],60
je @ch
cmp [y],90
je @ch2
cmp [y],120
jne @2
ret

line:
mov [x],10
@1:
mov ah,0ch
mov bh,0
mov dx,[y]
mov cx,[x]
int 10h
inc [x]
cmp [x],270
jne @1
ret
@ch:
mov al,1
jmp @2
@ch2:
mov al,4
jmp @2

x dw 0
y dw 0
CSEG ends 
end start {Конец программы}

ПОСТЕПЕННО БУДУ ПРАВИТЬ ЭТО СООБЩЕНИЕ
 
S

Sgt. Pepper

Нашел у тебя ошибки:
1. Ты не описал сегмент
2. Забыл в конце кода написать end start
Все исправления в посте выше.

Программа компилируется, но почему-то виснет при выполнении.
Придется еще покопаться в коде.
 
Сверху