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





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

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


Ну вот, что то такое соорудил ;)
Большое всем спасибо за дельные советы :D
Публикую пример, может кому пригодится:

.model tiny
.code  
org 100h
start:
mov ax, 0013h
int 10h
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

mov si, 16000 ;ну приблезительно при таком значении полностью закрашивается почти всегда
ats:
push bx
push cx
push dx
; генератор случ. чисел с проверкой диапазона
rn1:                         ;координата столбца
xor ax,ax
out 43h,al
in al,40h
cmp al,64 ; число не менее
jl rn1
cmp al,78 ; число не более
jg rn1
mov byte ptr[rnd1],al

rn2:                         ;координата строки
xor ax,ax
out 43h,al
in al,40h
cmp al,102
jl rn2
cmp al,120
jg rn2
mov byte ptr[rnd2],al

pop dx
pop cx
pop bx

mov cx,rnd1
mov dx,rnd2
mov al, 00000000b
mov ah, 0Ch
int 10h
int 1Ah
dec si
jnz ats

mov ah, 01h
int 21h

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
rnd1 dw ?
rnd2 dw ?
end start
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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


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

 





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