Суббота, 20 Апреля 2024, 06:51

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
Форум игроделов » Записи участника » Deswing [794]
Результаты поиска
DeswingДата: Суббота, 19 Октября 2013, 18:01 | Сообщение # 81 | Тема: Assembler
заслуженный участник
Сейчас нет на сайте
Извините за глупейший вопрос, но... В
Цитата Deswing ()
Сообщение # 17

код написан на TASM? Я просто присматриваю себе среды разработки...
DeswingДата: Четверг, 17 Октября 2013, 22:25 | Сообщение # 82 | Тема: Assembler
заслуженный участник
Сейчас нет на сайте
как быть:
стек принимает 2 байта и выше... Вроде ок, переживем... Но что мне делать, если мне нужно что-то перекинуть из стека в al??? al же, вроде, равен одному байту...
mul работает так: берет значение al, умножает на аргумент и возвращает результат в ax... Я правильно понимаю?
А как тогда работает or и and?
DeswingДата: Вторник, 15 Октября 2013, 22:46 | Сообщение # 83 | Тема: Assembler
заслуженный участник
Сейчас нет на сайте
PBPROG, что есть dword и CDQ?
wcpt, PBPROG, очень приятно что вы откликнулись, спасибо. Будет хоть пища для ума... (а сроки "сдачи" отложили на 22 октября). Кстати, а вы не в курсе, как в ассемблере делается объединение и пересечение? And и or соответственно или я не прав?

А я вот, с горем пополам, что-то пытался сам написать:
Код
;********************
;Opredelyaem segment steka
;********************
stsg    segment    para    stack    'stack'
  dw    32    dup(?)    ;videlyaem 64 bayta
stsg    ends
;********************
;Opr. segment dannih
;********************
dssg    segment    para    'data'
a    db    5
b    db    15  
c    db    3
d    db    7
result    db    ?
dssg ends
;********************
;Opr. segment koda
;********************
cdsg    segment    para    'code'    
  assume    cs:cdsg, ds:dssg, ss:stsg
;********************  
;MAIN PROGRAM
;********************
prg    proc    far
;********************
;Segmentniy registr dannih (init)  
;********************
push    ds
sub    ax, ax
push    ax
mov    ax, dssg
mov    ds, ax

;********************
;PROGRAM START
;a·a-5-c/b+(3+c)·a·7
;a = 5
;b = 15
;c = 3
;d = 7
;********************
sub    ax,ax
mov    al,a    ;a=5->al=5
mul    al    ;al*al->a*a->5*5
sub    ax,5    ;5*5-5
push    ax    ;ax - into stack. ax = a*a-5
sub    ax,ax    ;Clear ax
sub    al,al  ;Clear al
mov    al,c
mov    dl,b
div    dl  ;c/b. Result - into al, % - into ah  
sub    ax,ax
sub  dl,dl
sub    al,al
mov    al,c    ;al = 3
add  al,al
push    al    ;3+c into stack
sub    al,al    ;Clear al
mov    al,d    ;al = 7
mov    dl,a    ;dl = 5
mul    dl    ;ax = 5*7
sub    al,al
sub    dl,dl
mov    dl,ax    ;dl = 5*7
sub    ax,ax
pop    al
mul    dl    ;(3+c)*a*7
push    ax
sub    al,al
sub    dl,dl
pop    al
pop    bl
add    al,bl
push    al
sub    al,al
sub    bl,bl

;********************
;PROGRAM END
;********************
  ret
prg    endp
cdsg    ends
   end    prg
  

... Ошибок - тьма... И не знаю как быть с дробью...
Ошибки, наверное, из-за моего неумения обращаться с регистрами... Наверное пытался засунуть в регистр то, что просто-напросто не может поместиться...
Кто-нибудь может написать сколько и в какой регистр помещается? Ну, в универе мы рассматриваем процессор 8086
PBPROG,

Добавлено (15.10.2013, 22:34)
---------------------------------------------

Цитата Deswing ()
And и or

(or и and)*

Добавлено (15.10.2013, 22:46)
---------------------------------------------
p.s. понятия не имею как работает [...]. Понимаю что оно делает, но как работает - нет sad Препод написал, что это для нас пока что рановато, типа в такие дебри лезть не надо...

