Вывод русского текста в консоли - Assembler
Формулировка задачи:
model small stack 256 .data match db 0ah,0dh,'PASSWORD IS OK','$' failed db 0ah,0dh,'PASSWORD IS NOT CORRECT','$' string1 db 07Fh,071h,06Dh,067h,060h,07Bh,064h,'$' string2 db 10 string db 'Введите пароль:','$' .code assume ds:@data,es:@data main: mov ax,@data mov ds,ax mov es,ax ;выводим приглашение ко вводу пароля mov ah,09h lea dx,string int 21h ;запрашиваем символы с клавиатуры lea dx,string2-2 mov ah,0Ah int 21h ;производим расшифровку пароля mov si,0 mov cx,7 ll: xor string1[si],34h inc si loop ll ;процедура проверки правельности пароля cld lea si,string1 lea di,string2 mov cx,7 cycl: repe cmps string1,string2 jcxz equal ; если совподают jne not_match equal: ;если пароль верный mov ah,09h lea dx,match int 21h jmp exit not_match: ;если пароль не верный mov ah,09h lea dx,failed int 21h jmp exit jmp cycl exit: mov ax,4c00h int 21h end main
Решение задачи: «Вывод русского текста в консоли»
textual
Листинг программы
CSEG segment org 100h Begin: mov ah,9 mov dx,offset Message int 21h int 20h Message db 'Hello, world!$' CSEG ends end Begin
Объяснение кода листинга программы
- Объявление сегмента CSEG
- Установка сегмента на 100h
- Начало программы (label Begin)
- Передача в регистр AH 9 (код функции вывода строки)
- Передача в регистр DX смещения Message (начало строки для вывода)
- Вызов прерывания 21h (int 21h) для вывода строки
- Вызов прерывания 20h (int 20h) для завершения работы программы
- Объявление строки Message (db 'Hello, world!$')
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д