ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #331  
Старый 14.06.2008, 22:28
Аватар для Delimiter
Delimiter
Banned
Регистрация: 08.04.2005
Сообщений: 446
Провел на форуме:
2187381

Репутация: 518
По умолчанию

lea dx,mesag


mesag db 'OMG$',0
 
Ответить с цитированием

  #332  
Старый 14.06.2008, 23:22
Аватар для z01b
z01b
Постоянный
Регистрация: 05.01.2007
Сообщений: 508
Провел на форуме:
2360904

Репутация: 1393


По умолчанию

Цитата:
Сообщение от Delimiter  
lea dx,mesag


mesag db 'OMG$',0
или mov dx, offset mesag
 
Ответить с цитированием

  #333  
Старый 14.06.2008, 23:34
Аватар для Delimiter
Delimiter
Banned
Регистрация: 08.04.2005
Сообщений: 446
Провел на форуме:
2187381

Репутация: 518
По умолчанию

2 zo1b
угу! 8)))
 
Ответить с цитированием

  #334  
Старый 15.06.2008, 01:23
Аватар для Ded MustD!e
Ded MustD!e
Members of Antichat - Level 5
Регистрация: 23.08.2007
Сообщений: 417
Провел на форуме:
14324684

Репутация: 3908
По умолчанию

Объясните мне плиз, что делает этот кусок кода посредине программы на паскале)

Чем подробнее, тем лучше, желательно каждую строчку)

PHP код:
Procedure Rotate(D:integer; Var X,Y:integer);
Var 
C,S:integer;
    
X1,Y1:longint;
begin
  
