Вывод русского текста в консоли - 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!$')
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д