This video explains memory access and register instructions in the ARM architecture. The focus is on load and store instructions, highlighting their efficiency and importance in RISC architecture design. Different instruction types (byte, half-word, word) and multiple register load/store instructions are covered.
ldr, ldrb, ldrh, and str, strb, strh are used for loading (from memory to register) and storing (from register to memory) data in byte, half-word (16-bit), and word (32-bit) sizes.ldm (load multiple) and stm (store multiple) allow efficient loading and storing of multiple registers, particularly useful for stack operations. These have several variants for block copying and stack manipulation.ldm and stm instructions are commonly used with stack operations (push and pop equivalents). The video provides examples of how to save and restore multiple registers to/from the stack.rx, rd) where registers hold memory addresses for load/store operations.Here's the transcription you provided:
[{"start_ms":"5230","end_ms":"8180","text":"acceso y registro de memoria","start_time_text":"0:05"},{"start_ms":"8180","end_ms":"11690","text":"con objetivos utilizar las instrucciones","start_time_text":"0:08"},{"start_ms":"11690","end_ms":"14510","text":"para el acceso de memoria aplicar el","start_time_text":"0:11"},{"start_ms":"14510","end_ms":"19180","text":"modo de direccionamiento de rm","start_time_text":"0:14"},{"start_ms":"19630","end_ms":"22060","text":"recuerde que dijimos que las","start_time_text":"0:19"},{"start_ms":"22060","end_ms":"24390","text":"arquitecturas reese se consideran","start_time_text":"0:22"},{"start_ms":"24390","end_ms":"28149","text":"arquitecturas low store o almacenamiento","start_time_text":"0:24"},{"start_ms":"28149","end_ms":"32168","text":"carga lo que significa que los datos en","start_time_text":"0:28"},{"start_ms":"32169","end_ms":"34629","text":"la memoria externa deben ingresarse al","start_time_text":"0:32"},{"start_ms":"34629","end_ms":"37809","text":"procesador mediante una instrucción para","start_time_text":"0:34"},{"start_ms":"37809","end_ms":"41079","text":"ser utilizados no existen las","start_time_text":"0:37"},{"start_ms":"41079","end_ms":"43149","text":"instrucciones que toman un valor en la","start_time_text":"0:41"},{"start_ms":"43149","end_ms":"45460","text":"memoria lo multiplican por un","start_time_text":"0:43"},{"start_ms":"45460","end_ms":"48909","text":"coeficiente lo agregan a otro registro y","start_time_text":"0:45"},{"start_ms":"48909","end_ms":"51129","text":"luego almacenan los resultados en la","start_time_text":"0:48"},{"start_ms":"51129","end_ms":"54070","text":"memoria con una sola instrucción","start_time_text":"0:51"},{"start_ms":"54070","end_ms":"57190","text":"para los diseñadores de hardware esto se","start_time_text":"0:54"},{"start_ms":"57190","end_ms":"59559","text":"considera algo muy bueno ya que algunas","start_time_text":"0:57"},{"start_ms":"59559","end_ms":"61870","text":"arquitecturas antiguas tenían tantas","start_time_text":"0:59"},{"start_ms":"61870","end_ms":"64838","text":"opciones para cargar y almacenar datos","start_time_text":"1:01"},{"start_ms":"64839","end_ms":"67150","text":"que se hizo muy difícil construir el","start_time_text":"1:04"},{"start_ms":"67150","end_ms":"70420","text":"procesador sin introducir un error en la","start_time_text":"1:07"},{"start_ms":"70420","end_ms":"71880","text":"lógica","start_time_text":"1:10"},{"start_ms":"71880","end_ms":"75539","text":"la cpu rm permite el acceso directo a","start_time_text":"1:11"},{"start_ms":"75539","end_ms":"78509","text":"todas las ubicaciones en la memoria pero","start_time_text":"1:15"},{"start_ms":"78509","end_ms":"80579","text":"se arregla se realizan con instrucciones","start_time_text":"1:18"},{"start_ms":"80579","end_ms":"83490","text":"específicas dado que estas instrucciones","start_time_text":"1:20"},{"start_ms":"83490","end_ms":"86280","text":"cargan el registro con datos de la","start_time_text":"1:23"},{"start_ms":"86280","end_ms":"88950","text":"memoria o almacenan los datos en el","start_time_text":"1:26"},{"start_ms":"88950","end_ms":"91460","text":"registro en la memoria","start_time_text":"1:28"},{"start_ms":"91460","end_ms":"93770","text":"se denominan instrucciones de carga","start_time_text":"1:31"},{"start_ms":"93770","end_ms":"96770","text":"almacenamiento esta es una de las","start_time_text":"1:33"},{"start_ms":"96770","end_ms":"100159","text":"secciones más para dominar el tema de la","start_time_text":"1:36"},{"start_ms":"100159","end_ms":"102770","text":"programación el lenguaje ensamblador a","start_time_text":"1:40"},{"start_ms":"102770","end_ms":"104659","text":"rm","start_time_text":"1:42"},{"start_ms":"104659","end_ms":"107450","text":"antes de embarcarnos en el estudio de","start_time_text":"1:44"},{"start_ms":"107450","end_ms":"109249","text":"las instrucciones de carga y","start_time_text":"1:47"},{"start_ms":"109249","end_ms":"112789","text":"almacenamiento del rm debemos tener en","start_time_text":"1:49"},{"start_ms":"112789","end_ms":"115100","text":"cuenta el hecho de que todas las","start_time_text":"1:52"},{"start_ms":"115100","end_ms":"118819","text":"instrucciones del aire me son de 32 bit","start_time_text":"1:55"},{"start_ms":"118819","end_ms":"122359","text":"de ancho como se ha visto en sesiones","start_time_text":"1:58"},{"start_ms":"122359","end_ms":"125420","text":"anteriores la instrucción de tamaño fijo","start_time_text":"2:02"},{"start_ms":"125420","end_ms":"127700","text":"es una de las características más","start_time_text":"2:05"},{"start_ms":"127700","end_ms":"133060","text":"importantes de la arquitectura risc","start_time_text":"2:07"},{"start_ms":"134890","end_ms":"139150","text":"la instrucción el df le dice a la cpu","start_time_text":"2:14"},{"start_ms":"139150","end_ms":"143800","text":"que en el registro r de carga o lea una","start_time_text":"2:19"},{"start_ms":"143800","end_ms":"148000","text":"palabra 32 bits o cuatro by de datos","start_time_text":"2:23"},{"start_ms":"148000","end_ms":"151330","text":"desde una ubicación de memoria apuntada","start_time_text":"2:28"},{"start_ms":"151330","end_ms":"153630","text":"por rx","start_time_text":"2:31"},{"start_ms":"153630","end_ms":"156120","text":"dado que cada ubicación de memoria puede","start_time_text":"2:33"},{"start_ms":"156120","end_ms":"160320","text":"contener sólo un by recuerde a rm es una","start_time_text":"2:36"},{"start_ms":"160320","end_ms":"163710","text":"cpu direccionable por baile y lo","start_time_text":"2:40"},{"start_ms":"163710","end_ms":"167400","text":"registro de la cpu tiene 32 bits de","start_time_text":"2:43"},{"start_ms":"167400","end_ms":"173280","text":"ancho el ldl traerá 4 by de datos es","start_time_text":"2:47"},{"start_ms":"173280","end_ms":"175980","text":"decir cuatro ubicaciones de memoria","start_time_text":"2:53"},{"start_ms":"175980","end_ms":"179460","text":"consecutivas las ubicaciones pueden","start_time_text":"2:55"},{"start_ms":"179460","end_ms":"183090","text":"estar en la rango una memoria flash o","start_time_text":"2:59"},{"start_ms":"183090","end_ms":"186560","text":"registro de entrada y salida por ejemplo","start_time_text":"3:03"},{"start_ms":"186560","end_ms":"190620","text":"la instrucción que le dé el espacio es","start_time_text":"3:06"},{"start_ms":"190620","end_ms":"192400","text":"reciente","start_time_text":"3:10"},{"start_ms":"192400","end_ms":"196780","text":"como r5 copia el contenido de las","start_time_text":"3:12"},{"start_ms":"196780","end_ms":"200379","text":"ubicaciones de memoria apuntada por r 5","start_time_text":"3:16"},{"start_ms":"200379","end_ms":"203890","text":"en el registro es reciente","start_time_text":"3:20"},{"start_ms":"203890","end_ms":"207310","text":"r 5 proporciona la dirección base de la","start_time_text":"3:23"},{"start_ms":"207310","end_ms":"210730","text":"memoria en la que contiene los datos por","start_time_text":"3:27"},{"start_ms":"210730","end_ms":"219720","text":"lo tanto cierre 5 es igual a 0 x 40 000","start_time_text":"3:30"},{"start_ms":"219720","end_ms":"224860","text":"200 la cpu buscará el contenido de las","start_time_text":"3:39"},{"start_ms":"224860","end_ms":"233190","text":"ubicaciones de memoria 0 x 40 000 200","start_time_text":"3:44"},{"start_ms":"233190","end_ms":"250160","text":"0 x 40 000 20 1,0 x 40 000 20 2,0 x 40","start_time_text":"3:53"},{"start_ms":"250160","end_ms":"255270","text":"000 203 después de ejecutar la","start_time_text":"4:10"},{"start_ms":"255270","end_ms":"257989","text":"instrucción guerra 7 tendrá el valor de","start_time_text":"4:15"},{"start_ms":"257989","end_ms":"267140","text":"0 x c 5 a 2 28 15","start_time_text":"4:17"},{"start_ms":"268580","end_ms":"270340","text":"las instrucciones de carga","start_time_text":"4:28"},{"start_ms":"270340","end_ms":"274039","text":"almacenamiento pueden operar en datos","start_time_text":"4:30"},{"start_ms":"274039","end_ms":"280300","text":"más pequeños agregando b&h al alcohol","start_time_text":"4:34"},{"start_ms":"280300","end_ms":"284409","text":"la instrucción l de r&b le indica a la","start_time_text":"4:40"},{"start_ms":"284409","end_ms":"288460","text":"cpu que copie un by desde la dirección","start_time_text":"4:44"},{"start_ms":"288460","end_ms":"291970","text":"de memoria apuntada por el contenido del","start_time_text":"4:48"},{"start_ms":"291970","end_ms":"296229","text":"registro rx y lo copié al by menos","start_time_text":"4:51"},{"start_ms":"296229","end_ms":"299710","text":"significativo de rd","start_time_text":"4:56"},{"start_ms":"299710","end_ms":"303190","text":"las posiciones no utilizadas de r de los","start_time_text":"4:59"},{"start_ms":"303190","end_ms":"306250","text":"24 bits más significativos son","start_time_text":"5:03"},{"start_ms":"306250","end_ms":"308670","text":"rellenados con cero","start_time_text":"5:06"},{"start_ms":"308670","end_ms":"310830","text":"hay situaciones en las que no","start_time_text":"5:08"},{"start_ms":"310830","end_ms":"313890","text":"necesitamos incorporar los 4 by de datos","start_time_text":"5:10"},{"start_ms":"313890","end_ms":"317280","text":"un registro asociado al periférico o a","start_time_text":"5:13"},{"start_ms":"317280","end_ms":"321810","text":"rt transmisor receptor asíncrono","start_time_text":"5:17"},{"start_ms":"321810","end_ms":"325950","text":"universal es un ejemplo de estos casos","start_time_text":"5:21"},{"start_ms":"325950","end_ms":"330090","text":"los registros de té son generalmente de","start_time_text":"5:25"},{"start_ms":"330090","end_ms":"333330","text":"8 bits y ocupan sólo una ubicación de","start_time_text":"5:30"},{"start_ms":"333330","end_ms":"336530","text":"espacio de memoria entrada/salida","start_time_text":"5:33"},{"start_ms":"336530","end_ms":"341000","text":"mapeada en memoria usando l de r&b","start_time_text":"5:36"},{"start_ms":"341000","end_ms":"345090","text":"podemos llevar al registro de la cpu un","start_time_text":"5:41"},{"start_ms":"345090","end_ms":"347580","text":"solo byte de datos de los registros o","start_time_text":"5:45"},{"start_ms":"347580","end_ms":"349230","text":"arte","start_time_text":"5:47"},{"start_ms":"349230","end_ms":"351870","text":"esta es una instrucción ampliamente","start_time_text":"5:49"},{"start_ms":"351870","end_ms":"354770","text":"utilizada para acceder a los puertos","start_time_text":"5:51"},{"start_ms":"354770","end_ms":"359120","text":"periféricos de 8 bits","start_time_text":"5:54"},{"start_ms":"360080","end_ms":"364699","text":"la instrucción ld efe h le indica al","start_time_text":"6:00"},{"start_ms":"364699","end_ms":"368259","text":"procesador que copie una media palabra","start_time_text":"6:04"},{"start_ms":"368259","end_ms":"372169","text":"16 bit o 2 by desde una dirección de","start_time_text":"6:08"},{"start_ms":"372169","end_ms":"375830","text":"memoria apuntada por rx en los 16 bits","start_time_text":"6:12"},{"start_ms":"375830","end_ms":"380030","text":"menos significativos de rd tal como en","start_time_text":"6:15"},{"start_ms":"380030","end_ms":"382879","text":"el caso anterior los bits no utilizados","start_time_text":"6:20"},{"start_ms":"382879","end_ms":"387500","text":"serán rellenados con 0 la instrucción","start_time_text":"6:22"},{"start_ms":"387500","end_ms":"391129","text":"str le indica al procesador que almacene","start_time_text":"6:27"},{"start_ms":"391129","end_ms":"394819","text":"copie el contenido del registro rx a una","start_time_text":"6:31"},{"start_ms":"394819","end_ms":"397250","text":"dirección de memoria apuntada por","start_time_text":"6:34"},{"start_ms":"397250","end_ms":"401210","text":"registro rd note que registro de origen","start_time_text":"6:37"},{"start_ms":"401210","end_ms":"404150","text":"rx está ubicado antes del registro","start_time_text":"6:41"},{"start_ms":"404150","end_ms":"407840","text":"utilizado para el destino r de lo cual","start_time_text":"6:44"},{"start_ms":"407840","end_ms":"409729","text":"es lo inverso utilizado en las","start_time_text":"6:47"},{"start_ms":"409729","end_ms":"412909","text":"instrucciones de carga dado que los","start_time_text":"6:49"},{"start_ms":"412909","end_ms":"415729","text":"registros del procesador son de 32 bits","start_time_text":"6:52"},{"start_ms":"415729","end_ms":"419509","text":"de ancho 4 by será necesario cuatro","start_time_text":"6:55"},{"start_ms":"419509","end_ms":"422180","text":"posiciones consecutivas de la memoria","start_time_text":"6:59"},{"start_ms":"422180","end_ms":"426199","text":"para ser almacenados las ubicaciones de","start_time_text":"7:02"},{"start_ms":"426199","end_ms":"430129","text":"memoria deben ser escribirle como la s","start_time_text":"7:06"},{"start_ms":"430129","end_ms":"432350","text":"run","start_time_text":"7:10"},{"start_ms":"432350","end_ms":"435680","text":"en la diapositiva tenemos de ejemplo la","start_time_text":"7:12"},{"start_ms":"435680","end_ms":"436730","text":"instrucción","start_time_text":"7:15"},{"start_ms":"436730","end_ms":"442010","text":"str espacio r 3 r se copiará el","start_time_text":"7:16"},{"start_ms":"442010","end_ms":"445400","text":"contenido de r 3 en las direcciones","start_time_text":"7:22"},{"start_ms":"445400","end_ms":"449300","text":"apuntada por rs y jerséis contiene la","start_time_text":"7:25"},{"start_ms":"449300","end_ms":"451009","text":"dirección de inicio","start_time_text":"7:29"},{"start_ms":"451009","end_ms":"459050","text":"serán utilizadas desde 0 x 40 000 200","start_time_text":"7:31"},{"start_ms":"459050","end_ms":"466689","text":"hasta 0 x 4 0 0 0 0 2 0 3","start_time_text":"7:39"},{"start_ms":"469050","end_ms":"472020","text":"de manera similar","start_time_text":"7:49"},{"start_ms":"472020","end_ms":"478080","text":"l de r&b y l de rh las instrucciones s","start_time_text":"7:52"},{"start_ms":"478080","end_ms":"481770","text":"trv y str h","start_time_text":"7:58"},{"start_ms":"481770","end_ms":"487039","text":"trabajan con 1 y 2 vice respectivamente","start_time_text":"8:01"},{"start_ms":"489070","end_ms":"491920","text":"veamos ahora cómo cargar y guardar","start_time_text":"8:09"},{"start_ms":"491920","end_ms":"495900","text":"múltiples registros","start_time_text":"8:11"},{"start_ms":"496700","end_ms":"500270","text":"rm tiene dos instrucciones para cargar y","start_time_text":"8:16"},{"start_ms":"500270","end_ms":"504500","text":"almacenar múltiples registros ldm para","start_time_text":"8:20"},{"start_ms":"504500","end_ms":"509330","text":"cargar y stm para el almacenamiento","start_time_text":"8:24"},{"start_ms":"509330","end_ms":"512029","text":"estas instrucciones son usadas para","start_time_text":"8:29"},{"start_ms":"512029","end_ms":"514490","text":"almacenar registro en la pila del","start_time_text":"8:32"},{"start_ms":"514490","end_ms":"517669","text":"programa esp y para copiar bloques de","start_time_text":"8:34"},{"start_ms":"517669","end_ms":"519200","text":"datos","start_time_text":"8:37"},{"start_ms":"519200","end_ms":"521599","text":"cada una de estas instrucciones tiene","start_time_text":"8:39"},{"start_ms":"521599","end_ms":"524930","text":"cuatro variantes la sintaxis está","start_time_text":"8:41"},{"start_ms":"524930","end_ms":"528800","text":"formada por el operador o p luego la","start_time_text":"8:44"},{"start_ms":"528800","end_ms":"532540","text":"variante seguido de registro destino rd","start_time_text":"8:48"},{"start_ms":"532540","end_ms":"535339","text":"y luego el listado de registro que","start_time_text":"8:52"},{"start_ms":"535339","end_ms":"538640","text":"deseamos cargar o almacenar puede ser","start_time_text":"8:55"},{"start_ms":"538640","end_ms":"544130","text":"ldm y stm las variantes la vemos en la","start_time_text":"8:58"},{"start_ms":"544130","end_ms":"547029","text":"tabla cada variante tiene dos nombres","start_time_text":"9:04"},{"start_ms":"547029","end_ms":"550130","text":"equivalente uno para copiar bloque y","start_time_text":"9:07"},{"start_ms":"550130","end_ms":"553160","text":"otro para tipo de pila","start_time_text":"9:10"},{"start_ms":"553160","end_ms":"556339","text":"por ejemplo la instrucción","start_time_text":"9:13"},{"start_ms":"556339","end_ms":"561350","text":"ld m ya tiene la misma funcionalidad que","start_time_text":"9:16"},{"start_ms":"561350","end_ms":"562639","text":"la instrucción","start_time_text":"9:21"},{"start_ms":"562639","end_ms":"568550","text":"ld m fd y stm debe es exactamente la","start_time_text":"9:22"},{"start_ms":"568550","end_ms":"572800","text":"misma instrucción que s tmf d","start_time_text":"9:28"},{"start_ms":"572800","end_ms":"575350","text":"el parámetro opcional símbolo de","start_time_text":"9:32"},{"start_ms":"575350","end_ms":"578740","text":"admiración de cierre especifica que el","start_time_text":"9:35"},{"start_ms":"578740","end_ms":"582190","text":"registro destino heredé debe modificarse","start_time_text":"9:38"},{"start_ms":"582190","end_ms":"584279","text":"después de que los registros son","start_time_text":"9:42"},{"start_ms":"584279","end_ms":"587649","text":"almacenados las variantes más comunes","start_time_text":"9:44"},{"start_ms":"587649","end_ms":"590480","text":"son s tmf de i","start_time_text":"9:47"},{"start_ms":"590480","end_ms":"593459","text":"ld efe","start_time_text":"9:50"},{"start_ms":"593459","end_ms":"595949","text":"las cuales usaremos más adelante en la","start_time_text":"9:53"},{"start_ms":"595949","end_ms":"599250","text":"vídeo clase de saltos y comparaciones","start_time_text":"9:55"},{"start_ms":"599250","end_ms":"601710","text":"estas instrucciones son utilizadas para","start_time_text":"9:59"},{"start_ms":"601710","end_ms":"605160","text":"meter un registro a la pila del programa","start_time_text":"10:01"},{"start_ms":"605160","end_ms":"608880","text":"y después regresar los sacándolo de la","start_time_text":"10:05"},{"start_ms":"608880","end_ms":"611139","text":"pila poco","start_time_text":"10:08"},{"start_ms":"611139","end_ms":"615649","text":"s tmf de realiza el puig","start_time_text":"10:11"},{"start_ms":"615649","end_ms":"619889","text":"ld efe de hace el pop","start_time_text":"10:15"},{"start_ms":"619889","end_ms":"623489","text":"en linux el compilador ce siempre usa","start_time_text":"10:19"},{"start_ms":"623489","end_ms":"627019","text":"estas funciones para acceder a la pila","start_time_text":"10:23"},{"start_ms":"627019","end_ms":"630929","text":"en la porción de código presentado en la","start_time_text":"10:27"},{"start_ms":"630929","end_ms":"634559","text":"diapositiva muestra cómo puede el","start_time_text":"10:30"},{"start_ms":"634559","end_ms":"637259","text":"programador guardar el contenido de lo","start_time_text":"10:34"},{"start_ms":"637259","end_ms":"641999","text":"registro desde cero hasta r9 en la pila","start_time_text":"10:37"},{"start_ms":"641999","end_ms":"643949","text":"del programa con la instrucción en la","start_time_text":"10:41"},{"start_ms":"643949","end_ms":"645760","text":"línea 4","start_time_text":"10:43"},{"start_ms":"645760","end_ms":"650830","text":"y luego en las líneas 5 a 8 se realizan","start_time_text":"10:45"},{"start_ms":"650830","end_ms":"653920","text":"ciertas operaciones en la línea final se","start_time_text":"10:50"},{"start_ms":"653920","end_ms":"656230","text":"recuperan los registros a su estado","start_time_text":"10:53"},{"start_ms":"656230","end_ms":"658649","text":"anterior","start_time_text":"10:56"},{"start_ms":"660450","end_ms":"662850","text":"veamos las operaciones que se realizan","start_time_text":"11:00"},{"start_ms":"662850","end_ms":"666300","text":"con estas instrucciones para el caso de","start_time_text":"11:02"},{"start_ms":"666300","end_ms":"671870","text":"l de m&a y la instrucción l d mf de","start_time
acceso y registro de memoria con objetivos utilizar las instrucciones para el acceso de memoria aplicar el modo de direccionamiento de rm recuerde que dijimos que las arquitecturas reese se consideran arquitecturas low store o almacenamiento carga lo que significa que los datos en la memoria externa deben ingresarse al procesador mediante una instrucción para ser utilizados no existen las instrucciones que toman un valor en la memoria lo multiplican por un coeficiente lo agregan a otro registro y luego almacenan los resultados en la memoria con una sola instrucción para los diseñadores de hardware esto se considera algo muy bueno ya que algunas arquitecturas antiguas tenían tantas opciones para cargar y almacenar datos que se hizo muy difícil construir el procesador sin introducir un error en la lógica la cpu rm permite el acceso directo a todas las ubicaciones en la memoria pero se arregla se realizan con instrucciones específicas dado que estas instrucciones cargan el registro con datos de la memoria o almacenan los datos en el registro en la memoria se denominan instrucciones de carga almacenamiento esta es una de las secciones más para dominar el tema de la programación el lenguaje ensamblador a rm antes de embarcarnos en el estudio de las instrucciones de carga y almacenamiento del rm debemos tener en cuenta el hecho de que todas las instrucciones del aire me son de 32 bit de ancho como se ha visto en sesiones anteriores la instrucción de tamaño fijo es una de las características más importantes de la arquitectura risc la instrucción el df le dice a la cpu que en el registro r de carga o lea una palabra 32 bits o cuatro by de datos desde una ubicación de memoria apuntada por rx dado que cada ubicación de memoria puede contener sólo un by recuerde a rm es una cpu direccionable por baile y lo registro de la cpu tiene 32 bits de ancho el ldl traerá 4 by de datos es decir cuatro ubicaciones de memoria consecutivas las ubicaciones pueden estar en la rango una memoria flash o registro de entrada y salida por ejemplo la instrucción que le dé el espacio es reciente como r5 copia el contenido de las ubicaciones de memoria apuntada por r 5 en el registro es reciente r 5 proporciona la dirección base de la memoria en la que contiene los datos por lo tanto cierre 5 es igual a 0 x 40 000 200 la cpu buscará el contenido de las ubicaciones de memoria 0 x 40 000 200 0 x 40 000 20 1,0 x 40 000 20 2,0 x 40 000 203 después de ejecutar la instrucción guerra 7 tendrá el valor de 0 x c 5 a 2 28 15 las instrucciones de carga almacenamiento pueden operar en datos más pequeños agregando b&h al alcohol la instrucción l de r&b le indica a la cpu que copie un by desde la dirección de memoria apuntada por el contenido del registro rx y lo copié al by menos significativo de rd las posiciones no utilizadas de r de los 24 bits más significativos son rellenados con cero hay situaciones en las que no necesitamos incorporar los 4 by de datos un registro asociado al periférico o a rt transmisor receptor asíncrono universal es un ejemplo de estos casos los registros de té son generalmente de 8 bits y ocupan sólo una ubicación de espacio de memoria entrada/salida mapeada en memoria usando l de r&b podemos llevar al registro de la cpu un solo byte de datos de los registros o arte esta es una instrucción ampliamente utilizada para acceder a los puertos periféricos de 8 bits la instrucción ld efe h le indica al procesador que copie una media palabra 16 bit o 2 by desde una dirección de memoria apuntada por rx en los 16 bits menos significativos de rd tal como en el caso anterior los bits no utilizados serán rellenados con 0 la instrucción str le indica al procesador que almacene copie el contenido del registro rx a una dirección de memoria apuntada por registro rd note que registro de origen rx está ubicado antes del registro utilizado para el destino r de lo cual es lo inverso utilizado en las instrucciones de carga dado que los registros del procesador son de 32 bits de ancho 4 by será necesario cuatro posiciones consecutivas de la memoria para ser almacenados las ubicaciones de memoria deben ser escribirle como la s run en la diapositiva tenemos de ejemplo la instrucción str espacio r 3 r se copiará el contenido de r 3 en las direcciones apuntada por rs y jerséis contiene la dirección de inicio serán utilizadas desde 0 x 40 000 200 hasta 0 x 4 0 0 0 0 2 0 3 de manera similar l de r&b y l de rh las instrucciones s trv y str h trabajan con 1 y 2 vice respectivamente veamos ahora cómo cargar y guardar múltiples registros rm tiene dos instrucciones para cargar y almacenar múltiples registros ldm para cargar y stm para el almacenamiento estas instrucciones son usadas para almacenar registro en la pila del programa esp y para copiar bloques de datos cada una de estas instrucciones tiene cuatro variantes la sintaxis está formada por el operador o p luego la variante seguido de registro destino rd y luego el listado de registro que deseamos cargar o almacenar puede ser ldm y stm las variantes la vemos en la tabla cada variante tiene dos nombres equivalente uno para copiar bloque y otro para tipo de pila por ejemplo la instrucción ld m ya tiene la misma funcionalidad que la instrucción ld m fd y stm debe es exactamente la misma instrucción que s tmf d el parámetro opcional símbolo de admiración de cierre especifica que el registro destino heredé debe modificarse después de que los registros son almacenados las variantes más comunes son s tmf de i ld efe las cuales usaremos más adelante en la vídeo clase de saltos y comparaciones estas instrucciones son utilizadas para meter un registro a la pila del programa y después regresar los sacándolo de la pila poco s tmf de realiza el puig ld efe de hace el pop en linux el compilador ce siempre usa estas funciones para acceder a la pila en la porción de código presentado en la diapositiva muestra cómo puede el programador guardar el contenido de lo registro desde cero hasta r9 en la pila del programa con la instrucción en la línea 4 y luego en las líneas 5 a 8 se realizan ciertas operaciones en la línea final se recuperan los registros a su estado anterior veamos las operaciones que se realizan con estas instrucciones para el caso de l de m&a y la instrucción l d mf de primero se carga la dirección contenida en rd y luego se hace un ciclo for para cada uno de los elementos en la lista de registro dentro de ese ciclo se carga en el registro el valor de memoria en la dirección r luego se incrementa en 4 way 32 bit la dirección guardada en at en las instrucciones s tm debe y stm efe de las operaciones realizadas son las siguientes primero cargamos en la variable r el valor de dirección especificado en rd a partir de esa dirección para cada registro en la lista de registro se hace disminuir la dirección de memoria en 4 by leer el valor de esa posición de memoria y cargarlo al registro para ambos casos si se ha usado el parámetro opcional símbolo de admiración el valor final de hacer se carga en el registro rd cambias tus pensamientos y cambiarás tu mundo hasta la próxima