Differences between revisions 4 and 5
Revision 4 as of 2020-04-11 14:34:45
Size: 3852
Editor: FrBrGeorge
Comment:
Revision 5 as of 2020-04-12 19:33:28
Size: 3896
Editor: FrBrGeorge
Comment:
Deletions are marked like this. Additions are marked like this.
Line 78: Line 78:
 * Все строки одинаковой ширины (26)
 * В конце каждой строки есть нулевой байт (27-й)
 * Все строки одинаковой ширины (в примере — 26)
 * В конце каждой строки есть нулевой байт (в примере — 27-й)

Задачка для самостоятельного решения по MIPS

На устройстве «MARS Bitmap Display», настроенным так:

display.png

Вывести своё имя-фамилию-отчество (можно не своё, но чтобы отличалось от других) в виде растровой картинки, смасштабированной до размера 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 эта точка экрана соответствует

  • Записывает туда один из двух цветов

Должно получиться что-то вроде этого:

result.png

Решения

Отсылать почтой на Д. Ю. Волканову

FrBrGeorge/Misc/TaskArch2020 (last edited 2020-04-12 19:33:28 by FrBrGeorge)