Форум программистов, компьютерный форум, киберфорум
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
1 / 1 / 0
Регистрация: 27.10.2012
Сообщений: 81

Создать программу, которая переводит экран в графический режим

05.12.2012, 20:27. Показов 2143. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
"Создать программу, которая переводит экран в графический режим 13h (320x200), заселяет
его точками случайным образом, после чего эти точки эволюционируют согласно законам алгоритма
«Жизнь»: если у точки меньше двух или больше трех соседей, она погибает, а если у пустой позиции
есть три соседа, в ней появляется новая точка."

мой кодне работает)
помогите исправить пожалуйста)

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
;lifebios.asm 
;Игра "жизнь" на поле 320х240 исполбзующая вывод на экран средства BIOS
.model small
.stack 100h
.code
.386
.fardata? ;Сегмент инициализации данных
 db 320*200+1 dup(?) ;Содержит массив ячеек
 
 main:
  push FAR_BSS;Сегментный адрес буфера в дс 
  pop ds
;Заполнение массива ячеек псевдослучайными значениями 
xor ax,ax
int 1Ah            ;ф-ия АН=0 Int 1Ah:получить текущее
                   ;ДХ теперь содержит число секунд,прошелших 
                   ;с момента включения компьютера,
                   ;которое используется как начальное значение 
                   ;генератора случайных чисел
mov di,320*200+1   ;максимальный номер ячейки 
 fill_buffer:
imul dx,4E35h;Простой генератор случайных чисел
inc dx;из двух команд
mov ax,dx;Текущее случайное число копируется в АХ
shr ax,15;От него остаётся только один бит,
mov byte ptr [di],al;и в массив копируется 00,если ячейка
       ;пуста,и 01,если заселена
dec di;следующая ячейка
jnz fill_buffer;Продолжить цикл,если ДИ не стал равен нулю.
mov ax,0013h 
int 10h
;Основной цикл
new_cycle: 
;
;
mov di,320*200+1;
 
step_1:
mov al,byte ptr [di+1]
add al,byte ptr [di-1]
add al,byte ptr [di+319]
add al,byte ptr [di-319]
add al,byte ptr [di+320]
add al,byte ptr [di-320]
add al,byte ptr [di+321]
add al,byte ptr [di-321]
shl al,4  
 
or byte ptr [di],al
 
dec di
jnz step_1
 
 
mov di,320*200+1
flip_cycle:
mov al,byte ptr [di]
shr al,4
cmp al,3
je birth
cmp al,2
je f_c_continue
mov byte ptr [di],0
jmp short f_c_continue
birth:
mov byte ptr [di],1
f_c_continue:
and byte ptr [di],0Fh
dec di
jnz flip_cycle
 
mov si,320*200+1
mov cx,319
mov dx,199 
zdisplay:
mov al,byte ptr [si]
mov ah,0Ch
int 10h
dec si
dec cx 
jnz zdisplay 
mov cx,319
dec dx
jnz zdisplay 
mov ah,1
int 16h
jz  new_cycle
 
mov ax,0003h
int 10h 
mov ax,4C00h
int 21h
end main
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.12.2012, 20:27
Ответы с готовыми решениями:

В отладчике DEBUG составить и выполнить процедуру, которая устанавливает графический режим экрана
С помощью отладчика DEBUG составить и выполнить процедуру, которая устанавливает графический режим экрана со средней разрешающей...

Создать программу в Ассемблере, которая вводит и выводит строку на экран
Создать программу в Ассемблере,которая вводит и выводит строку на экран

Создать программу, которая переводит число из одной меры весов в другую
Надо с помощью компонентов лазаруса создать программу которая переводит число из одной меры весов в другую. Рекомендуемой формы для...

1
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
09.07.2013, 05:21
Цитата Сообщение от mixasnt Посмотреть сообщение
мой код не работает)
Программа передрана из классической книги Зубкова "Assembler для DOS, Windows и UNIX"
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
; masm dos exe #
; Игра "Жизнь" на поле 320x200, использующая вывод на экран средствами BIOS
.286
.model small
.stack  100h    ; явное задание стека - для EXE-программ
.code
start:  push    FAR_BSS ; сегментный адрес буфера в DS
    pop ds
; заполнение массива ячеек псевдослучайными значениями
    xor ax,ax
    int 1Ah     ; Функция AH = 0 INT 1Ah: получить текущее время
; DX теперь содержит число секунд, прошедших
; с момента включения компьютера, которое
; используется как начальное значение генератора
; случайных чисел
    mov di,320*200+1    ; максимальный номер ячейки
