![]() |
|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 03.02.2010
Сообщений: 4
|
![]()
Добрый вечер.
Есть программа котьорая выводит на экран "Тарас", постепенно увеличивая и уменьшая надпись. Нужно переделать код так чтобы буквы выводились с помощью макросов Вот предположительно как должен работать макрос ![]() Он доллжен создавать некую матрицу. Сама программа уже неоднократно переделывалась, преподаватель давал много разных заданий, но ему не угодить. Мне очень нужно так как это зачет, а сессия официально уже закончилась. Во вложении экзе фаил и фаил асм. |
![]() |
![]() |
![]() |
#2 |
Регистрация: 03.02.2010
Сообщений: 4
|
![]()
Вот непосредственно сам код программы.
.model small .data ;закодированное изображение txt db 1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0 ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 db 1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0 ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 db 0,0,0,0,1,1,0,0,0,0,0,0,0,0,1,1,1,1 ,1,0,0,0,0,1,1,0,0,1,1,1,0,0,0,0,0, 0,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,0 db 0,0,0,0,1,1,0,0,0,0,0,0,0,1,1,1,1,1 ,1,1,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0, 1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1 db 0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0 ,1,1,0,0,0,1,1,1,0,0,0,1,1,1,0,0,0, 0,0,0,0,0,1,1,0,0,0,0,1,1,0,0,0,0,0 db 0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0 ,1,1,0,0,0,1,1,0,0,0,0,0,1,1,0,0,0, 0,0,0,0,0,1,1,0,0,0,1,1,0,0,0,0,0,0 db 0,0,0,0,1,1,0,0,0,0,0,0,0,0,1,1,1,1 ,1,1,0,0,0,1,1,0,0,0,0,0,1,1,0,0,0, 0,1,1,1,1,1,1,0,0,0,1,1,0,0,0,0,0,0 db 0,0,0,0,1,1,0,0,0,0,0,0,0,1,1,0,0,0 ,1,1,0,0,0,1,1,0,0,0,0,0,1,1,0,0,0, 1,1,0,0,0,1,1,0,0,0,1,1,0,0,0,0,0,0 db 0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0 ,1,1,0,0,0,1,1,0,0,0,0,0,1,1,0,0,1, 1,0,0,0,0,1,1,0,0,0,1,1,0,0,0,0,0,0 db 0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,1 ,1,1,0,0,0,1,1,1,0,0,0,1,1,0,0,0,1, 1,0,0,0,1,1,1,0,0,0,0,1,1,0,0,0,0,0 db 0,0,0,0,1,1,0,0,0,0,0,0,1,1,1,1,1,1 ,1,1,1,1,0,1,1,1,1,1,1,1,1,0,0,0,1, 1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1 db 0,0,0,0,1,1,0,0,0,0,0,0,0,1,1,1,1,0 ,0,1,1,1,0,1,1,0,1,1,1,1,0,0,0,0,0, 1,1,1,1,0,0,1,1,1,0,0,0,0,1,1,1,1,0 db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ksize equ $-txt ;размер изображения tcx dw ? ;временно хранится х .stack 256 .code start: mov ax,@data ;инициализируем сегментные регистры mov ds,ax mov ax,0a000h mov es,ax mov ax,0013h int 10h ;устанавливаем видеорежим 320*240*256 цветов mov cx,32000 ;очищаем экран xor ax,ax xor di,di rep stosw mov bx,1 ;коэффициент масштабирования m2: call scaled_text;выволим картинку с заданным масштабом inc bx ;увеличиваем масштаб in al,60h ;читаем из порта клавиатуры cmp al,1 ;если нажата ESC, то выход jz ex call waitp ;задержка cmp bx,7 ;достигли максимального масштаба jnz m2 ;если нет, продолжаем dec bx ;корректируем масштаб m3: mov cx,32000 ;очищаем экран xor ax,ax xor di,di rep stosw call scaled_text;выволим картинку с заданным масштабом dec bx ;увеличиваем масштаб in al,60h ;читаем из порта клавиатуры cmp al,1 ;если нажата ESC, то выход jz ex call waitp ;ожидание cmp bx,0 ;достигли минимального масштаба? jnz m3 ;если нет, продолжаем inc bx ;корректируем масштаб jmp m2 ;начинаем сначала ex: mov ax,4c00h ;выход из программы int 21h waitp: push cx ;подпрограмма задержки выполнения программы push dx mov dx,1000 ;Поскольку у меня не работает функция 86h int 16h(задержка) ;то будем приостанавливать программу при помощи циклов ожидания llp1: xor cx,cx llp: loop llp ;внутренний цикл ожидания dec dx jnz llp1 ;внешни цикл ожидания pop dx pop cx ret scaled_text: ;вывод в центре экрана отмасштабированой картинки. bx - масштаб xor di,di ;счетчис столбца картинки mov si,offset txt;начало картинки mov ax,53 ;длина строки картинки mul bx ;умножаем масштаб на длину строки mov cx,320 sub cx,ax shr cx,1 ;получаем коорд левого угла отмасштабир картинки, выводивой в центр экрана mov tcx,cx ;сохраняем сх mov ax,14 mul bx mov dx,200 sub dx,ax shr dx,1 ;получаем коорд верхнего угла отмасштабир картинки, выводивой в центр экрана lp: cmp si,offset txt+ksize; проверяем достигли ли конца картинки jz skip ;если достигли, то заканчиваем вывод lodsb ;берем байт(пиксель) из картинки inc di ;увеличиваем счетчик столбцов call scaled_pixel;выводим отмасштабированый пиксель add cx,bx ;переходим к следующей горизонтальной координате cmp di,53 ;если закончиласть строка картинки jnz m1 xor di,di ;то обнулить счетчик mov cx,tcx ;восстановить сх add dx,bx ;увеличикаем координату y m1: jmp lp ;продолжаем вывод skip: ret ;выход из подпрограммы ;подпрограмма вывода отмасштабированного пикселя scaled_pixel: push di ;сохраняем регистры push si push dx push cx push bx push ax mov si,bx ;сохраняем масштаб mov ax,320 mul dx ;y*320 add ax,cx ;y*320+х mov di,ax ;получили адрес верхнего левого угола квадратика pop ax ;восстанавливаем цвет пикселя pxlp: mov cx,si ;количество пикселей погориз=масштабу push di ;сохраняем адрес верхнего левого угола квадратика rep stosb ;выводим строку пикселей из квадратика pop di ;восстанавливаем адрес верхнего левого угола квадратика add di,320 ;переходим на следующую строку dec bx ;уменьшаем количество оставшихся строк jnz pxlp ;продолжаем пока не выведем все pop bx ;восстановить регистры pop cx pop dx pop si pop di ret ;выход end start |
![]() |
![]() |
![]() |
#3 |
Регистрация: 03.02.2010
Сообщений: 4
|
![]()
Хоть ктонить может решить проблему?
Если вам будет удобнее то можно связаться по эмэйлу yourgfriend@mail.ru |
![]() |
![]() |
![]() |
#4 |
Регистрация: 03.02.2010
Сообщений: 4
|
![]()
Я готов заплатить, в пределах разумного, за помощь, мне очень нужно!
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
программа с использованием рекуррентных формул | giggles | Паскаль, Turbo Pascal, PascalABC.NET | 4 | 13.10.2009 11:09 |
Автоматический запуск макросов с листа на котором указан перечень макросов с параметрами и без | Neoli | Microsoft Office Excel | 2 | 09.03.2009 14:31 |
программа с использованием БД Paradox | hinku | Общие вопросы Delphi | 0 | 07.10.2008 11:27 |
Программа на C++ с использованием fstream | Dergard | Помощь студентам | 2 | 14.12.2007 05:18 |
Программа с использованием функции | Cartman18 | Помощь студентам | 1 | 10.12.2007 16:29 |