IPB
ЛогинПароль:

> ПРАВИЛА РАЗДЕЛА!!!

1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!

> Тушевание используя случайные чисела, Графическое
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 5

Репутация: -  0  +


Привет спецам...
Еще одна лабораторка на носу blink.gif
В примере ниже я вывожу на екран в графическом режиме букву , белую на черном.
Нужно сделать так, чтобы эта буква затушевалась, но не просто по порядку, а с применением генерации случайных чисел (буква как бы рассыпается).
Подскажите пожалуйста возможный способ решения.
Заранее благодарен.
	.model	tiny
.code  
org 100h
start:
push ax
mov ax, 0013h
int 10h
pop ax
mov si, 0
mov bx, offset kord

ciklas:
mov cx,[bx+si]
mov dx,[bx+si+2]
mov al, 00000111b
mov ah, 0Ch
int 10h
add si,4
cmp si, 604
jne ciklas

mov ah, 08h
int 21h
cmp al, 32
jne quit

quit: mov ax, 0003h
int 10h
ret

kord dw 50,50,51,50,52,50,53,50,  59,50,60,50,61,50,62,50
dw 50,51,51,51,52,51,53,51,  59,51,60,51,61,51,62,51
dw 50,52,51,52,52,52,53,52,  59,52,60,52,61,52,62,52
dw 50,53,51,53,52,53,53,53,  59,53,60,53,61,53,62,53
dw  50,54,51,54,52,54,53,54,  59,54,60,54,61,54,62,54
dw 50,55,51,55,52,55,53,55,  59,55,60,55,61,55,62,55
dw 50,56,51,56,52,56,53,56,  59,56,60,56,61,56,62,56
dw 50,57,51,57,52,57,53,57,  59,57,60,57,61,57,62,57
dw 50,58,51,58,52,58,53,58,  59,58,60,58,61,58,62,58
dw 50,59,51,59,52,59,53,59,  59,59,60,59,61,59,62,59
dw 50,60,51,60,52,60,53,60,  59,60,60,60,61,60,62,60
dw 50,61,51,61,52,61,53,61,  59,61,60,61,61,61,62,61
dw 50,62,51,62,52,62,53,62,  59,62,60,62,61,62,62,62
dw 50,63,51,63,52,63,53,63,  59,63,60,63,61,63,62,63
dw 50,64,51,64,52,64,53,64,  59,64,60,64,61,64,62,64
dw       51,65,52,65,53,65,  59,65,60,65,61,65
dw      52,66,53,66,54,66,55,66,56,66,57,66,58,66,59,66,60,66
dw      52,67,53,67,54,67,55,67,56,67,57,67,58,67,59,67,60,67
dw     53,68,54,68,55,68,56,68,57,68,58,68,59,68
end start
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Профи
****

Группа: Пользователи
Сообщений: 775
Пол: Мужской

Репутация: -  0  +


В смысле прогу что-ли за тебя написать?? blink.gif angry.gif

Вот держи лучше кусок кода для генерации псевдослучайных чисел:

Для начала нужны 2 переменных, для сохр-ия предыдущего значения:
типа:

Rand1 dw 20h
Rand2 dw 1024h

Привязка к текущему значению таймера, обычно оформляется отдельной процедурой:
   mov ah,2Ch
  int 21h
  mov Rand1,ax
  mov Rand2,dx


И собственно сама генерация:
Диапазон выбора задается через стек, т.е. положил 2048, то выбор случайного числа из диапазона: 0..2048. А возврат в AX.

   mov     ax,Rand1
  mov     bx,Rand2
  mov     cx,ax
  mul     RandA      ; RandA - любое число, на твой вкус
  shl     cx,1
  shl     cx,1
  shl     cx,1
  add     ch,cl
  add     dx,cx
  add     dx,bx
  shl     bx,1
  shl     bx,1
  add     dx,bx
  add     dh,bl
  mov     cl,5
  shl     bx,cl
  add     dh,bl
  add     ax,1
  adc     dx,0
  mov     Rand1,ax
  mov     Rand2,dx
  mov     bx,sp                
  mov     cx,dx                
  mul     word ptr ss:[bx+4]    
  mov     ax,cx
  mov     cx,dx
  mul     word ptr ss:[bx+4]
  add     ax,cx
  adc     dx,0
  mov     ax,dx


Эта реализация целиком содрана из модуля CRT языка Паскаль. smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 6.05.2024 15:12
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name