Сформировать и вывести на экран таблицу ASCII-символов - Assembler

Узнай цену своей работы

Формулировка задачи:

Используя вложенные циклы, сформировать и вывести на экран таблицу ASCII-символов с кодами в указанном диапазоне.Формирование всей таблицы вывода в памяти во вложенных циклах, затем ее вывод (используется область памяти для всей таблицы вывода, включая управляющие коды). Диапазон кодов символов 39-147, строки по 16 символов

Решение задачи: «Сформировать и вывести на экран таблицу ASCII-символов»

textual
Листинг программы
  1. LOCALS
  2.  
  3. .model small
  4.  
  5. .stack 100h
  6.  
  7. .data
  8.         CrLf            db      0Dh, 0Ah, '$'
  9.  
  10.         First           db      39      ;код первого символа
  11.         Last            db      147     ;код последнего символа
  12.         CharPerLine     equ     16      ;количество символов таблицы в строке
  13.  
  14.         String          db      (Last-First+1+10) dup(?)
  15.  
  16.  
  17. .code
  18.  
  19. main    proc
  20.         mov     ax,     @data
  21.         mov     ds,     ax
  22.  
  23.         lea     si,     String
  24.         mov     al,     First
  25.         @@ForI:
  26.                 mov     cx,     CharPerLine
  27.                 @@ForJ:
  28.                         mov     [si],   al
  29.                         inc     si
  30.                         inc     al
  31.                         cmp     al,     Last
  32.                         ja      @@Break
  33.                 loop    @@ForJ
  34.         @@Break:
  35.                 mov     [si],   word ptr 0A0Dh
  36.                 add     si,     2
  37.                 cmp     al,     Last
  38.         jbe     @@ForI
  39.         mov     [si],   byte ptr '$'
  40.  
  41.         mov     ah,     09h
  42.         lea     dx,     String
  43.         int     21h
  44.  
  45.         mov     ax,     4C00h
  46.         int     21h
  47. main    endp
  48.  
  49. end     main

Объяснение кода листинга программы

  1. Объявляются локальные переменные
  2. Задается размер модели памяти как small
  3. Выделяется 100 байт на стеке
  4. Определяются переменные данных:
    • CrLf - символы новой строки и возврата каретки
    • First - код первого символа таблицы ASCII
    • Last - код последнего символа таблицы ASCII
    • CharPerLine - количество символов таблицы в строке
    • String - массив символов, размер которого зависит от разницы между Last и First, плюс 10 символов заполнителя
  5. Начинается секция кода
  6. В процедуре main: a. Загружается сегмент данных в регистр AX и копируется в регистр DS b. Адрес массива String загружается в регистр SI c. Выполняется цикл для заполнения массива String ASCII-символами от First до Last
    • Устанавливается значение AL в First
    • Двойной цикл с использованием регистра CX для заполнения символов ASCII
    • Проверяется, если AL больше чем Last, то выход из цикла d. Добавляется символ новой строки и возврата каретки к массиву String e. Печать массива String с помощью системного вызова прерывания 21h, функции 09h f. Программа завершается системным вызовом прерывания 21h с функцией 4с00h
  7. Конец процедуры main
  8. Конец программы

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы