Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- jmp Main
- fst:
- db 0, 0, 0, 0
- dU:
- db 0, 0, 0, 0
- dD:
- db 0, 0, 0, 0
- dC:
- db 0, 0, 0, 0
- flr:
- db 0, 0, 0, 0
- len:
- db 0, 0, 0, 0
- run: // 1 - down, 2 - up
- db 0, 0, 0, 0
- nextLen:
- db 0, 0, 0, 0
- gofst:
- db 0, 0, 0, 0
- //port1(in) - up button
- //port2(in) - down button
- //port3(out) - screen
- //port4(out) - length
- //port4(in) - default lenght
- //port5(in) - floor step
- //port5(out) - indicator
- //port3(in) - call button
- Wait://Delay(MS)
- mov ecx, eax
- CWait:
- idle
- dec ecx
- cmp ecx, 0
- jg CWait
- ret
- SetIndicator: //0 - blue, 1 - green, 2 - red
- mul eax, 8
- push ecx //save ecx
- mov ecx, eax //eax = ecx
- xor eax, eax //clean all eax bits
- mov eax, 255
- bshl eax, ecx // eax = eax << ecx
- pop ecx //restore ecx
- mov port5, eax
- ret
- Main: //Set initial state of program
- cmp #fst, 0
- jg next
- mov #run, 0
- mov #fst, 1
- mov #dU, 0
- mov #dD, 0
- mov #dC, 0
- mov #gofst, 0
- mov #flr, 1
- mov #len, port4
- mov #nextLen, port4
- mov eax, 1
- call SetIndicator
- next: //Up button interception
- cmp #gofst, 1
- je skip3
- cmp port1, 1
- jne skip1
- cmp port1, #dU
- je skip1;
- cmp #flr, 10
- jge skip1
- inc #flr
- mov port3, #flr
- add #nextLen, port5
- mov #run, 1
- jmp skip3
- skip1://Down button interception
- cmp port2, 1
- jne skip2
- cmp port2, #dD
- je skip2
- cmp #flr, 1
- jle skip2
- dec #flr
- mov port3, #flr
- sub #nextLen, port5
- mov #run, 2
- jmp skip3
- skip2:
- cmp port3, 1
- jne skip3
- cmp port3, #dC
- je skip3
- cmp #flr, 1
- jle skip3
- mov #gofst, 1
- jmp skip3
- skip3://checking, is lift running
- cmp #gofst, 1
- jne not_fst
- cmp #flr, 1
- je skip
- dec #flr
- mov port3, #flr
- sub #nextLen, port5
- mov #run, 2
- not_fst:
- cmp #run, 0
- je skip
- go_elev:
- mov eax, 2
- call SetIndicator
- elevate://choosing direction(1-up, 2-down)
- mov eax, 5
- call Wait //delay for 5 ms
- cmp #run, 1
- je up
- cmp #run, 2
- je down
- up:
- cmp #len, #nextLen
- jge endelev
- add #len, 3
- mov port4, #len
- jmp elevate
- down:
- cmp #len, #nextLen
- jle endelev
- sub #len, 3
- mov port4, #len
- jmp elevate
- endelev:
- mov eax, 1
- call SetIndicator
- mov #run, 0
- skip://Backuping old values
- cmp #flr, 1
- jne C
- mov #gofst, 0
- C:
- push port1
- push port2
- push port3
- pop #dC
- pop #dD
- pop #dU
- jmp Main
Advertisement
Add Comment
Please, Sign In to add comment