if ((X=0) and (Y=0)) or (D=0then exit;
  
asm
    mov  AX
,D
    mov  BX
,360
    
xor  CX,CX
@m1:sub  AX,BX
    cmp  AX
,CX
    jnl  
@m1
@m2:add  AX,BX
    cmp  AX
,CX
    jl   
@m2
    mov  BX
,90
@m3:cmp  AX,BX
    jl   
@m4
    sub  AX
,BX
    inc  CX
    jmp  
@m3
@m4:sub  BX,AX
    shl  AX
,1
    shl  BX
,1
    Test CL
,1
    jz   
@m5
    xchg AX
,BX
@m5:mov  SI,AX
    mov  AX
,word PTR TableCos[SI]
    
mov  C,AX
    mov  AX
,word PTR TableCos[BX]
    
mov  S,AX
    cmp  CL
,1
    jl   
@ex
    jg   
@m6
@m7:neg  C
    jmp  
@ex
@m6:neg  S
    cmp  CL
,3
    jl   
@m7
@ex:end;
  
X1:=longint(X);
  
Y1:=longint(Y);
  
X:=(X1*C-Y1*Sshr 14;
  
Y:=(X1*S+Y1*Cshr 14;
end
 
Ответить с цитированием

  #335  
Старый 15.06.2008, 01:30
Аватар для Delimiter
Delimiter
Banned
Регистрация: 08.04.2005
Сообщений: 446
Провел на форуме:
2187381

Репутация: 518
По умолчанию

табличное определение синуса и косинуса, делается вместо вычисления ,для уменьшения количества тактов процессора для данных процедур....

угол дается в градусах... вычитая по 360 нормируем до индекса
Код:
    mov  AX,D  ;угол в D
    mov  BX,360
    xor  CX,CX  ;обнуление
@m1:sub  AX,BX
    cmp  AX,CX
    jnl  @m1
в итоге в ax значение не превышающее 360 градусов
операция не искажающая значения синуса и косинуса

далее начинаю вычитать квадранты, видимо таблица содержит не все 360 градусов
Код:
    mov  BX,90
@m3:cmp  AX,BX
    jl   @m4
    sub  AX,BX
    inc  CX
    jmp  @m3
в cx счетчик квадрантов
... далее получение индексов для таблицы и взятие значений.

... само взятие и запоминание в переменных
Код:
    mov  AX,word PTR TableCos[SI]
    mov  C,AX
    mov  AX,word PTR TableCos[BX]
    mov  S,AX

Последний раз редактировалось Delimiter; 15.06.2008 в 01:55..
 
Ответить с цитированием

  #336  
Старый 15.06.2008, 01:55
Аватар для Ded MustD!e
Ded MustD!e
Members of Antichat - Level 5
Регистрация: 23.08.2007
Сообщений: 417
Провел на форуме:
14324684

Репутация: 3908
По умолчанию

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

  #337  
Старый 15.06.2008, 01:58
Аватар для Delimiter
Delimiter
Banned
Регистрация: 08.04.2005
Сообщений: 446
Провел на форуме:
2187381

Репутация: 518
По умолчанию

ну к примеру 760 градусов .... вначале вычитаю
400=760-360
операция не изменяет значение синусов и косинусов
-40=400-360
а вот угол -40 уже устраивает нас

квадрант - это область получающаяся при делении плоскости прямыми X и Y.... их 4-ре штуки

в угловом эквиваленте квадрант = 90 градусов

... суть сводится к тому что таблица одна .... а используется так же и для получения синуов на правилах тригонометрии


/// если предстоит защита то посмотри матрицу поворота в инете полно описаний

Последний раз редактировалось Delimiter; 15.06.2008 в 02:11..
 
Ответить с цитированием

  #338  
Старый 15.06.2008, 19:26
Аватар для ntldr
ntldr
Постоянный
Регистрация: 04.12.2007
Сообщений: 424
Провел на форуме:
2364957

Репутация: 479
По умолчанию

mov dx,stroka+100h ;fasm не знает что такое lea/offset
xor bx,bx
mov ah,09h
int 21h ;нормально выводит строку
xor ax,ax

mov cx,5 ;первые 5 букв
mov si,stroka+100h

@cy:lodsb ;буква из stroka -> аккумулятор
mov [string+100h],al ; тут он пытается записать букву из stroka в string
loop @cy

xor ax,ax
mov dx,string+100h
mov ah,09h
int 21h ;тут он выводит бред
int 20h

stroka db 'aldaskjfahslkdjahlsjdh',13,10,'$',0
string db 80 DUP(?)

Программа должна вывести сначал переменную stroka, она ее выводит, а затем должна перегнать ее в переменную string и вывести, но похоже прогша ее тупо не записывает в string.
Возможно ли через stosb?

//fasm

получилось так:

mov cx,5
mov si,stroka+100h
mov di,string+100h

@cy:lodsb
stosb
loop @cy

...................

string db '0000000000000000000000',13,10,'$',0

вопрос: как правильно будет через string dup (?)

Последний раз редактировалось ntldr; 15.06.2008 в 19:36..
 
Ответить с цитированием

  #339  
Старый 15.06.2008, 19:43
Аватар для FoX's
FoX's
Участник форума
Регистрация: 26.12.2004
Сообщений: 188
Провел на форуме:
1495357

Репутация: 107
Отправить сообщение для FoX's с помощью ICQ
По умолчанию

исп. movsb
 
Ответить с цитированием

  #340  
Старый 15.06.2008, 23:40
Аватар для 0verbreaK
0verbreaK
Постоянный
Регистрация: 30.04.2008
Сообщений: 323
Провел на форуме:
379101

Репутация: 136
По умолчанию

Очевидно, что на stroka надо передать смещение в

Код:
mov dx,string+100h
из руководства по fasm

Код:
lea dx,[bx+si+1] ; load effective address to dx
ntldr в официальном мануале все функции описаны, очевидно
проблема в не понимании именно синтаксиса фасма.

руководство на русском
http://www.wasm.ru/baixado.php?mode=doc&id=133
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопросы для новичков! (faq) PEPSICOLA С/С++, C#, Delphi, .NET, Asm 92 14.05.2010 17:59
Обзор программ для очистки жёсткого диска v1ru$ Soft - Windows 21 17.01.2010 21:07
ОС с нуля z01b С/С++, C#, Delphi, .NET, Asm 36 03.07.2008 15:30
Лучший софт для Linux _-Ramos-_ Soft - *nix 11 15.01.2008 12:08
Взлом Unix а silveran *nix 4 21.12.2005 22:46



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