|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
26.11.2012, 21:44 | #1 |
Новичок
Джуниор
Регистрация: 26.11.2012
Сообщений: 2
|
Программа для архитектуры IA-32, котораая в реальном времени выводит изображение на экран в текстовом режиме (assembler)
Разработать ассемблерную программу для архитектуры IA-32, которая в реальном или виртуальном режиме выводит изображение на экран в текстовом режиме. При этом необходимо выполнить следующие шаги.
1.Разработать подпрограмму вывода шаблона с символами в точку, заданную номерами строки и колонки. Точка означает верхний левый угол шаблона фона. Вывод выполняется в виртуальном (реальном) режиме работы компьютера с использованием окна "Командная строка" или программы Far Manager или Volcov Commander. Шаблон состоит с двух процедур: одна генерирует Х символов по горизонтали, а вторая Х символов по вертикали 2. Разработать программу на основе подпрограммы вывода шаблона, которая очищает экран, отображает на экране инициалы , т.е. Р.В.И. Работа программы завершается за нажатием кнопок которые соответствуют инициалам студента. Компилятор используются программы MASM i LINK. 3. Проанализировать листинг программы после ассемблирования. Выделить команды длинной 1,2 и 3 байта. Оценить время выполнения подпрограммы, принимая во внимание, что команда выполняется столько тактов, сколько ее длина в байтах. Прошу прощения, за то что так много прошу, я совсем новичек, и тут почти сходу задали такую программу. Буду очень благодарен тому, кто уделит немного своего драгоценного времени и поможет решить это задание. Вся надежда только на вас, обещаю что буд учит и впредь н ебуду задвать таких вопросов, но сейчас вся надежда только на Вас. Зарание ОГРОМНЕЙШЕЕ СПАСИБО! |
27.11.2012, 21:11 | #2 |
Новичок
Джуниор
Регистрация: 26.11.2012
Сообщений: 2
|
Чтото на примере этой программы
Програма виводу логотипу КПІ KR.EXE ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~ ; Виконується в реальному режимі IA-32 ; Вихід - при натисканні клавіши s ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~ ; Загальні константи colors equ 0fh ; кольори тла (чорний) і символу (білий) symbol equ 0b2h ; код ASCII символу x0 equ 10 ; початкова колонка y0 equ 4 ; початковий рядок ; сегмент стеку, досить 1 рівня підпрограм та збереження кількох регістрів stack segment byte dw 16 dup(?) stack ends ; сегмент програми code segment assume cs:code, ds:code, ss:stack ; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~ ; Підпрограма виводу СХ символів у рядку АН і колонці AL ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~ SHOW proc push ax ;збереження ах push cx ;збереження сх ;Обчислення адреси буфера екрану з координатами [АН,AL] ; через множення ВХ=АН на 160 та додавання до AL xor bx,bx ; bx =0 mov bl, ah mov ah, 0 shl bx,1 ;зсув на 6 і 8 розрядів shl bx,1 shl bx,1 shl bx,1 shl bx,1 shl ax,1 add ax,bx shl bx,1 shl bx,1 add bx,ax M1: ; цикл виводу строки СХ символів symbol з кольором тла і символу colors mov al, symbol mov ah, colors mov ds:[bx], ax inc bx inc bx loop M1 pop cx pop ax ret SHOW endp ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ; Основна програма ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ begin: ; Очищення екрану. Текстовий режим (16 кольорів, екран 80х25, сегмент 0b800h) MOV AX,0600H ;AH 06 (прокрутка вгору) AL 00 (весь екран) MOV BH,00h ; ;колір тла - чорний MOV CX,0000 ;Верхня ліва позиція вікна MOV DX,184FH ;Нижня права позиція INT 10H ;Передача керування в BIOS ; Встановлення адреси сегменту відеобуфера в сегментний регістр DS mov ax, 0b800h mov ds,ax ;Вивід 5 рядків символів ;перший рядок mov al, x0 ;колонка mov ah, y0 ;рядок MOV CX,1 ;довжина ланцюжка символів call SHOW ; виклик підпрограми виводу ланцюжка символів у заданому місці екрану add al, 3 mov cx,9 call SHOW ;другий рядок inc ah mov al,x0 mov cx,1 call SHOW add al,2 call SHOW add al,9 call SHOW ;третій рядок inc ah mov al,x0 inc cx call SHOW add al,5 mov cx,5 call SHOW add al,6 mov cx,1 call SHOW ;четвертий рядок inc ah mov al,x0 call SHOW add al,2 call SHOW add al,3 mov cx,1 call SHOW add al,4 call SHOW add al,2 call SHOW ;п'ятий рядок inc ah mov al,x0 call SHOW add al,3 call SHOW add al,2 mov cx,1 call SHOW add al,4 call SHOW add al,2 call SHOW ; Чекаємо на натискання клавіши s M2: MOV AH,10h ;Функція вводу з клавіатури INT 16H ;Виклик BIOS mov ah,0fh ; колір символа – білий на чорному mov ds:[bx], ax ; вивід символа на екран для контролю xor al,'s' ; перевірка – чи то потрібний символ jne M2 ; якщо не той символ – знову перевіряєм натискання клавіши ;вихід з програми mov ax, 4c00h int 21h code ends end begin |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Программа, которая выводит на экран прописные буквы латинского алфавита (assembler) | Kallycta | Помощь студентам | 2 | 20.02.2012 21:56 |
Нужна программа, которая выводит на экран часы! | gylayko | Помощь студентам | 4 | 02.12.2011 11:08 |
выводит на экран изображение (PASCAL) | 0001 | Фриланс | 31 | 20.01.2010 18:13 |
Пауза в реальном режиме | Doholyan | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 10 | 20.12.2009 07:32 |
переброс данных из Excel в Delphi в реальном режиме времени | Машутка | Общие вопросы Delphi | 3 | 27.09.2008 07:19 |