1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175
|
.model small
.stack
.data
menu db 18 dup (' '),"ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»", 0dh, 0ah
db 18 dup (' '),"º º", 0dh, 0ah
db 18 dup (' '),"º Phrase : º", 0dh, 0ah
db 18 dup (' '),"º º", 0dh, 0ah
db 18 dup (' '),"º ................... º", 0dh, 0ah
db 18 dup (' '),"º º", 0dh, 0ah
db 18 dup (' '),"º message palyndrome machin º", 0dh, 0ah
db 18 dup (' '),"º º", 0dh, 0ah
db 18 dup (' '),"º segment sym º", 0dh, 0ah
db 18 dup (' '),"ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ$"
count_ns db 0h
count_s db 0h
str db 19h dup ('$')
f_str db 19h dup ('$')
f_msg db 18 dup (' '),"Ce n est pas un palyndrome$"
g_msg db 18 dup (' '),"C est un palyndrome$"
.code
main:
mov ax, @data
mov ds, ax
mov ah, 0fh ; Get video mode
int 10h ;
mov ah, 00h ;
mov al, 03h ; Set video mode
int 10h ;
mov ah, 02h ;
mov dh, 06h ; Set cursor position
mov dl, 00h ; print form ( align center )
int 10h ;
lea dx, menu ;
mov ah, 09h ; print form
int 21h ;
mov ah, 02h ;
mov dh, 0Ah ; Set cursor position
mov dl, 21h ; form ( first points )
int 10h ;
xor cx, cx
lea bx, str
lea si, f_str
mov di, 0
jmp get_char
relay_main:
jmp main
get_char :
mov ah, 08h ; Input without echo
int 21h ;
cmp al, 0dh ; Detect <Enter>
je test_pal ;
cmp al,20h ; Accept only a-z && A-Z and space
je print_char
cmp al,7Ah ; > z
ja get_char
cmp al,41h ; < A
jb get_char
cmp al,5Ah ; <= Z
jbe print_char
cmp al,61h ; < a
jb get_char
print_char :
mov [bx], al
mov ah, 2 ;
mov dl, [bx] ; Print value
int 21h ;
cmp al, 20h
je print_char_end
call create_new_str
print_char_end :
inc count_s
cmp count_s, 19h
je fin
; je test_pal
inc bx
jne get_char
create_new_str PROC
mov dl, [bx]
mov [si], dl
; mov ah, 02h ;
; mov dl, [si] ; (RE) Print value
; int 21h ;
inc si
inc count_ns
ret
create_new_str ENDP
test_pal :
dec si
mov al, f_str[di]
cmp BYTE PTR [si], al
je good
jne false
good:
inc di
dec count_ns
cmp count_ns, 0h
je print_msg_good
jne test_pal
false :
lea dx, f_msg ;
mov ah, 09h ; print msg
int 21h ;
jmp fin
print_msg_good:
lea dx, g_msg ;
mov ah, 09h ; print msg
int 21h ;
fin :
mov ax, 4c00h
int 21h
end |
Partager