Resulta que estoy trabajando en algo como esto pero todavía no estoy listo para lanzar nada de eso. (al menos no públicamente)
Sin embargo, creo que necesitas editar / refinar tu pregunta. Tomando una puñalada general a la pregunta. Comenzaría con algo más simple que ARM y x86, y evitaría x86 por completo.
Tener un libro de ensamblador implica que usted es un programador o que tiene algunas habilidades de programación. No sé si su pregunta es más desde el punto de vista de programación o diseño digital.
Si vienes del lado del programador, empezaré por aprender el ensamblador para el msp430 y el brazo o el pulgar (no te metas con x86 todavía, no es una buena arquitectura), tal vez PIC (foto más antigua, no la dspic ni el pic32). Luego escriba un desensamblador y / o un simulador de conjunto de instrucciones. Si solo es un desensamblador, elija un conjunto de instrucciones de longitud de palabra no variable como ARM o pulgar (sí, si lo piensa, puede manejar esa instrucción de bifurcación) o el PIC. Finalmente, escriba un simulador de conjunto de instrucciones, al menos lo suficiente como para implementar un puñado de instrucciones y una rama, haga que un bucle lo vea ejecutarse. Luego vaya a estudiar las máquinas de estado y vuelva a escribir el simulador utilizando máquinas de estado. Tengo un simulador de conjunto de instrucciones, no necesariamente, completamente, basado en una máquina de estados, pero podría darle la sensación de lo que estoy hablando. búsqueda de thumbulator en github. Mi nombre de usuario es dwelch67 allí.
si se está acercando a esto desde la perspectiva de un ingeniero eléctrico, es posible que desee ver los opencores. La legibilidad y otras características del hdl pueden ser difíciles pero están disponibles para ser consumidas. verilator y icarus verilog son buenos simuladores de verilog. Me gusta verilator más en parte porque es muy rígido con el análisis de registros y, en segundo lugar, es muy fácil cruzar el límite C / C ++ y HDL para escribir software para hablar con el hardware que se está simulando y otras cosas de tipo reutilizable. Hay una pequeña llamada mcpu o algo parecido que encaja en una página de papel si está impresa. Realmente tienes que envolver la cabeza en cómo escribir un programa con solo una o dos operaciones reales (creo que solo tiene un NOR). Si usted es ingeniero eléctrico y necesita un curso intensivo en digital, los transistores siempre están saturados, básicamente se utilizan como interruptores controlados eléctricamente. Tome un par de ellos con un poco de cableado y otros componentes y puede hacer puertas AND, y OR, agregar un transistor inversor y hacer una puerta NOT que permita NAND y NOR. Querrá aprender sobre máquinas de estado si no lo sabe.
En general, debe comprender la lógica básica Y, O, NO, etc. Conozca las máquinas de estado que funcionan bien con software o hardware, el concepto es el mismo. El restablecimiento y la sincronización son en realidad parte del aprendizaje automático de estados, hacer que la máquina de estados funcione y pensar en términos de cada paso a través de la lógica / código es un ciclo de reloj en la CPU y las variables de estado se usan en cada pase para indicar qué hacer durante ese ciclo de reloj, cuál es el estado actual, y en función del estado actual y las entradas, cuál será el próximo estado, etc.