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

Программа которая рисует на экране случайное число прямоугольников

23.04.2012, 22:22. Показов 2838. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, пожалуйста помогите запустить программу в emu8086
Программа которая рисует на экране случайное число прямоугольников случайного размера и случайного цвета . (Псевдографика)
при компиляции жалуется на 1 строчку .286 в чем проблема скажите пожалуйста?
вот код

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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
.286
C_SEG SEGMENT   PARA 'CODE'
ORG 100H
ASSUME CS:C_SEG, DS:C_SEG, SS:C_SEG
START:          JMP GO
 
GO:
            mov ax,0b800h;установка es на видеопамять
            push ax
            pop es              
 
            push cs
            pop ds
 
            push cs
            pop ss
;-----------------------
;Видеорежим с цветными символами
mov ah,0;
mov al,03h;
int 10h;
call rr
 
ex:
 
;Quit from program  
            mov ah,4ch
            int 21h
;------------------------------------------
rr proc near
call random
and ax,0ffh;
mov cx,ax
l1:
push cx
call randrect
pop cx
loop l1
ret
rr endp
 
randrect proc near
; y
call random;
and ax,01111b
push ax
 
; x
call random;
and ax,0111111b
push ax
 
; sy
call random;
and ax,01111b
inc ax
push ax
 
; sx
call random;
and ax,01111b
inc ax
push ax
 
; c
call random;
and ax,01111b
push ax
 
;mov dx,5;
call rect
add sp,10
 
ret
randrect endp
 
rect proc near
    push bp
 
    mov bp,sp
    x equ [bp+12]
    y equ [bp+10]
    sx equ [bp+8]
    sy equ [bp+6]
    c equ [bp+4]
    
    mov cx,sy
    loop1:
        push cx
        mov dx,cx
        mov cx,sx
        loop2:
            push dx
            mov ax,x
            add ax,cx
            push ax
            mov ax,y
            add ax,dx
            push ax
            mov dx,c
            call point
            pop ax
            pop ax
            pop dx
        loop loop2
        pop cx
    loop loop1
 
    pop bp
    ret
rect endp
 
point proc near
    push bp
    mov bp,sp
    x equ [bp+4]
    y equ [bp+6]
    mov ax,y
    shl ax,2
    add ax,y
    shl ax,4
    add ax,x
    shl ax,1
    mov si,ax
    mov bl,219
    mov es:[si],bl
    inc si
    mov es:[si],dl
    pop bp
    ret
point endp
 
random proc near
 
  mov ax,rnum
  or ax,ax
  jns getnext
 
  push ds
  mov ax,040h
  push ax
  pop ds
  mov ax,ds:[006ch]
  pop ds
getnext: mul word ptr rconst
  xor dx,dx
  div word ptr rrange
  mov ax,dx
  mov rnum,dx
  xor dx,dx
  div word ptr rmrange
  mov ax,dx
  ret
random endp
 
rnum dw -1; для инициализации генератора
rconst dw 16807 
rrange dw 7fffh
rmrange dw 0ffffh;0-max
 
C_SEG ENDS
END START
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.04.2012, 22:22
Ответы с готовыми решениями:

Программа, которая должна выводить случайное число
Написал программку, которая должна выводить случайное число. Но сколько раз я не запускал...

