0 / 0 / 0
Регистрация: 10.06.2020
Сообщений: 7
1
emu8086

Нарисовать флаг Перу

17.04.2021, 17:25. Показов 1491. Ответов 4

Доброго времени суток. Я столкнулся с задачей: 1. Написать программу на Ассемблере в соответствии с заданием (флаг Перу).
2. В каждом задании предлагается ввести данные для вывода информации (пользователь вводит координаты левого верхнего угла и размеры флага, а также название страны).
Всё бы ничего, но я вот ищу по всему инету и нахожу отрывки в основном горизонтальных полос на флагах, либо извращённые интерпретации других флагов, в моём же случае нужны 3 вертикальных полосы в соответствии с размерами, введёнными пользователем. Помогите пожалуйста....
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.04.2021, 17:25
Ответы с готовыми решениями:

Нарисовать флаг Японии
Ребята нужна помощь студенту, мне нужно сделать "японский флаг" в програме Assembler emu8086

Нарисовать флаг России
Сделайте пожалуйста с комментариями, буду очень благодарен

Нарисовать флаг Люксембурга
Всем привет! Не хочу показаться наглым,но очень нужна помощь в написании программы на ассемблере....

Нарисовать Флаг Украины
Здравствуйте, нужно нарисовать флаг Украины на асемблере через TASM. Спасибо.

4
263 / 182 / 87
Регистрация: 03.05.2020
Сообщений: 790
17.04.2021, 17:45 2
"В центре правительственного флага помещено изображение герба Перу."
Вы не из правительства?
и на каком асме это делать?
0
617 / 287 / 165
Регистрация: 10.11.2019
Сообщений: 580
17.04.2021, 19:51 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
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
; флаг Перу
 
    .model tiny
    .code
    org 100h
start:  jmp beg
x0  dw 20 ; координаты верхнего левого угла флага
y0  dw 20 
x   dw 0
y   dw 0
siz dw 50 ; размер 150*100
 
sign    db 0         ; флаг "знак числа"
crlf    db 13,10,"$"
 
; вывод текста
echo macro txt
     local m1,m2
     jmp short m2
m1   db txt
     db "$"
m2:  push ax
     push dx
     mov dx,offset m1
     mov ah,9
     int 21h
     pop dx
     pop ax
     endm
 
; ввод строки в переменную buf длиной buflen
input   macro buf,buflen
     local m1
     jmp short m1
buf  db buflen+1
     db 0
     db buflen+1 dup (0)
m1:  mov dx,offset buf ; ввод строки
     mov ah,0Ah
     int 21h
     endm
 
; печать перевод строки
newline: mov dx,offset crlf
    mov ah,9
    int 21h
    ret
 
; это цифра ? да нет
isdigit: cmp bl,"0"
     jc notdigit
     cmp  bl,"9"+1
     jnc notdigit
     clc
     ret
notdigit:stc
     ret
 
; преобразование строки в число AX со знаком
readval:
     mov sign,0
     inc     si
     lodsb
     mov cl,al
     mov ch,0
     mov     ax,0
     jcxz m3
m0:  mov     bl,ds:[si]
     inc     si
     cmp bl,"-"
     jnz m2
     mov sign,1
     jmp m1
m2:  call    isdigit   ; это цифра ?
     jc      m1
     sub bl,"0"        ; да
     mov bh,0
     mov     di,10     ; dx:ax=ax*10+bx
     mul     di
     add     ax,bx
m1:  loop    m0
     cmp sign,0
     jz m3
     neg ax
m3:  ret
 
; вывод точки
; x=cx, y=dx, color=al
pset:   push cx
    push dx
    push di
    push es
    cmp cx,320 ; координаты выходят за границы экрана ?
    jnc pl1
    cmp dx,200
    jnc pl1
    push ax
    mov ax,320 ; di=320*y+x
    mul dx
    add ax,cx
    mov di,ax
    mov ax,0A000h
    mov es,ax
    pop ax
    mov es:[di],al ; выводим точку
pl1:    pop es
    pop di
    pop dx
    pop cx
    ret
 
beg:    push cs
    pop  ds
    echo "x0=" ; ввод аргументов
    call inpstring
    mov x0,ax
    echo "y0="
    call inpstring
    mov y0,ax
    echo "size="
    call inpstring
    mov siz,ax
 
    mov ax,siz ; установка six>=10 and siz<=100
    cmp ax,10
    jge v1
    mov ax,10
v1: cmp ax,100
    jle v2
    mov ax,100
v2: mov siz,ax
 
 
    mov ax,13h ; переход в граф режим 320*2300*256
    int 10h
    mov cx,siz ; высота флага=2*siz
    add cx,cx
    mov ax,y0
    mov y,ax
nlin:   push cx
    mov dx,y
    mov cx,x0
    mov x,cx
    mov cx,siz ; гориз. линии
horlin1:push cx
    mov cx,x
    mov al,12 ; красный
    call pset
    inc x
    pop cx
    loop horlin1
 
    mov cx,siz
horlin2:push cx
    mov cx,x
    mov al,15 ; белый
    call pset
    inc x
    pop cx
    loop horlin2
 
    mov cx,siz
horlin3:push cx
    mov cx,x
    mov al,12 ; красный
    call pset
    inc x
    pop cx
    loop horlin3
    inc y     ; след гориз линия
    pop cx
    loop nlin ; конец цикла линий
 
    mov ah,0  ; ожидание нажатия на клавишу
    int 16h
    mov ax,3
    int 10h
    mov ax,4c00h ; выход в Dos
    int 21h
