информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Все любят медПортрет посетителя
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
rand() в C++,а на ASM? 07.12.01 08:04    Штраф: 10 [Rook]
Автор: Lamer... Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Использование rand() на C++ понятно,а вот как такое реализовать на ASM.
Что-то у меня не получается.
Может кто исходник не пожалеет представить.
на ASM 07.12.01 09:41  
Автор: Chingachguk <Chingachguk> Статус: Member
<"чистая" ссылка>
> Использование rand() на C++ понятно,а вот как такое
> реализовать на ASM.
> Что-то у меня не получается.
> Может кто исходник не пожалеет представить.

Это из книги одной.
Сначала зовешь это:

Randomize proc near
push ds
push 0040h
pop ds
push word ptr ds:[006ch] ; Read current BIOS ticks
pop word ptr ss:Seed
pop ds
retn
Randomize endp

А потом вот это:

Random proc near
; Получить случаное число в интервале 0..MaxRandom (в стеке)
; Результат вернуть в регистре ax
push bp
mov bp,sp
pusha
mov ax,Seed
mov cx,8
@NewBit:mov bx,ax
and bx,002dh
xor bh,bl
clc
jpe @shift
stc
@shift: rcr ax,1
loop @NewBit
mov Seed,ax
mov ah,0
xor dx,dx
mov bx,[bp+4] ; bx = Максимально допустимое число
add bl,1
adc bh,0
div bx
mov [bp+4],dx
popa
mov ax,[bp+4] ; Результат вернем в виде слова
pop bp
ret 2
Random endp

Например, так:

push 132
call Random
; -> ax- случайное число от 0 до 132...
Вообще этот вопрос уже обсуждался тут, по поику совершенно спокойно находится. 07.12.01 16:10  
Автор: Rook <Alex Sergeev> Статус: Member
<"чистая" ссылка>
поэтому 10 штрафа от меня.
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach