KCOD_0 DB 0,1,2,3 KCOD_1 DB 4,5,6,7 KCOD_2 DB 8,9,0AH,0BH KCOD_3 DB 0CH,0DH,0EH,0FH PUSH BX SUB AL,AL OUT PORT_A,AL K1: IN AL,PORT_B AND AL,00001111B CMP AL,00001111B JNE K1 CALL DELAY K2: IN AL,PORT_B AND AL,00001111B CMP AL,00001111B JE K2 CALL DELAY IN AL,PORT_B AND AL,00001111B CMP AL,00001111B JE K2 key MOV AL,11111110B OUT PORT_A,AL IN AL,PORT_B AND AL,00001111B CMP AL,00001111B JE RO_1 MOV BX,OFFSET KCOD_0 JMP FIND_IT RO_1: MOV AL,11111101B OUT PORT_A,AL IN AL,PORT_B AND AL,00001111B CMP AL,00001111B JE RO_2 MOV BX,OFFSET KCOD_1 JMP FIND_IT RO_2: MOV AL,11111011B OUT PORT_A,AL IN AL,PORT_B AND AL,00001111B CMP AL,00001111B JE RO_3 MOV BX,OFFSET KCOD_2 keys JMP FIND_IT RO_3: MOV AL,11110111B OUT PORT_A,AL IN AL,PORT_B AND AL,00001111B CMP AL,00001111B JE K2 MOV BX,OFFSET KCOD_3 keys FIND_IT:RCR AL,1 JNC MATCH INC BX JMP FIND_IT MATCH: MOV AL,[BX] POP BX RET