Esto debería ir en web o dudas generales..
Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
Mostrar Mensajes Menúmivariable dd 0
mivariable dw 0
mivariable db 10
mov eax, edx ; Mueve el contenido del registro EDX al registro EAX
mov [mivariable], eax ; mueve el contenido de EAX a la variable "mivariable"
mov [mivariable], [otravariable]
add eax, 10 ; se suma al valor que contenga EAX 10.
add [mivariable], 5; se le suma al valor de la variable 10
SUB
al igual que ADD suma, SUB resta, su uso es igual.inc eax ; incrementa el valor de EAX en 1
inc [mivariable] ; incrementa el valor de mivariable en 1
mov [mivariable], 2
mov eax, 2
mul [mivariable] ; Multiplica 2*2.
; resultado en el registro EAX y EDX
mov [var], 2
mov eax, 10
div [var]
; EAX = resultado
; EDX = residuo
push eax
push [mivar]
mov eax, 1
jmp Etiqueta ; saltamos
mov eax, 2 ; esto no se ejecuta
Etiqueta:
; EAX = 1
...
...
add esp, 12
ret
http://www.jegerlehner.ch/intel/IntelCodeTable.pdf
cmp eax, edx
je Iguales
mov eax,0
ret
Iguales:
mov eax,1
ret
xor eax, edx
and ebx, ecx
include 'win32ax.inc'
.data
; AQUI VAN LAS VARIABLES
.code
start:
; AQUI EL CODIGO
; AL FINALIZAR EL CODIGO PODEMOS DECLARAR MAS VARIABLES.
.end start
include 'win32ax.inc'
entry start
section '.data' readable writeable
; AQUI VAN LAS VARIABLES
section '.code' executable readable writeable
start:
; AQUI EL CODIGO
; AL FINALIZAR EL CODIGO PODEMOS DECLARAR MAS VARIABLES.
section '.idata' import data readable writeable
; AQUI VAN LAS IMPORTACIONES DE LAS FUNCIONES QUE VAMOS A USAR.
include 'win32ax.inc' ; incluimos la librería para podes usar las macros SECTION, LIBRARY y ETC.
entry start
section '.data' readable writeable ; sección de datos
Mensaje db 'Hola dese FASM!',0 ; debemos poner el byte nulo '0', para que sea una cadena.
section '.code' executable readable writeable ; sección de codigo
start:
push 0 ; metemos el último parametro de la api
push Titulo ; metemos el 3 parametro
push Mensaje ; metemos el 2 parametro
push 0 ; metemos el 1 parametro
call [MessageBoxA] ; llamamos a la API.
ret ; retornamos la funcion. Se acbaa el programa.
Titulo db 'ElHacker.net',0
section '.idata' import data readable writeable ; tabla de importaciones
library USER32, 'USER32.DLL' ; librería donde se encuentra la API
import USER32,\
MessageBoxA, 'MessageBoxA' ; Función que vamos a usar
https://es.wikipedia.org/wiki/Last_in,_first_out
Num1 dd 2
Num2 dd 3
mov eax, [Num1]
add eax, [Num2]
push 0
push 0
push eax
push 0
call [MessageBoxA]
; Suponiendo que en la variable buffer tenemos la cadena 'hola'
mov al, byte[buffer] ; AL = 'h'
mov ah, byte[buffer+1] ; AH = 'o'
mov al, byte[ecx] ; mueve el byte al que apunta ECX a AL.
mov DX, word[buffer]
mov eax, DWORD[buffer]
mov eax, [buffer] ; esto es igual a la linea anterior
Bucle:
push 0 ; estamos dentro del bucle.
push 0
push 0
push 0
call [MessageBoxA]
jmp Bucle ; saltamos a la etiqueta bucle de nuevo.
include 'win32ax.inc' ; incluimos la librería para podes usar las macros SECTION, LIBRARY y ETC.
.data
var dd 5
Texto db 'Esto se mostrara 5 veces.',0
.code
start:
mov ecx, [var] ; movemos el valor de la variable a ECX
Bucle:
push ecx ; guardamos el valor de ECX
push 0
push 0
push Texto
push 0
call [MessageBoxA] ; llamamos a la API
pop ecx ; Recuperamos el valor de ECX
dec ecx ; decrementamos el valor de ECX
cmp ecx, 0 ; Comparamos ECX con 0
jne Bucle ; Si la comparación no es igual saltamos de nuevo a la etiqueta bucle
ret ; retornamos la funcion y terminamos el programa.
.end start
include 'win32ax.inc' ; incluimos la librería para podes usar las macros SECTION, LIBRARY y ETC.
.data
var dd 5
Texto db 'Este mensaje se ejecuta desde la funcion',0
Titulo db 'ElHacker.net',0
.code
start:
push Texto
push Titulo
call Mensaje
ret
Mensaje: ; Funcion mensage.
push ebp ; Guardamos la base de la pila
mov ebp, esp ; movemos la parte alta de la pila a la parte baja.
mov eax, dword[ebp+8] ; movemos el primer parametro a EAX
mov ebx, dword[ebp+12] ; segundo parametro a EBX
push 0 ; introducimos los parametros d ela API
push eax
push ebx
push 0
call [MessageBoxA] ; llamamos a la API
pop ebp ; restauramos el valor de EBP
add esp,12 ; se restaura el registro para que no se rompa la pila
ret
.end start
add esp,12
mov eax, dword[ebp+8] ; movemos el primer parametro a EAX
mov ebx, dword[ebp+12] ; segundo parametro a EBX
0040102A |. 09C0 OR EAX,EAX
include 'win32ax.inc' ; incluimos la librería para podes usar las macros SECTION, LIBRARY y ETC.
.data
var dd 5
Texto db 'Esto se mostrara 5 veces.',0
.code
start:
mov ecx, [var] ; movemos el valor de la variable a ECX
Bucle:
push ecx ; guardamos el valor de ECX
push 0
push 0
push Texto
push 0
call [MessageBoxA] ; llamamos a la API
pop ecx ; Recuperamos el valor de ECX
dec ecx ; decrementamos el valor de ECX
cmp ecx, 0 ; Comparamos ECX con 0
jne Bucle ; Si la comparación no es igual saltamos de nuevo a la etiqueta bucle
ret ; retornamos la funcion y terminamos el programa.
.end start
0040201D |.^75 E7 \JNZ SHORT Tutorial.00402006
00402011 |. FF15 3C304000 |CALL DWORD PTR DS:[<&USER32.MessageBoxA>; \MessageBoxA
#include <stdio.h>
#include <stdlib.h>
#include "iostream"
using namespace std;
int main()
{
int matriz[5][5]={{0}},i,j;
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
Repe:
printf("Digite el valor del lugar[%d][%d] de la matriz\n",i+1,j+1);
scanf("%d", &matriz[i][j]);
if (matriz[i][j] > 200 || matriz[i][j] < 1)
{
printf("Valor invalido, ingreselo de nuevo.\n");
goto Repe;
}
}
}
printf("\n\t");
printf("estos son los valores de la matriz\n\n");
printf("\t\t MATRIZ ORDENADA");
for(i=0;i<5;i++)
{
printf("\n");
for(j=0;j<5;j++)
{
printf("%6d", matriz[i][j]);
}
}
printf("\n");
system("PAUSE");
}