-
Notifications
You must be signed in to change notification settings - Fork 3
/
10.table_of_parameters.asm
73 lines (51 loc) · 1.46 KB
/
10.table_of_parameters.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
DATA SEGMENT
ARRAY DW 1H, 2H, 3H, 4H, 5H, 6H, 7H
SIZE DW 7
ELEMENT DW 14H
TABLE DW 3 DUP(?)
FOUND_MSG DB 10,10,'ELEMENT FOUND!!','$'
NFOUND_MSG DB 10,10,'ELEMENT NOT FOUND!!','$'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA
START: MOV AX, DATA
MOV DS, AX
MOV ES, AX
MOV TABLE, OFFSET ARRAY
MOV TABLE+2, OFFSET SIZE
MOV TABLE+4, OFFSET ELEMENT
MOV BX, OFFSET TABLE
CALL LSEARCH
HLT
CODE ENDS
LSEARCH PROC NEAR
PUSH AX
PUSH CX
PUSH DX
PUSH SI
PUSH DI
MOV SI, [BX]
MOV DI, [BX+2]
MOV CX, [DI]
MOV DI, [BX+4]
MOV DI, [DI]
REPEAT: CMP [SI], DI
JE FOUND
INC SI
INC SI
LOOP REPEAT
NOT_FOUND: LEA DX,NFOUND_MSG
MOV AH,9H
INT 21H
JMP RE
FOUND: LEA DX,FOUND_MSG
MOV AH,9H
INT 21H
RE: POP DI
POP SI
POP DX
POP CX
POP AX
RET
LSEARCH ENDP
END START