DeswingДата: Воскресенье, 13 Октября 2013, 13:38 | Сообщение # 84 | Тема: Assembler
заслуженный участник
Сейчас нет на сайте
а как высчитать a·a-5-c/b+(3+c)·a·7? а = 5 b = 15 c =3...
Третий день пытаюсь сделать это, но ничего не выходит... А сдавать работу завтра... Помогите, плиз... Может на примере разберусь (помимо этого задания есть куча других, но это, как по мне, вызывает у меня больше сложностей)
DeswingДата: Пятница, 11 Октября 2013, 20:03 | Сообщение # 85 | Тема: Assembler
заслуженный участник
Сейчас нет на сайте
Код
;Opredelyaem segment steka
stsg    segment    para    stack    'stack'
  dw    32    dup(?)    ;videlyaem 64 bayta
stsg    ends

;Opr. segment dannih
dssg    segment    para    'data'
a    db    5
b    db    15  
c    db    3
result    db    ?

;Opr. segment koda
cdsg    segment    para    'code'    
  assume    cs:cdsg, ds:dssg, ss:stsg
   
;MAIN PROGRAM
prg    proc    far

;Segmentniy registr dannih (init)
push    ds
sub    ax, ax
push    ax
mov    ax, dssg
mov    ds, ax

;PROGRAM START
sub    al, al
mov    al, a ;a=5->al=5
mul    al
;PROGRAM END
  ret
prg    endp
cdsg    ends
  end    prg
   
   

a*a делается так? А куда результат занесется?


Сообщение отредактировал Deswing - Пятница, 11 Октября 2013, 20:05
DeswingДата: Пятница, 11 Октября 2013, 00:49 | Сообщение # 86 | Тема: Assembler
заслуженный участник
Сейчас нет на сайте
Помогите пожалуйста настроить DOSBox под TASM.
Ну или предложите что-то другое... Не особо хочется голову насиловать с этими настройками каждый раз... sad
P.S. вроде как программы на asm уже писал (в универе), очень даже интересно! Разве что без комментариев туговато будет... Поэтому я их вставляю почти везде))
Кстати, а как на экране напечатать какое-то значение? Ну там напрямую или из регистра...

Добавлено (11.10.2013, 00:49)
---------------------------------------------
и кстати, как конкретно работает mul? Вот я не понимаю откуда берется второй аргумент... Он как-то неявно берется...
Допустим я хочу 2*3... И вот обычно пишут что-то типа:
mov ax, a ;(a=2)
mul b ; a*b

Откуда??? Как??? Почему произойдет a*b???
А как число тогда в квадрат возвести? Нет специальных фич? Лишь число само на себя?


Сообщение отредактировал Deswing - Пятница, 11 Октября 2013, 00:50
DeswingДата: Пятница, 04 Октября 2013, 21:02 | Сообщение # 87 | Тема: Assembler
заслуженный участник
Сейчас нет на сайте
Доброго времени суток! Я студент первого курса, очень интересует ассемблер.
Учусь по направлению "информатика". И вот на днях сказали, что скоро мы начнем его проходить, НО мне хотелось бы (ради себя, не учебы) тоже как-нибудь поднапрячь голову и попытаться что-нибудь написать...
Всё было бы хорошо, но тут я встретил с десяток интерпретаторов, глаза разбежались...
За что хвататься? Что почитать? А помимо книг есть интернет-статьи?
Что лучше: COM или EXE (если не ошибаюсь, то в программе на ассемблере существует 4 сегмента. Ну а в СОМ они как бы совпадают. Надеюсь, я не ошибаюсь?)

Добавлено (04.10.2013, 21:02)
---------------------------------------------
и да, почему asm == assembler???

DeswingДата: Воскресенье, 29 Сентября 2013, 10:16 | Сообщение # 88 | Тема: Умножение с фиксированной точкой
заслуженный участник
Сейчас нет на сайте
Xakep, я имел ввиду как в столбик умножить числа с фикс. точкой. 1111110011,11*00111101,01, например
DeswingДата: Суббота, 28 Сентября 2013, 23:04 | Сообщение # 89 | Тема: Умножение с фиксированной точкой
заслуженный участник
Сейчас нет на сайте
как??? surprised
DeswingДата: Среда, 25 Сентября 2013, 23:24 | Сообщение # 90 | Тема: Сумма чисел из дв. с. с запятой
заслуженный участник
Сейчас нет на сайте
LunarPixel, эх, а я уже разобрался)) Но всё равно спасибо большое!!! smile
А как находить разность? (можно на примере, как в предыдущем посте smile )
DeswingДата: Среда, 25 Сентября 2013, 21:19 | Сообщение # 91 | Тема: Сумма чисел из дв. с. с запятой
заслуженный участник
Сейчас нет на сайте
Цитата (LunarPixel)
101