Написать программу, которая с помощью процедуры рисует 5 прямоугольников из *
Написать программу, которая с помощью процедуры рисует 5 прямоугольников из * Пожалуйста:(

Написать программу, которая рисует на экране паровоз
Написать программу, которая рисует на экране паровоз. Pascal ABC/Turbo Pascal

Написать программу, которая рисует на экране решётку.
Написать программу, которая рисует на экране решётку.

10
Клюг
7675 / 3190 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
23.04.2012, 23:52 2
Assembler
1
2
3
4
5
6
7
    .model  tiny
    .286
;C_SEG SEGMENT   PARA 'CODE'
    .stack  100
    .code
    ORG 100H
;ASSUME CS:C_SEG, DS:C_SEG, SS:C_SEG
в конце убрать строчку
C_SEG ENDS
0
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 7
24.04.2012, 01:32  [ТС] 3
все равно компилируется с ошибкой во 2 строке .286 - not supported
0
116 / 136 / 0
Регистрация: 15.04.2012
Сообщений: 1,031
24.04.2012, 07:04 4
Значит твой процессор не поддерживает комманды 286 процессора.
0
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 7
24.04.2012, 09:32  [ТС] 5
и что мне тогда делать?
0
155 / 125 / 3
Регистрация: 22.06.2011
Сообщений: 1,784
24.04.2012, 09:37 6
maskitoz, непонятно что за комп должен быть чтоб .286 не поддерживать. Скорее всего дело в другом!
0
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 7
24.04.2012, 10:15  [ТС] 7
Программа то хоть правильно написана? У вас она запускается? В чем же дело тогда?
0
116 / 136 / 0
Регистрация: 15.04.2012
Сообщений: 1,031
24.04.2012, 10:22 8
Укажи директиву .model во второй строке и перед org поставь точку.
0
Клюг
7675 / 3190 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
24.04.2012, 10:27 9
maskitoz, Ъ, это тасм или масм? На тасме транслируется и запускается, рисует шедевр Малевича.
0
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 7
24.04.2012, 11:24  [ТС] 10
Charles Kludge,
я только начинаю ассемблер изучать, и не знаю тасм или масм, мне сказали пока работать с emu8086.

Добавлено через 3 минуты
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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
.model  tiny
    .model
;C_SEG SEGMENT   PARA 'CODE'
    .stack  100
    .code
    .ORG 100H
;ASSUME CS:C_SEG, DS:C_SEG, SS:C_SEG
 
START:          JMP GO
 
GO:
            mov ax,0b800h;установка es на видеопамять
            push ax
            pop es              
 
            push cs
            pop ds
 
            push cs
            pop ss
;-----------------------
;Видеорежим с цветными символами
mov ah,0;
mov al,03h;
int 10h;
call rr
 
ex:
 
;Quit from program  
            mov ah,4ch
            int 21h
;------------------------------------------
rr proc near
call random
and ax,0ffh;
mov cx,ax
l1:
push cx
call randrect
pop cx
loop l1
ret
rr endp
 
randrect proc near
; y
call random;
and ax,01111b
push ax
 
; x
call random;
and ax,0111111b
push ax
 
; sy
call random;
and ax,01111b
inc ax
push ax
 
; sx
call random;
and ax,01111b
inc ax
push ax
 
; c
call random;
and ax,01111b
push ax
 
;mov dx,5;
call rect
add sp,10
 
ret
randrect endp
 
rect proc near
    push bp
 
    mov bp,sp
    x equ [bp+12]
    y equ [bp+10]
    sx equ [bp+8]
    sy equ [bp+6]
    c equ [bp+4]
    
    mov cx,sy
    loop1:
        push cx
        mov dx,cx
        mov cx,sx
        loop2:
            push dx
            mov ax,x
            add ax,cx
            push ax
            mov ax,y
            add ax,dx
            push ax
            mov dx,c
            call point
            pop ax
            pop ax
            pop dx
        loop loop2
        pop cx
    loop loop1
 
    pop bp
    ret
rect endp
 
point proc near
    push bp
    mov bp,sp
    x equ [bp+4]
    y equ [bp+6]
    mov ax,y
    shl ax,2
    add ax,y
    shl ax,4
    add ax,x
    shl ax,1
    mov si,ax
    mov bl,219
    mov es:[si],bl
    inc si
    mov es:[si],dl
    pop bp
    ret
point endp
 
random proc near
 
  mov ax,rnum
  or ax,ax
  jns getnext
 
  push ds
  mov ax,040h
  push ax
  pop ds
  mov ax,ds:[006ch]
  pop ds
getnext: mul word ptr rconst
  xor dx,dx
  div word ptr rrange
  mov ax,dx
  mov rnum,dx
  xor dx,dx
  div word ptr rmrange
  mov ax,dx
  ret
random endp
 
rnum dw -1; для инициализации генератора
rconst dw 16807 
rrange dw 7fffh
rmrange dw 0ffffh;0-max
 
END START
запускаю, теперь компилируется при работе вылетает черный экран, но прямоугольников так и нет =(
0
Клюг
7675 / 3190 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
24.04.2012, 11:32 11
maskitoz, ну дык и смотрите в отладчике со стр.122, куда указывает ES:SI и что за аттрибут в DL.
0
24.04.2012, 11:32
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.04.2012, 11:32
Помогаю со студенческими работами здесь

Написать программу, которая рисует на экране трактор
Написать программу, которая рисует на экране трактор

Написать программу, которая рисует на экране шестиугольник
Ребята помогите с этим заданием, до этого не делал такие. Написать программу, которая рисует на...

Написать процедуру, которая рисует на экране кольцо
помогите с написанием программы!! нужно Написать процедуру, которая рисует на экране кольцо....

Написать программу, которая рисует на экране грустную рожицу
Написать программу, которая рисует на экране грустную рожицу.


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Как работать с ветками (branch) в Git
InfoMaster 17.01.2025
Система контроля версий Git произвела революцию в процессе разработки программного обеспечения, предоставив разработчикам мощный инструмент для управления изменениями в коде. Одной из наиболее важных. . .
Как откатить последние коммиты в Git
InfoMaster 17.01.2025
Система контроля версий Git стала неотъемлемой частью современной разработки программного обеспечения, предоставляя разработчикам мощные инструменты для управления изменениями в коде. Одним из. . .
Что такое boilerplate и scaffold, чем они отличаются
InfoMaster 17.01.2025
В современном мире разработки программного обеспечения эффективность и скорость создания качественного кода играют crucial роль в успехе проектов. Разработчики постоянно ищут способы оптимизировать. . .
Чем отличаются ссылки и указатели в С++
InfoMaster 17.01.2025
В современном программировании на C++ эффективная работа с памятью является ключевым аспектом разработки качественного программного обеспечения. Указатели и ссылки представляют собой два. . .
В чем разница между PUT и POST
InfoMaster 17.01.2025
В современной веб-разработке правильное использование HTTP-методов играет ключевую роль в создании надежных и эффективных API-интерфейсов. Протокол HTTP прошел долгий путь развития с момента своего. . .
DTO, POCO и Value Object: что это такое, когда и как использовать
InfoMaster 17.01.2025
Введение в паттерны передачи данных В современной разработке программного обеспечения эффективное управление данными и их передача между различными слоями приложения являются ключевыми аспектами. . .
Что такое pull request в Git
InfoMaster 17.01.2025
В современной разработке программного обеспечения pull request в Git представляет собой ключевой механизм для эффективного взаимодействия между разработчиками при работе над общим кодом проекта. По. . .
Как вернуться к предыдущему коммиту в Git
InfoMaster 17.01.2025
Система контроля версий Git представляет собой мощный инструмент для управления изменениями в программном коде, который позволяет разработчикам эффективно отслеживать и контролировать историю. . .
Что такое паттерны программировани­я и проектирования
InfoMaster 17.01.2025
Роль паттернов в современной разработке программного обеспечения В современном мире разработки программного обеспечения паттерны проектирования стали неотъемлемой частью профессионального подхода. . .
Как добавить конструктор Яндекс Карт на сайт
InfoMaster 17.01.2025
Введение в API Яндекс Карт В современной веб-разработке интеграция картографических сервисов стала неотъемлемой частью многих проектов. API Яндекс Карт представляет собой мощный инструмент для. . .
Что такое javascript:void­­(0) и зачем это нужно
InfoMaster 17.01.2025
Когда вы сталкиваетесь с веб-разработкой, особенно с использованием JavaScript, одной из директив, которая часто встречается, является javascript:void(0). Это выражение вызывает интерес из-за своей. . .
Что такое оркестрация и хореография микросервисов
InfoMaster 17.01.2025
Введение в оркестрацию и хореографию микросервисов В современном мире разработки программного обеспечения микросервисная архитектура стала ключевым подходом к созданию масштабируемых и гибких. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru