Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .model small
- .486
- data segment public 'data'
- source db "N44TXg2k,MFIWMIW.v9,QR4V1H1ssaURikdAs8IFvqilYmKqWIPV7brVAGLFB2I?"
- result1 db 65 dup ('$')
- result2 db 65 dup ('$')
- maska dq 0001100001111111000011010100001100010011000011111111011111111010b
- R db 'R'
- U db 'U' ;85
- A db 'A' ; 97
- Z db 'Z' ; 122
- data ends
- code segment public 'code'
- assume cs:code, ds:data
- start:
- mov ax, data
- mov ds, ax
- mov es, ax
- xor si, si
- xor di, di
- ;вывод исходной строки
- mov ah, 09h
- mov dx,OFFSET source
- int 21h
- ;след строка
- mov ah, 06h
- mov dl, 0Ah
- int 21h
- ;первая часть
- mov si, offset source
- mov di, offset result1
- mov ebx, dword ptr maska + 4
- call firstPart
- mov ebx, dword ptr maska
- call firstPart
- mov ah, 06h
- mov dl, 0Ah
- int 21h
- ;вывод результата первой части
- mov ah, 09h
- mov dx,OFFSET result1
- int 21h
- ;след строка
- mov ah, 06h
- mov dl, 0Ah
- int 21h
- ;вторая часть
- mov si, offset source[63]
- mov di, offset result2
- xor bx, bx
- call secondPart
- ;вывод результата второй части
- mov ah, 09h
- mov dx,OFFSET result2
- int 21h
- .exit
- firstPart proc
- mov cx, 32
- firstPartLoop:
- shl ebx, 1 ;побитовый сдвиг влево
- jnc zero
- mov ah, 06H
- mov dl, '1'
- int 21h
- jmp check
- zero:
- mov ah, 06H
- mov dl, '0'
- int 21h
- check:
- lodsb
- jnc nextBit
- cmp al, A
- jl nextBit
- cmp al, Z
- jg nextBit
- stosb
- nextBit:
- LOOP firstPartLoop
- ret
- firstPart endp
- secondPart proc
- std
- lodsb
- mov bh, al
- mov cx, 63
- secondPartLoop:
- std
- lodsb
- cmp bh, R
- jne copy
- cmp al, U
- je return
- copy:
- xchg al, bh
- cld
- stosb
- LOOP secondPartLoop
- mov al, bh
- cld
- stosb
- return:
- ret
- secondPart endp
- code ends
- end start
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement