Untitled
raw download clone
C
views 42
,
size 2216 b
// assembly1.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <stdio.h>

#define n 10

int _tmain(int argc, _TCHAR* argv[])
{
	int c=10, a=5, b=0, x[n], *p, i=0, v[n];
	
	/*
	//scrivere assembly in c++
	_asm
	{
		//moltiplicazione con somme ripetute in un ciclo
		mov eax, 0x10;
		mov ebx, 0x3;
		freetraffik: add edx, eax;
		dec ebx;
		jnz freetraffik;

		//if in assembly
		move eax, 24;
		cmp eax, 0;
		jg uno;
		je zero;
		mov ecx, -1;
		jmp fine;

uno:
		mov ecx, 1;
		jmp fine;

zero:
		mov ecx, 0;

fine:

		
		//je -> jump if equal (==)
		//jne -> jump if not equal (!=)
		//jg -> jump if great (>)
		//jl -> jump if less (<)
		//jge -> jump if equal or great (>=)
		//jle -> jump if equal or less (<=)
		

		//scambio di variabili
		mov eax, dword ptr [a];
		mov dword ptr [b], eax;
		mov eax, dword ptr [c];
		mov dword ptr [a], eax;
		mov eax, dword ptr [b];
		mov dword ptr [c], eax;
		mov dword ptr [b], 0;
	}

	//Array in assembly caricato con un puntatore
	for (p=x, i=0; p<x+n; *p=i++, p++);

	int v[n];

	_asm
	{
		lea edi, v;
		mov eax, 0;
ciclo:
		cmp eax, n;
		jge fine;
		move [edi], eax;
		inc eax;
		add edi, 4;
		jmp ciclo;
fine:

	}

	//ordino due numeri
	_asm
	{
		mov eax, 10;
		mov ebx, 20;
		cmp eax, ebx;
		jg maggiore;
		mov ecx, ebx;
		jmp fine;
maggiore:
		mov ecx, eax;
fine:

	}
	
	//caricamento array di INTERI assembly
	_asm
	{
		lea edi, v;
		mov eax, 0;
ciclo:
		cmp eax, 10;
		jge fine;
		mov [edi], eax;
		inc eax;
		add edi, 4;
		jmp ciclo;
fine:

	}
	
	for (i=0; i<n; i++)
		printf("%d\n", v[i]);
	
	//array di char
	char stringa[30];
	gets_s(stringa, 30);
	int l=0;

	_asm
	{
		lea esi, stringa;
		mov ecx, 0;
ciclo:
		mov ah, [esi];
		cmp ah, 0;
		je fine;
		inc ecx;
		inc esi;
		jmp ciclo;
fine:
		mov l, ecx;
	}
	printf("%d\n", l);
	*/

	char stringa[30]="Zorzi se la tira", stringa2[30];
	
	_asm
	{
		lea esi, stringa;
		lea edi, stringa2;
		mov ecx, 0;
ciclo:
		cmp [esi], 32;
		je fine;
		inc ecx;
		inc esi;
		jmp ciclo;
fine:
		cmp ecx, edi;
		je stop;

stop:

	}
}
close fullscreen
Login or Register to edit or fork this paste. It's free.