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

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

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

 
 Ответить  Открыть новую тему 
> вывод рамки, упрощение кода
сообщение
Сообщение #1


?
***

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

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


Добрый день! делаю лабу и в ней нужно вывести рамку с надписями, я написал часть (2 часть анолагичная первой ток с другим названием и распаложена ниже). Дак вот посмотрел предидущий топик , там рамка попроще написана. Хотелось бы узнать как уменьшить мой код.
ЗЫ лекций небыло пока, делаю с методой и учебником(но без результата)
ЗЫ2 програма ждет нажатия символа и завершается ее работа.


.MODEL SMALL
.STACK 100h
.DATA
	mes db 'laba 2 SP','$'
.CODE
metka:
	mov	ax,@data
	mov	ds,ax
	;очистка екрана
	mov  AH,0
	mov  AL,1
	int 10H 
	;прорисовка уголка рамки 
	mov ah,09
	mov al,201
	mov bh,0
	mov bl,00011111b
	mov cx,1
	int 10h
	;передвижение курсора на 1 позицию вперед
	mov ah, 2
	mov bh,0
	mov dh,0
	mov dl,1
	int 10h
	;прорисовка линии
	mov ah,09
	mov al,205
	mov bh,0
	mov bl,00011111b
	mov cx,30
	int 10h
	;передвижение курсора на конец линии
	mov ah, 2
	mov bh,0
	mov dh,0
	mov dl,31
	int 10h
	;прорисовка уголка рамки 
	mov ah,09
	mov al,187
	mov bh,0
	mov bl,00011111b
	mov cx,1
	int 10h
	;передвижение курсора на новуюю линию
	mov ah,2
	mov bh,0
	mov dh,1
	mov dl,0
	int 10h
	;прорисовка колонки 
	mov ah,09
	mov al,186
	mov bh,0
	mov bl,00011111b
	mov cx,1
	int 10h
	;передвижение курсора на начало надписи
	mov ah,2
	mov bh,0
	mov dh,1
	mov dl,10
	int 10h
	;прорисовка надписи
	mov ah,09
	mov dx,offset mes
	int 21h
	;передвижение курсора на конец линии
	mov ah, 2
	mov bh,0
	mov dh,1
	mov dl,31
	int 10h
	;прорисовка колонки 
	mov ah,09
	mov al,186
	mov bh,0
	mov bl,00011111b
	mov cx,1
	int 10h
	;передвижение курсора на новуюю линию
	mov ah,2
	mov bh,0
	mov dh,2
	mov dl,0
	int 10h
	;прорисовка колонки 
	mov ah,09
	mov al,204
	mov bh,0
	mov bl,00011000b
	mov cx,1
	int 10h
	;передвижение курсора на 1 позицию вперед
	mov ah,2
	mov bh,0
	mov dh,2
	mov dl,1
	int 10h
	;прорисовка линии
	mov ah,09
	mov al,205
	mov bh,0
	mov bl,00011000b
	mov cx,30
	int 10h
	;передвижение курсора на коннец строки
	mov ah,2
	mov bh,0
	mov dh,2
	mov dl,31
	int 10h
	;прорисовка колонки 
	mov ah,09
	mov al,185
	mov bh,0
	mov bl,00011000b
	mov cx,1
	int 10h
	
	mov ah,10h
	int 16h
	
	mov ah,4ch
	int 21h
END metka;

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Профи
****

Группа: Пользователи
Сообщений: 865
Пол: Мужской
Реальное имя: Вячеслав

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


сделай вывод параллельных сторон в цикле, т.е. верх и низ в одном цикле, левую и правую в другом.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






Цитата
Хотелось бы узнать как уменьшить мой код.
Пишешь макрос (или процедуру, тут зависит от уровня владения ассемблером), выводящий символ, и 2 макроса, выводящих последовательность символов (вертикальную и горизонтальную линии). Тогда отрисовать рамку можно в 8 строк.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


?
***

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

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


Цитата
или процедуру, тут зависит от уровня владения ассемблером

увы, они пока маленькие. с макросами еще не работал

Сообщение отредактировано: amega -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


?
***

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

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


Цитата
Тогда отрисовать рамку можно в 8 строк.

можеш показать как, а то невиходит ни как
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






Наконец-то добрался до своего компьютера, где установлен ASM... Вот это я имел в виду под использованием макросов:
.MODEL SMALL
.STACK 100h
.DATA
	mes db 'laba 2 SP','$'
	
out_ch macro X
	push cx
		mov ah, 09h
		mov al, X
		mov bh, 0
		mov bl, 00011111b
		mov cx, 1
		int 10h
	pop cx
endm
vert_line macro X, sX, sY, L
local loop_1
	mov cx, L
	mov dh, sY
loop_1:
	mov ah, 02h
	mov bh, 0
	mov dl, sX
	int 10h
	out_ch X
	inc dh
	loop loop_1
endm
horz_line macro X, sX, sY, L
local loop_2
	mov cx, L
	mov dl, sX
loop_2:
	mov ah, 02h
	mov bh, 0
	mov dh, sY
	int 10h
	out_ch X
	inc dl
	loop loop_2
endm

.CODE
metka:
	mov	ax, @data
	mov	ds, ax
	
	; очистка экрана
	mov ah, 0
	mov al, 1
	int 10h 
	
	
	; прорисовка уголка рамки (левый верхний)
	horz_line 201, 0, 0, 1		;
	; прорисовка верхней границы рамки
	horz_line 205, 1, 0, 30	;
	; прорисовка уголка рамки (правый верхний)
	horz_line 187, 31, 0, 1	;
	; прорисовка левой границы рамки
	vert_line 186, 0, 1, 1
	; прорисовка правой границы рамки
	vert_line 186, 31, 1, 1	;
	; прорисовка угла (левый нижний)
	horz_line 204, 0, 2, 1		;
	; прорисовка нижней границы рамки
	horz_line 205, 1, 2, 30
	; прорисовка угла (правый нижний)
	horz_line 185, 31, 2, 1
	
	; передвижение курсора на начало надписи
	mov ah, 2
	mov bh, 0
	mov dh, 1
	mov dl, 10
	int 10h
	; прорисовка надписи
	mov ah, 09h
	mov dx, offset mes
	int 21h	
	mov ah, 10h
	int 16h
	
	mov ah, 4ch
	int 21h
END metka
Что удобнее, каждый раз делать все вручную или пользоваться подобными средствами - решать тебе...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


?
***

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

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


огромное спасибо
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






Levitra Bayer Comprar
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Гость






Levitra Sus Efectos Secundarios
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Гость






Amoxil Clav Tablets
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Гость






Acheter Kamagra Site Fiable
 К началу страницы 
+ Ответить 

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

 



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