Задачка для самостоятельного решения по MIPS
На устройстве «MARS Bitmap Display», настроенным так:
Вывести своё имя-фамилию-отчество (можно не своё, но чтобы отличалось от других) в виде растровой картинки, смасштабированной до размера 512×256
Предполагается это делать примерно так.
Сначала получите растровый вариант ФИО. Например, такой:
........#####............. .......##..##............. .......##..##.##...##..... .......##..##.##..###..... .......##..##.##.#.##..... .......##..##.###..##..... ......##...##.##...##..... .......................... .......#####.............. ......##...##............. ......##......##...##..... ......##......##..###..... ......##......##.#.##..... ......##...##.###..##..... .......#####..##...##..... .......................... ..##..##.................. ..##..##.................. ..##..##..##...##.##...##. ..##..##..##...##.##...##. ..##..##..####..#.#######. ..##..##..##..#.#.##...##. ..#######.####..#.##...##. ........#.................
Это можно сделать, например, с помощью питоньего модуля pyfiglet:
$ python3 -m pyfiglet -w 28 -j center -f banner "Ли Си Цын"
или любым другим способом.
Затем превратите это в ассемблерный код, описывающий двумерный массив байтов:
1 .data
2 Name:
3 .asciiz "........#####............."
4 .asciiz ".......##..##............."
5 .asciiz ".......##..##.##...##....."
6 .asciiz ".......##..##.##..###....."
7 .asciiz ".......##..##.##.#.##....."
8 .asciiz ".......##..##.###..##....."
9 .asciiz "......##...##.##...##....."
10 .asciiz ".........................."
11 .asciiz ".......#####.............."
12 .asciiz "......##...##............."
13 .asciiz "......##......##...##....."
14 .asciiz "......##......##..###....."
15 .asciiz "......##......##.#.##....."
16 .asciiz "......##...##.###..##....."
17 .asciiz ".......#####..##...##....."
18 .asciiz ".........................."
19 .asciiz "..##..##.................."
20 .asciiz "..##..##.................."
21 .asciiz "..##..##..##...##.##...##."
22 .asciiz "..##..##..##...##.##...##."
23 .asciiz "..##..##..####..#.#######."
24 .asciiz "..##..##..##..#.#.##...##."
25 .asciiz "..#######.####..#.##...##."
26 .asciiz "........#................."
27 Endname:
- Все строки одинаковой ширины (в примере — 26)
- В конце каждой строки есть нулевой байт (в примере — 27-й)
Endname означает адрес конца массива (может пригодиться)
Далее пишем к нему программу, которая для каждой точки графического дисплея
- определяет её X и Y-координату
с помощью функции масштабирования, описанной на лекции, определяет, какму символу в Name эта точка экрана соответствует
- Записывает туда один из двух цветов
Должно получиться что-то вроде этого:
Решения
Отсылать почтой на Д. Ю. Волканову