FASM. Ввод символов в консоль на русском языке
Всем привет. Смысл моей программы в том, что она должна менять каждую букву "у" на букву "ю" По факту код рабочий с английскими буквами и символами, но я не знаю как он поведет себя с русскими, потому что не могу проверить это. Я не могу понять как вводить в консоль на русском языке и может кто-то подскажет как оптимизировать, а может и переписать мой ASM код
use16
org 100h
mov dx, s1
mov [s1], 51
mov ah, 0ah
int 21h
call endline
mov dx, s1
call processline
call printline
call endline
mov ah, 8
int 21h
int 20h
;------------- functions -----------
;------------------------------
; new line
;------------------------------
endline:
push ax
push dx
mov ah, 9
mov dx, endlen
int 21h
pop dx
pop ax
ret
;-------------------------------
;-------------------------------
; print line
;-------------------------------
printline:
push ax
push bx
push dx
mov ah, 9
mov bx, dx
inc bx
mov al, [bx]
add bl, al
inc bl
mov byte [bx],'$'
add dx, 2
int 21h
pop dx
pop bx
pop ax
ret
;-------------------------------
;-------------------------------
; processing line
;-------------------------------
;input:
; dx - line address
;-------------------------------
processline:
push ax
push bx
; push cx
push dx
push si
push di
pushf
push es
push ds
pop es
cld
mov di, dx
inc di
mov al, 'у'
mov ah, 'ю'
mov cx, 0
mov cl, [di]
mov bx, cx
inc di
call replace
pop es
popf
pop di
pop si
pop dx
pop bx
pop ax
ret
;-------------------------------
;-------------------------------
; replace symbol on another
;-------------------------------
;input:
; es:di - address line
; cx - count processing symbol
; al - search symbol
; ah - replaceable symbol
;-------------------------------
replace:
push cx
push di
cycl:
repne scasb
jne @break
mov byte [es:di-1], ah
jcxz @break
jmp cycl
@break:
pop di
pop cx
ret
s1 db 53 dup(?)
endlen db 10,13,'$'