fill_buffer:
    imul    dx,4E35h    ; простой генератор случайных чисел
    inc dx      ; из двух команд
    mov ax,dx       ; текущее случайное число копируется в AX
    shr ax,15       ; от него оставляется только один бит,
    mov byte ptr [di],al    ; и в массив копируется 00, если ячейка
; пуста, и 01, если заселена
    dec di      ; следующая ячейка
    jnz fill_buffer ; продолжить цикл, если DI не стал равен нулю
    mov ax,0013h    ; графический режим 320x200, 256 цветов
    int 10h
; основной цикл
; Шаг 1: для каждой ячейки вычисляется число соседей и записывается в старшие 4 
; бита этой ячейки
new_cycle:mov   di,320*200+1    ; максимальный номер ячейки
step_1: mov al,byte ptr [di+1]  ; в AL вычисляется сумма 
    add al,byte ptr [di-1]  ; значений восьми соседних ячеек,
    add al,byte ptr [di+319]    ; при этом в младших четырех 
    add al,byte ptr [di-319]    ; битах накапливается число 
    add al,byte ptr [di+320]    ; соседей
    add al,byte ptr [di-320]
    add al,byte ptr [di+321]
    add al,byte ptr [di-321]
    shl al,4            ; теперь старшие четыре бита AL - число
                    ; соседей текущей ячейки
    or  byte ptr [di],al    ; поместить их в старшие четыре бита 
                    ; текущей ячейки
    dec di      ; следующая ячейка
    jnz step_1  ; продолжить цикл, если DI не стал равен нулю
; Шаг 2: изменение состояния ячеек в соответствии с полученными в шаге 1 
; значениями числа соседей
    mov di,320*200+1    ; максимальный номер ячейки
flip_cycle:mov  al,byte ptr [di]    ; считать ячейку из массива
    shr al,4            ; AL = число соседей
    cmp al,3            ; если число соседей = 3,
    je  birth           ; ячейка заселяется,
    cmp al,2            ; если число соседей = 2,
    je  f_c_continue    ; ячейка не изменяется,
    mov byte ptr [di],0 ; иначе - ячейка погибает
    jmp short f_c_continue
birth:  mov byte ptr [di],1
f_c_continue:and    byte ptr [di],0Fh   ; обнулить число соседей в старших битах 
                    ; ячейки
    dec di          ; следующая ячейка
    jnz flip_cycle
; Вывод массива на экран средствами BIOS
    mov si,320*200+1    ; максимальный номер ячейки
    mov cx,319      ; максимальный номер столбца
    mov dx,199      ; максимальный номер строки
zdisplay:mov    al,byte ptr [si] ; цвет точки (00 - черный, 01 - синий)
    mov ah,0Ch  ; номер видеофункции в AH
    int 10h     ; вывести точку на экран
    dec si      ; следующая ячейка
    dec cx      ; следующий номер столбца
    jns zdisplay    ; если столбцы не закончились - продолжить
    mov cx,319  ; иначе: снова максимальный номер столбца в CX
    dec dx      ; и следующий номер строки в DX
    jns zdisplay    ; если и строки закончились - выход из цикла
    mov ah,1        ; если не нажата клавиша
    int 16h
    jz  new_cycle   ; следующий шаг жизни
    mov ax,3    ; восстановить текстовый режим
    int 10h
    mov ah,4Ch  ; и завершить программу
    int 21h
.fardata?       ; сегмент дальних неинициализированных данных
    db  320*200+1 dup(?)    ; содержит массив ячеек
end start
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.07.2013, 05:21
Помогаю со студенческими работами здесь

Создать программу, которая переводит числа из десятичной системы счисления в двоичную
создать программу, которая переводит числа из десятичной системы счисления в двоичную

Вывести результат игры на экран (графический режим)
Есть игра...нужно в графическом режиме вывести в любую часть экрана переменную Score т.е. результат. Как ни запишу пишет ошибки...помогите...

Вывод результатов вычисления по формуле на экран (графический режим)
нужна помощь.необходимо подсчитать формулу (k-1)*((\sum_{k-1}^{i=1}t(i))/\sum_{k-1}^{i=1}(1/(N-i+1)))=\sum_{k-1}^{i=1}(N-i+1)*t(i)Нужно...

Создать программу, которая с помощью цикла выводила на экран все поля объектов на экран, любой глубины вложенности
3) Цикл for..in + вложенные объекты (рекурсия) Создать программу, которая с помощью цикла выводила на экран все поля объектов на экран,...

Напишите программу, которая переводит гривны в $
напишите программу, которая переводит гривны в $, DM c комментариями?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru