I cannot understand the bacnet protocol. I tried to read the official documentation, but I cannot understand the definition of data. The corresponding keyword for the request for the specified service choices cannot be found.
I tried to understand ASN. 1 encoding, but I couldn't match the data very well
I'm sure someone might argue against my answer, but I'm going to give you a cheat way of starting with an understanding, with more of an observation approach.
For me personally - having a small amount of understanding (about BACnet), I would argue that if understanding BACnet is like having a black belt in Karate, then (I personally think) that understanding 'ASN' can be like one of the later/progressed Dans in a black belt, i.e. it's probably not best to try to understand ASN straight away as a generic topic/understanding, maybe instead just pick some simple examples.
(For most cases, if you understand some of the basics then it almost comes down in a lot of situations to appreciating the grouping of values, and the basic datatypes of each type of value - a poor-man's explanation/simplified understanding of the specifics of ASN.)
If you really want to dive straight into a better understanding or at least introduction, then consider using, a) 'YABE' with its 'Room Simulator' sample, and b) 'VTS' and/or 'Wireshark' to focus upon the structure of each request & response.
(I.e. Once you get to see what some of the chicken's eggs look like, then you can better appreciate/start to understand the specifics of how it was produced by the chicken. :P)
That just might be the "in"/approach (/angle of attack) that you're looking for. ;)