Записать алфавит в файл - 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
Объяснение кода листинга программы
- Устанавливается значение переменной N равным 0.
- Устанавливается значение переменной A равным 0.
- В цикле повторяется 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д