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,'$'

Ответы (0 шт):