Вывод русского текста в консоли - 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

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

  1. Объявление сегмента CSEG
  2. Установка сегмента на 100h
  3. Начало программы (label Begin)
  4. Передача в регистр AH 9 (код функции вывода строки)
  5. Передача в регистр DX смещения Message (начало строки для вывода)
  6. Вызов прерывания 21h (int 21h) для вывода строки
  7. Вызов прерывания 20h (int 20h) для завершения работы программы
  8. Объявление строки Message (db 'Hello, world!$')

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

7   голосов , оценка 4.286 из 5