inpstring:input strbuf,6 ; ввод числа в ax
    call newline
    mov si,offset strbuf
    call readval
    ret
    
    end start
1
0 / 0 / 0
Регистрация: 10.06.2020
Сообщений: 7
17.04.2021, 23:36  [ТС] 4
Мы пишем в Emu8086, а в плане графики на ассемблере я ноль(
0
617 / 287 / 165
Регистрация: 10.11.2019
Сообщений: 580
18.04.2021, 12:41 5
Лучший ответ Сообщение было отмечено DenisTarelko как решение

Решение

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
166
167
168
169
170
171
172
; флаг Перу в текстовом режиме
; emu8086 исходник
    org 100h
start:  jmp beg
x0  dw 4 ; координаты верхнего левого угла флага
y0  dw 4
x   dw 0
y   dw 0
siz dw 5
 
sign    db 0         ; флаг "знак числа"
crlf    db 13,10,"$"
 
; вывод текста
echo macro txt
     local m1,m2
     jmp short m2
m1   db txt
     db "$"
m2:  push ax
     push dx
     mov dx,offset m1
     mov ah,9
     int 21h
     pop dx
     pop ax
     endm
 
; печать перевод строки
newline: mov dx,offset crlf
    mov ah,9
    int 21h
    ret
 
; это цифра ? да нет
isdigit: cmp bl,"0"
     jc notdigit
     cmp  bl,"9"+1
     jnc notdigit
     clc
     ret
notdigit:stc
     ret
 
; преобразование строки в число AX со знаком
readval:
     mov sign,0
     inc     si
     lodsb
     mov cl,al
     mov ch,0
     mov     ax,0
     jcxz m3
m0:  mov     bl,ds:[si]
     inc     si
     cmp bl,"-"
     jnz m2
     mov sign,1
     jmp m1
m2:  call    isdigit   ; это цифра ?
     jc      m1
     sub bl,"0"        ; да
     mov bh,0
     mov     di,10     ; dx:ax=ax*10+bx
     mul     di
     add     ax,bx
m1:  loop    m0
     cmp sign,0
     jz m3
     neg ax
m3:  ret
 
; вывод точки
; x=cx, y=dx, color=al
pset:   push ax
    push bx
    push cx
    push dx
    cmp cx,80 ; координаты выходят за границы экрана ?
    jnc pl1
    cmp dx,25
    jnc pl1
    mov dh,dl ; установить курсор
    mov dl,cl
    mov ah,2
    mov bh,0
    int 10h 
    mov bh,0
    mov bl,al ; цвет    
    mov ah,9
    mov al,"#"; печатаемый символ
    mov cx,1 ; печатать 1 символ
    int 10h
pl1:    pop dx
    pop cx
    pop bx
    pop ax
    ret
 
beg:push cs
    pop  ds
 
    echo "x0=" ; ввод аргументов
    call inpstring
    mov x0,ax
    echo "y0="
    call inpstring
    mov y0,ax
    echo "size="
    call inpstring
    mov siz,ax
 
skip:   mov ax,3
    int 10h
    mov cx,siz ; высота флага
    mov ax,y0
    mov y,ax
nlin:   push cx
    mov dx,y
    mov cx,x0
    mov x,cx
    mov cx,siz ; гориз. линии
horlin1:push cx
    mov cx,x
    mov al,12 ; красный
    call pset
    inc x
    pop cx
    loop horlin1
 
    mov cx,siz
horlin2:push cx
    mov cx,x
    mov al,15 ; белый
    call pset
    inc x
    pop cx
    loop horlin2
 
    mov cx,siz
horlin3:push cx
    mov cx,x
    mov al,12 ; красный
    call pset
    inc x
    pop cx
    loop horlin3
    inc y     ; след гориз линия
    pop cx
    loop nlin ; конец цикла линий
 
    mov ah,0  ; ожидание нажатия на клавишу
    int 16h
    mov ax,3
    int 10h
    mov ax,4c00h ; выход в Dos
    int 21h
buflen=6
inpstring:
     jmp in1
buf  db buflen+1
     db 0
     db buflen+1 dup (0)
in1: lea dx,buf ; ввод строки
     mov ah,0Ah
     int 21h
    call newline
    lea si,buf
    call readval
    ret
    
    end start
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.04.2021, 12:41
Помогаю со студенческими работами здесь

Нарисовать флаг Иордании
Люди, помогите, пожалуйста, нужно в нарисовать флаг иордании, перерыл всё, нигде ничего нет....

Нарисовать флаг Ямайки
Помогите, пожалуйста, реализовать программу, рисующую флаг Ямайки. Или подскажите как разделить его...

Нарисовать флаг России
просьба помочь написать флаг России в assembler. Просто сам в assembler пока что мало чего понимаю

[emu8086] Нарисовать флаг Уругвая
Нам дали задание нарисовать посредством графического режима в ассемблере (emu8086) нарисовать флаг...

Нарисовать флаг Центральной Африканской Республики
Нужен графический флаг &quot;Центральной Африканской Республики&quot; .... Препод дикий уже 3 прогу просит...

Нужно нарисовать флаг, и сделать проверку на то, чтобы при вводе числа 0 - программа закрывалась
Прошу помощи =) Нужно нарисовать флаг, и сделать проверку на то, чтобы при вводе числа 0 -...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru