-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathLB2.ASM
127 lines (95 loc) · 2.36 KB
/
LB2.ASM
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
org 100h
Start:
;âűâîä ńňđîęč
mov ah, 09h
mov dx, StartStr
int 21h
;ââîä ńňđîęč
mov ah, 0ah
mov dx, bufInput
int 21h
;
mov ah, 09h
mov dx, NewLine
int 21h
;Ďđîâĺđęŕ íŕ äëčííó
mov bx, word[bufInput+1]
cmp bx, 4h
js Start.notCorrect
;Âňîđîé ńčěâîë áóęâŕ?
mov ch, byte[bufInput+3]
cmp ch, 'a' ;cđŕâíčâŕĺě ń 'a'
js Start.notCorrect
;L-1 ńčěâîë öčôđŕ?
;mov bx, word[bufInput+1]
;mov ch, byte[bufInput+bx-1]
;cmp ch, '1' ;;L-1 ńđŕâíčâŕĺě ń '1'
mov bh, [bufInput+1]
mov [var], bh
mov bp, bufInput-2
mov dx, 0
mov dl, [var]
add bp, dx
mov bh, [bp]
jmp testNum
js Start.notCorrect
;Ďđîâĺđęŕ íŕ đŕâíűĺ ńčěâîëű
mov bl, byte[bufInput+3];2
cmp bl, byte[bufInput+5];4
je Start.Correct
.notCorrect:
mov ah, 09h
mov dx, strNo
int 21h
jmp Start.EndLabel
.Correct:
mov ah, 09h
mov dx, strYes
int 21h
jmp Start.EndLabel
.EndLabel:
mov ax, 0c08h
int 21h
test al, al
jnz @F
mov ah, 08h
int 21h
@@:
ret
set3:
mov bh, [bufInput+4]
mov bl, 3
testNum:
cmp bh, 65
jl skip
cmp bh, 122
jg skip
cmp bh, 91
je skip
cmp bh, 92
je skip
cmp bh, 93
je skip
cmp bh, 94
je skip
cmp bh, 95
je skip
cmp bh, 96
je skip
cmp bh, 96
je skip
cmp bl, 3
jne set3
;===Everything is ok===;
mov ah, 09h
mov dx, yes
int 21h
mov ah, 08h
int 21h
ret
StartStr db "Enter new line: $"
NewLine db 10, 13, '$'
bufInput db 9, 0, 9 dup(?)
var db 0
strNo db "No$"
strYes db "Yes$"