Результаты поиска
| |
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. понятия не имею как работает [...]. Понимаю что оно делает, но как работает - нет Препод написал, что это для нас пока что рановато, типа в такие дебри лезть не надо...
|
|
| |
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. Ну или предложите что-то другое... Не особо хочется голову насиловать с этими настройками каждый раз... 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 | Тема: Умножение с фиксированной точкой |
заслуженный участник
Сейчас нет на сайте
| как???
|
|
| |
Deswing | Дата: Среда, 25 Сентября 2013, 23:24 | Сообщение # 90 | Тема: Сумма чисел из дв. с. с запятой |
заслуженный участник
Сейчас нет на сайте
| LunarPixel, эх, а я уже разобрался)) Но всё равно спасибо большое!!! А как находить разность? (можно на примере, как в предыдущем посте )
|
|
| |
Deswing | Дата: Среда, 25 Сентября 2013, 21:19 | Сообщение # 91 | Тема: Сумма чисел из дв. с. с запятой |
заслуженный участник
Сейчас нет на сайте
| не понимаю откуда взялось Все остальные биты у меня совпали... п.с. у нас требуют сложение в столбик + проверка через десят. систему (что Вы, впрочем, и показали :()
|
|
| |
Deswing | Дата: Среда, 25 Сентября 2013, 20:20 | Сообщение # 92 | Тема: Сумма чисел из дв. с. с запятой |
заслуженный участник
Сейчас нет на сайте
| http://pixs.ru/showimage/DSC0108JPG_8321243_9171968.jpg (прошу не ругать, если написана глупость )
|
|
| |
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 однажды придёт по вашу душу! По слухам, дата релиза назначена на конец осени
|
|
| |
Deswing | Дата: Суббота, 21 Сентября 2013, 21:04 | Сообщение # 95 | Тема: Потоки? |
заслуженный участник
Сейчас нет на сайте
| возникла больная идея создать второй массив карты, который будет дублировать первый. Т.е. первый отрисовался, второй изменился и превратился в первый... но я такой подход считаю извращенством и лищними тратами ресурсов компьютера
|
|
| |
Deswing | Дата: Суббота, 21 Сентября 2013, 20:47 | Сообщение # 96 | Тема: Потоки? |
заслуженный участник
Сейчас нет на сайте
| Zweifx, консоль Izaron, приблизительно так же у меня работает прога без всяких там потоков... Но при каких-либо передвижениях элемента в массиве и обновлениях весь экран блымает, что очень раздражает. И тут же я вычитал, что выход есть - "двойная буферизация"...
|
|
| |
Deswing | Дата: Суббота, 21 Сентября 2013, 20:43 | Сообщение # 97 | Тема: Потоки? |
заслуженный участник
Сейчас нет на сайте
| Нохчи, значит я что-то неправильно понял??? Цитата Двойная буферизация — в информатике метод подготовки данных, обеспечивающий возможность отдачи готового результата, без прерывания процесса подготовки следующего результата. Из прочитанного я сделал для себя вывод, что в моей игре один поток будет делать расчеты (генерировать карту, перемещения объектов и т.п.), а второй - выводить... Как же тогда делается двойная буферизация? Добавлено (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);
и вижу, что какой-то поток работает быстрее, а какой-то - медленнее... И вообще мне не очень ясно что происходит. Ведь так работает сразу два потока, но как после вызова первого потока вызывается второй??
Как с помощью данной функции реализовать двойную буферизацию для игры? П.с. ради устранения "блымов" в консоли
|
|
| |
|