IC解密|8086CPU仿真+程序设计-汽车尾灯控制
IC解密|程序:
- ;;;===汽车尾灯设计===;;;
- ;定义8255的地址
- PA8255 EQU 0200H
- PB8255 EQU 0202H
- PC8255 EQU 0204H
- CON8255 EQU 0206H
- ;定义8253的部分地址
- P8253T0 EQU 0400H
- P8253CON EQU 0406H
- STACK SEGMENT
- STK DB 200 DUP(0)
- TOP DW $-STACK
- STACK ENDS
- CODE SEGMENT
- ASSUME CS:CODE,SS:STACK
- START:
-
- MOV DX,STACK
- MOV SS,DX
- MOV SP,TOP
- ;8255初始化
- MOV AL,82H ;1000 0010
- MOV DX,CON8255
- OUT DX,AL
- MOV DX,PA8255
- MOV AL,0FFH
- OUT DX,AL
- ;;;===每种状态输出对应的数据===
- ;;;===例如(0200H)=1111 0101 左转时,先是前后左灯亮0.5s
- ;;;===然后灯全灭0.5s。高四位保存全灭状态,低四位保存前后左灯亮状态
- ;;;===所以左转时,只要把 (0200H)=1111 0101左移四位即可。
- MOV SI,0200H
- MOV AL,0FAH
- MOV [SI],AL
- MOV [SI+1],0F5H
- MOV [SI+2],0F0H
- MOV [SI+3],00H
- MOV [SI+4],50H
- MOV [SI+5],0A0H
- BEGIN:
- MOV DX,PB8255
- IN AL,DX
- AND AL,1FH
- CMP AL,1EH
- JZ NEXT1 ;左转
- CMP AL,1DH
- JZ NEXT2 ;右转
- CMP AL,1BH
- JZ NEXT3 ;双闪
- CMP AL,17H
- JZ NEXT4 ;刹车
- CMP AL,0FH
- JZ NEXT5 ;夜间
- CMP AL,0EH
- JZ NEXT6 ;夜间+左转
- CMP AL,0DH
- JZ NEXT7 ;夜间+右转
-
- INIT:
- MOV DX,PA8255
- MOV AL,0FFH
- OUT DX,AL
- JMP BEGIN
- NEXT1:
- CALL LEFT
- JMP BEGIN
- NEXT2:
- CALL RIGHT
- JMP BEGIN
- NEXT3:
- CALL SHUAN_SHAN
- JMP BEGIN
- NEXT4:
- CALL SHA_CHE
- JMP BEGIN
- NEXT5:
- CALL NIGHT
- JMP BEGIN
- NEXT6:
- CALL NIGHT_LEFT
- JMP BEGIN
- NEXT7:
- CALL NIGHT_RIGHT
- JMP BEGIN
- ;;;===左转右转等子程序
- LEFT PROC
- MOV DX,PA8255
- MOV AL,[SI]
- OUT DX,AL
- CALL DELAY
- ROL AL,4
- MOV [SI],AL
- RET
- LEFT ENDP
- RIGHT PROC
- MOV DX,PA8255
- MOV AL,[SI+1]
- OUT DX,AL
- CALL DELAY
- ROL AL,4
- MOV [SI+1],AL
- RET
- RIGHT ENDP
- SHUAN_SHAN PROC
- MOV DX,PA8255
- MOV AL,[SI+2]
- OUT DX,AL
- CALL DELAY
- ROL AL,4
- MOV [SI+2],AL
- RET
- SHUAN_SHAN ENDP
- SHA_CHE PROC
- MOV DX,PA8255
- MOV AL,[SI+3]
- OUT DX,AL
- CALL DELAY
- ROL AL,4
- MOV [SI+3],AL
- RET
- SHA_CHE ENDP
- NIGHT PROC
- MOV DX,PA8255
- MOV AL,[SI+3]
- OUT DX,AL
- CALL DELAY
- ROL AL,4
- MOV [SI+3],AL
- RET
- NIGHT ENDP

芯片解密