Você está na página 1de 3

;--------------------------------------------------------------------; Este es un programa que utiliza unicamente las instrucciones mov y lea ;---------------------------------------------------------------------comment * Programa de aprendizaje de uso de instrucciones

* .486 ; Crear un c?digo compatible con procesadores 486 y superiores .model flat, stdcall ; Modelo de memoria de 32 bits option casemap: none ; No "case-sensitive" ; ????????????????????????????????????????????????????????????????????????? ; Agregamos archivos .inc en los que se encuentran los prototipos de rutinas ya preconstruidas y utilizaremos en nuestro programa ; ????????????????????????????????????????????????????????????????????????? include \masm32\include\windows.inc include \masm32\macros\macros.asm include \masm32\include\masm32.inc include \masm32\include\gdi32.inc include \masm32\include\user32.inc include \masm32\include\kernel32.inc include \masm32\include\debug.inc include \masm32\include\msvcrt.inc ; ????????????????????????????????????????????????????????????????????????? ; Agregamos archivos .lib en los que se encuentran los codigos de rutinas ya preconstruidas y que ; utilizaremos en nuestro programa ; ????????????????????????????????????????????????????????????????????????? includelib \masm32\lib\masm32.lib includelib \masm32\lib\gdi32.lib includelib \masm32\lib\user32.lib includelib \masm32\lib\kernel32.lib includelib \masm32\lib\debug.lib ; que

Pgina 1 de 3

includelib \masm32\lib\msvcrt.lib ; ????????????????????????????????????????????????????????????????????????? ; Comienza el segmento de datos ; ????????????????????????????????????????????????????????????????????????? .data variable1 dw ? ; Declaracion de una variable del tipo doble palabra variable2 dw ? ; Declaracion de una variable del tipo doble palabra auxiliar dw ? ; Declaracion de una variable del tipo doble palabra texto1 db "Probando distintos modos de direccionamiento",0 ; ????????????????????????????????????????????????????????????????????????? ; Comienza el segmento de codigo ; ????????????????????????????????????????????????????????????????????????? .code inicio: mov variable1,AAAABBBBh ;se asigna el valor AAAABBBBh a variable1 del tipo doble palabra lea ebx,variable1 ; Cargo en ebx la direccion de memoria de la variable1 mov al,[ebx] ; Transfiero a eax el contenido de lo apuntado por ebx

PrintDec ebx, "Direccion de memoria contenida en ebx" PrintDec al, "Contenido del registro al" PrintDec variable1, "Valor de la variable1" mov variable2,CCCCDDDDh ;se asigna el valor CCCCDDDDh a variable2 del tipo doble palabra lea ebx,variable2 ; Cargo en ebx la direccion de memoria de la variable2 mov al,[ebx] ; Transfiero a eax el contenido de lo apuntado por ebx

PrintDec ebx, "Direccion de memoria contenida en ebx" PrintDec al, "Contenido del registro al" PrintDec variable2, "Valor de la variable2"

mov ax,variable1 ;se carga el valor de variable1 en ax mov auxiliar,ax ; se carga el contenido de ax en auxiliar mov ax,variable2; se carga el contenido de variable2 a ax

Pgina 2 de 3

mov variable1,ax ;se carga el contenido de ax en variable1 mov variable2,auxiliar ;se carga el contenido de auxiliar a variable2 PrintDec variable1, "Contenido de la variable1 despues de la rotacion de valores" PrintDec variable2, "Contenido de la variable2 despues de la rotacion de valores"

mov [variable1+2],FFFFh ;Se carga el valor FFFFh a la parte ms significativa de variable1 lea ebx,variable1 ; cargo en ebx la direccion de memoria de texto1 mov al,[ebx+2] ; Transferencia con direccionamiento relativo PrintHex al, "Contenido del registro al despues de un direccionamiento relativo (ebx+2)"

mov esi,2dh mov al, texto1[esi] ; Transferencia con direccionamiento indexado PrintHex al, "Contenido del registro al despues de un direccionamiento indexado" exit

end inicio

Pgina 3 de 3

Você também pode gostar