芯片解密TMS320F2812寄存器
芯片解密
- DATA SEGMENT
- X DB ?,?,?,? ;存放数据的每一位
- X1 DW ? ;存放第一个数据值
- X2 DW ? ;存放第二个数据值
- Y DW ? ;存放运算结果
- S DB ? ;存放运算符号值
- E DB ? ;按下等号键标记
- CC DB ? ;存放运算数据位数
- H DB 0 ;存放按键行号
- L DB 0 ;存放按键列号
- DISCODE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H ;段码表
- DATA ENDS
- CODE SEGMENT
- ASSUME CS:CODE,DS:DATA
- START: MOV AX,DATA
- MOV DS,AX
- MOV AL,90H ;设置为A口输入,B口输出,C口输出
- OUT 46H,AL
- MOV DI,OFFSET X+3 ;DI指向X的高位
- KKK: CALL KEY ;扫描按键
- JMP KKK
- ;以下为按键扫描子程序,程序返回后,在变量H和L中存放当前按键的行列号
- KEY PROC
- CHECK: CALL DISP ;等待按键按下的同时进行显示
- MOV AL,0F0H ;所有行输出低电平
- OUT 44H,AL
- IN AL,40H
- CMP AL,0FFH ;读列值
- JZ CHECK ;若都为高电平则无键按下,等待
- MOV CX,50
- LOOP $ ;延时消抖
- IN AL,DX ;重读列值
- CMP AL,0FFH
- JZ CHECK ;无键按下一直等待
- MOV H,0 ;有键按下,先把行列号变量清0
- MOV L,0
- MOV BL,01H
- MOV BH,0FEH ;扫描法读键值:从第一行开始测试,即PC0输出低电平
- NEXT: MOV AL,BH
- OUT 44H,AL
- NEXTH: IN AL,40H ;读列值,判断是第几列有键按下
- TEST AL,BL ;从第一列开始判断
- JZ WAIT0
- ROL BL,1
- CMP BL,10H ;当前行状态下没有任何列有键按下,则转为对下一行的测试
- JZ NEXTL
- INC H ;每判断一列,列号加1
- JMP NEXTH ;再对下一列进行判断

芯片解密