-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy path12b.asm
More file actions
123 lines (106 loc) · 1.12 KB
/
Copy path12b.asm
File metadata and controls
123 lines (106 loc) · 1.12 KB
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
.model small
inpb macro
mov dx,pb
in al,dx
endm
outpc macro
mov dx,pc
out dx,al
endm
outpa macro
mov dx,pa
out dx,al
endm
printf macro l
lea dx,l
mov ah,9
int 21h
endm
exit macro
mov ah,4ch
int 21h
endm
.data
pa equ 1190h
pb equ 1191h
cr equ 1193h
pc equ 1192h
m1 db 10,13,"any key to exit:$"
floor db 00h,03h,06h,09h,0e0h,0d3h,0b6h,79h
.code
mov ax,@data
mov ds,ax
mov al,82h
mov dx,cr
out dx,al
start:
printf m1
mov bl,0
initial:
mov al,bl
or al,0f0h
outpa
lea si,floor
floorinput:
call kbhit
inpb
or al,0f0h
jz floorinput
mov al,cl
sub al,0feh
jz reset
floorcheck:
mov al,cl
ror al,1
mov cl,al
jnc decide
inc si
jmp floorcheck
decide:
call delay
mov al,[si]
sub al,bl
jz reset
up:
inc bl
mov al,bl
or al,0f0h
outpa
jmp decide
reset:
add si,4
mov al,[si]
outpa
down1:
call delay
mov al,bl
or al,0f0h
outpa
dec bl
cmp bl,-1
jz start
jnz down1
jmp initial
kbhit proc
mov ah,1
int 16h
jnz done
ret
done:
exit
kbhit endp
delay proc
push cx
push bx
mov bx,0fffh
b2:
mov cx,0ffffh
b1:
loop b1
dec bx
jnz b2
pop bx
pop cx
ret
delay endp
end