Записать алфавит в файл - Assembler

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

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

У меня есть программа, создающая файл и записывающая в него строку. Мне нужно записать в строку русский алфавит. Пока я вводил буквы в строку вручную, вот так:
rus db 192,224,20,193,225,20,194,226,0;
Мне же нужно написать процедуру/макрос, которая будет производить запись в строку/буфер сама. Не получается. Пытаюсь пока для английского алфавита.
eng db 100, ?, 100 dup(?)
 
Alfavit macro
    lea bx, eng
    add bx, 2
    
    mov dl, 'A'
    jmp me1
me2:
    inc dl
me1:
    mov [bx], dl
    inc bx
    cmp dl, 'Z'
    
    jne me2
    mov eng[si], 24h
endm
Попытался записывать каждую букву по-отдельности, но не получилось.
ABC   db  ?
 
Alfavit macro
    lea bx, ABC
    mov dl, 192
    jmp me1
me2:
    inc dl
me1:
    mov dl,  ABC
    WriteToFile ABC ;макрос записи в файл
    cmp dl, 224
    jne me2
endm

Решение задачи: «Записать алфавит в файл»

textual
Листинг программы
N = 0
A = 0
rept    32
        db      128+N
  if    N ge 16
    A = 48
  endif
        db      160+N+A
  if    N lt 32  ; это если не нужен пробел в конце; а если нужен, убери эти 3 тсроки
        db      32
  endif 
  if    N eq 5  ; это если нужны Ёё
        db      240,241,32
  endif
        N = N + 1
endm

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

  1. Устанавливается значение переменной N равным 0.
  2. Устанавливается значение переменной A равным 0.
  3. В цикле повторяется 32 раза: 3.1. Записывается байт с значением 128 + N в файл. 3.2. Если N больше или равно 16, то устанавливается значение переменной A равным 48. 3.3. Записывается байт с значением 160 + N + A в файл. 3.4. Если N меньше 32, то записывается байт с значением 32 в файл. 3.5. Если N равно 5, то записываются байты с значениями 240, 241, 32 в файл. 3.6. Увеличивается значение переменной N на 1.

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

14   голосов , оценка 3.929 из 5
Похожие ответы