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

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

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

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


Новичок
*

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

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


Привет! Помогите с программой нужно написать программу которая выводит рамку с псевдокодом в левом нижнем углу.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






А теперь, если можно. еще раз, только более доходчиво: что должно отображаться на экране? Рамка с каким псевдокодом? Ну, и про компилятор сразу: чем пользуешься? MASM/TASM/FASM/NASM/что-то еще?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






компилятор Tasm. Программа должна выводить пустую рамку в левом нижнем углу.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Например, вот так:
data segment

size_X dw 40
size_Y dw 10

data ends

code segment
assume cs: code, ds: data

DrawFrame proc
push es
mov ax, 0b800h
mov es, ax ; Начало видеопамяти

push ax
push bx
push dx
mov al, dh
mov bl, 160
mul bl
mov di, ax
xor dh, dh
add di, dx
pop dx
pop bx
pop ax

push di ; в DI - смещение для символа, расположенного
; по координатам DH:DL
mov ah, 7 ; В AH - атрибуты цвета (серый на черном)
mov al, 201 ; Верхний левый угол...
stosw ; Заносим два байта (атрибут/символ)

mov al, 205 ; Верхняя линия
mov cx, size_X ; Ширина рамки
rep stosw

mov al, 187 ; Верхний правый угол
stosw

pop di
add di, 160 ; Переходим на следующий ряд

mov cx, size_Y ; CX - высота окна
next:
push cx
push di

mov al, 186 ; Левая рамка
stosw

mov al, 32 ; 32 = пробел
mov cx, size_X ; Внутри окно заполняем пробелами
rep stosw

mov al, 186 ; Правая рамка
stosw

pop di
add di, 160 ; Переходим на следующий ряд
pop cx
loop next

; Все, что осталось сделать - отрисовать нижнюю границу рамки
mov al, 200
stosw
mov al, 205
mov cx, size_X
rep stosw
mov al, 188
stosw

pop es ; Восстановим ES
ret ; И выходим
DrawFrame endp

start:
mov ax, data
mov ds, ax

mov dh, 12 ; начинаем с 12 строки
mov dl, 0 ; (нулевой столбец)

call DrawFrame
mov ax, 4C00h
int 21h
code ends
end start
 К началу страницы 
+ Ответить 

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

 





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