There are several dragon book editions. All are pretty good. I've read them. And I've written a C compiler. But for someone 13 I would NOT recommend the dragon book unless you are very, very skilled already. It's for those with some background to build on.
Probably the easiest way to write something useful and without too much complexity is to get Niklaus Wirth's "Algorithms + data structures = programs" book. See 1st link below. Near the end of the book you are taught from scratch how to write your own PL/0 compiler. It's a pretty good lesson for beginners and I think you will enjoy the process a lot.
Another excellent book to get is more recent (the above one is from 1976, I think.) It is Hanson and Fraser's "Retargetable C Compiler: Design and Implementation." See 2nd link below. It's VERY EXCELLENT and not difficult to read, either.
Neither book above is difficult or excessively long. Both are MUCH MUCH EASIER to read than any of the dragon books. (Though, once you get through the above two and get some experience behind you, you may then enjoy some of the sections in the dragon book -- particularly on optimizations.)
I really do think you should give both books a shot. And if you are really interested in another really good book recommendation, and if you want to try your hand at writing a simple operating system (you should buy a microcontroller board for that, though, as the IBM PC is crazy-complex and you need to start simple), then I'd recommend Douglas Comer's first (not the later editions) XINU book. See 3rd and 4th link below. That book is kind of hard to get (the red one), but it is fantastic for beginners. I think there are paperbacks available for less, though.
And just to offer another very fun book to read, I'd recommend the first half (at least) of Clive Maxfield's "Bebop Bytes Back: An Unconventional Guide to Computers." It teaches complete neophytes (beginners) how to design microprocessors and does a commendable job of explaining the details. Even if you never get a chance to code up a CPU on your own (programming it into an FPGA board using VHDL or Verilog, for example), it's still a huge education about how they work inside and you will learn a lot from it. See 5th link below. (I think I bought up all the cheap ($10) copies of it a couple of years ago -- got a nice stack here that I like to give away from time to time.)
EDIT: The very first thing you should do, though, is to learn how to write your own expression analyzer. This is step #1. If you can write an algebraic calculator program that can parse and accept parentheses and handle operator precedence properly, you are taking a good step towards your goals. I'd recommend starting there. Write me if you want some thoughts about how to go about it.
Any language will do, by the way. You can write a compiler without knowing a lot of assembly code -- in fact, C++ was originally compiled using CFRONT, which accepted C++ input and produced C output. Then that was fed into a C compiler to produce the final code. You can cause the compiler to generate machine code, if you want. Or you can make it generate something you make up, if you then write an interpreter for that code (which also doesn't have to use assembly code.) Or you can just write an interpreter. But some assembly code knowledge does allow you broader choices.