(Content introduction: This book is a new alternative to the traditional textbook of computer organization principles and assembly language programming for sophomores in colleges and universities. This book explains assembly language in the most commonly used way in practice -- routines that realize small, fast or special purposes. These routines are called by the main program (high-level language, such as C). By using the embedded software environment, this book introduces multithreaded programming, preemptive and non preemptive systems, shared resources and scheduling, thus providing a solid foundation for subsequent courses such as operating systems, real-time systems, computer networks and design based on multiple managers. This book will help readers: understand the results and limitations of binary representation that are generally ignored; Use fixed-point (rather than floating point) real numbers to achieve fast real number operations; Enhance the understanding of effect domain, parameter transfer, recursion and memory allocation; C language features (such as bit operation and variable access) are widely used in embedded software; Compile the assembly function under Intelx86 protection mode, which is called by the C program; Budget the maximum data rate and waiting time of different types of input/output program design; Manage multithreading, shared resources and critical areas; Develop programming examples to prevent priority inversion, deadlocks, and shared memory problems. This book is applicable to the embedded computer system programming, C language programming and assembly language programming courses of undergraduate engineering majors in colleges and universities, and can also be used as a reference for relevant technicians.)