не понимаю откуда взялось sad Все остальные биты у меня совпали...
п.с. у нас требуют сложение в столбик + проверка через десят. систему (что Вы, впрочем, и показали :()
DeswingДата: Среда, 25 Сентября 2013, 20:20 | Сообщение # 92 | Тема: Сумма чисел из дв. с. с запятой
заслуженный участник
Сейчас нет на сайте
http://pixs.ru/showimage/DSC0108JPG_8321243_9171968.jpg
(прошу не ругать, если написана глупость sad )
DeswingДата: Среда, 25 Сентября 2013, 19:46 | Сообщение # 93 | Тема: Сумма чисел из дв. с. с запятой
заслуженный участник
Сейчас нет на сайте
11001111,11+1010101,1 = 100100000,01???
DeswingДата: Понедельник, 23 Сентября 2013, 21:28 | Сообщение # 94 | Тема: Blood Harvest [2D] - Hardcore & Old-Style Platformer
заслуженный участник
Сейчас нет на сайте
Обновление Blood Harvest v1.4 обещает быть потрясающим, оно станет самым крупным обновлением за всю историю игры!
Информации много разглашать не могу, но... Геймеры, берегитесь, Blood Harvest v1.4 однажды придёт по вашу душу! smile
По слухам, дата релиза назначена на конец осени wink
DeswingДата: Суббота, 21 Сентября 2013, 21:04 | Сообщение # 95 | Тема: Потоки?
заслуженный участник
Сейчас нет на сайте
возникла больная идея создать второй массив карты, который будет дублировать первый. Т.е. первый отрисовался, второй изменился и превратился в первый... но я такой подход считаю извращенством и лищними тратами ресурсов компьютера cry
DeswingДата: Суббота, 21 Сентября 2013, 20:47 | Сообщение # 96 | Тема: Потоки?
заслуженный участник
Сейчас нет на сайте
Zweifx, консоль
Izaron, приблизительно так же у меня работает прога без всяких там потоков... Но при каких-либо передвижениях элемента в массиве и обновлениях весь экран блымает, что очень раздражает. И тут же я вычитал, что выход есть - "двойная буферизация"...
DeswingДата: Суббота, 21 Сентября 2013, 20:43 | Сообщение # 97 | Тема: Потоки?
заслуженный участник
Сейчас нет на сайте
Нохчи, значит я что-то неправильно понял??? wacko
Цитата
Двойная буферизация — в информатике метод подготовки данных, обеспечивающий возможность отдачи готового результата, без прерывания процесса подготовки следующего результата.

Из прочитанного я сделал для себя вывод, что в моей игре один поток будет делать расчеты (генерировать карту, перемещения объектов и т.п.), а второй - выводить... Как же тогда делается двойная буферизация? sad

Добавлено (21.09.2013, 20:43)
---------------------------------------------
//кстати, а если я в ф-ции не поставлю _endthread, то получится бесконечный цикл? т.е. тело ф-ции будет выполняться вплоть до завершения программы??

DeswingДата: Суббота, 21 Сентября 2013, 20:21 | Сообщение # 98 | Тема: Потоки?
заслуженный участник
Сейчас нет на сайте
GameMix, я использую VS. Против Билдера ничего не имею, но предпочитаю использовать visual studio
DeswingДата: Суббота, 21 Сентября 2013, 20:16 | Сообщение # 99 | Тема: Потоки?
заслуженный участник
Сейчас нет на сайте
Izaron, а что нужно сделать, чтобы потоки работали попеременно?
DeswingДата: Суббота, 21 Сентября 2013, 19:52 | Сообщение # 100 | Тема: Потоки?
заслуженный участник
Сейчас нет на сайте
Цитата (Izaron)
Еще можно создавать потоки с помощью CreateThread, функция передается как DWORD WINAPI func(void*)

но там вроде всякие cout не работают?

ап:
Цитата (Deswing)
_beginthread(myThread, 0, NULL);
_beginthread(myThread2, 0, NULL);

и вижу, что какой-то поток работает быстрее, а какой-то - медленнее...
И вообще мне не очень ясно что происходит. Ведь так работает сразу два потока, но как после вызова первого потока вызывается второй??

Как с помощью данной функции реализовать двойную буферизацию для игры? П.с. ради устранения "блымов" в консоли
Форум игроделов » Записи участника » Deswing [794]
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг