Commit a8991574 authored by Anthony Bocquet's avatar Anthony Bocquet

"mi01 et sr01"

parent 48030556
.data
valeurs_a db 6dh, 69h, 30h, 31h
valeurs_b dw 6520h, 7473h
valeurs_c dd 6f6f6320h, 0a0d216ch
valeurs_d dq 425ah
.code
mov al, [valeurs_a]
end
\ No newline at end of file
; conversion.asm
;
; MI01 - TP Assembleur 1
;
; Affiche un nombre de 64 bits sous forme lisible
title conversion.asm
extern putchar:near
extern getchar:near
.data
nombre dq 141f069d082h ; Nombre à convertir
chaine db xx dup(?) ; Remplacer xx par la longueur maximale n de la chaîne
.code
; Sous-programme main, automatiquement appelé par le code de
; démarrage 'C'
public main
main proc
push rbx
push rsi
push rdi
sub rsp, 32 ; Allocation 'shadow space'
; ************************
; Ajoutez votre code ici !
; ************************
call getchar ; Attente de l'appui sur "Entrée"
add rsp, 32 ; Libération 'shadow space'
push rbx
push rsi
push rdi
ret ; Retour au code de démarrage 'C'
main endp
end
\ No newline at end of file
; hello1.asm
;
; MI01 - TP Assembleur 1
;
; Affiche une cha�ne de caract�res � l'�cran
title hello1.asm
; D�claration des fonctions de biblioth�que 'C' utilis�es dans le programme
extern putchar:near
extern getchar:near
.data
msg db "bonjour tout le monde", 0
; Ajoutez les variables msg et longueur ici
.code
; Sous-programme main, automatiquement appel� par le code de
; d�marrage 'C'
public main
main proc
push rbx ; Sauvegarde pour le code 'C'
sub rsp, 32 ; Allocation shadow space
mov rbx, 0
; On suppose que la longueur de la cha�ne est non nulle
; => pas de test de la condition d'arr�t au d�part
suivant: movzx ecx, byte ptr[rbx + msg]
mov esi, ecx
call putchar ; Appel de putchar, caract�re dans ecx
inc rbx ; Caract�re suivant
cmp esi, 0 ; Toute la longueur ?
jne suivant ; si non, passer au suivant
call getchar ; Attente de l'appui sur "Entr�e"
add rsp, 32 ; Lib�ration shadow space
pop rbx ; Restituttion de rbx sauvegard�
ret ; Retour au code de d�marrage 'C'
main endp
end
\ No newline at end of file
; programme.asm
;
; MI01 - TP Assembleur 1
;
; Affiche un caractère à l'écran
title programme.asm
; Déclaration des fonctions de bibliothèque 'C' utilisées dans le programme
extern putchar:near
extern getchar:near
.data
cara db 'A'
.code
; Sous-programme main, automatiquement appelé par le code de
; démarrage 'C'
public main
main proc
sub rsp, 32 ; Nécessaire pour les appels
; de fonction (shadow space)
; Conversion du caractère en un double mot
movzx ecx, byte ptr[cara]
; Appel à la fonction de bibliothèque 'C' int putchar(int c)
; pour afficher un caractère. La taille du type C 'int'
; est de 32 bits. Le caractère doit être fourni
; dans le registre ecx.
; Attention : rax, rcx, rdx, r8, r9, r10, r11 peuvent être modifiés
; par putchar !
call putchar ; Appel de putchar
; Appel à la fonction de bibliothèque 'C' int getchar(void)
call getchar ; Attente de l'appui sur "Entrée"
add rsp, 32 ; Libération du shadow space
ret ; Retour au code de démarrage 'C'
main endp
end
\ No newline at end of file

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Express 2012 for Windows Desktop
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tp1", "tp1.vcxproj", "{BBAC34F1-4560-4F67-BA57-8B1DA55F531C}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64
Release|x64 = Release|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{BBAC34F1-4560-4F67-BA57-8B1DA55F531C}.Debug|x64.ActiveCfg = Debug|x64
{BBAC34F1-4560-4F67-BA57-8B1DA55F531C}.Debug|x64.Build.0 = Debug|x64
{BBAC34F1-4560-4F67-BA57-8B1DA55F531C}.Release|x64.ActiveCfg = Release|x64
{BBAC34F1-4560-4F67-BA57-8B1DA55F531C}.Release|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{BBAC34F1-4560-4F67-BA57-8B1DA55F531C}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<RootNamespace>ia32tp1</RootNamespace>
<ProjectName>tp1</ProjectName>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v110</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v110</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v110</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v110</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
<Import Project="$(VCTargetsPath)\BuildCustomizations\masm.props" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<LinkIncremental>false</LinkIncremental>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<PrecompiledHeader>
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalDependencies>msvcrt.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<PrecompiledHeader>
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalDependencies>msvcrt.lib;%(AdditionalDependencies)</AdditionalDependencies>
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
<LargeAddressAware>false</LargeAddressAware>
</Link>
<MASM>
<UseSafeExceptionHandlers>false</UseSafeExceptionHandlers>
</MASM>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<PrecompiledHeader>
</PrecompiledHeader>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<PrecompiledHeader>
</PrecompiledHeader>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
<LargeAddressAware>false</LargeAddressAware>
</Link>
</ItemDefinitionGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
<Import Project="$(VCTargetsPath)\BuildCustomizations\masm.targets" />
</ImportGroup>
</Project>
\ No newline at end of file
File added
{
"files.associations": {
"types.h": "c"
}
}
\ No newline at end of file
int main(int argc, char const *argv[],char** envp)
{
return 0;
}
File added
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
int main(int argc, char const *argv[])
{
printf("\nParent id : %d", getppid());
printf("\nEnfant id : %d\n", getpid());
return 0;
}
File added
#include <stdio.h>
main()
{
printf("Bonjour à tous !\n");
}
File added
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
int main(int argc, char const *argv[])
{
pid_t pid;
if(pid = fork()){
printf("Je suis le processus père avec le pid : %d, fils = %d\n", getpid(), pid);
}else{
printf("\nJe suis le processus fils avec le pid : %d\nLe pid de mon père est : %d\n", getpid(), getppid());
}
return 0;
}
File added
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
int main(int argc, char const *argv[])
{
pid_t pid1;
pid_t pid2;
if(!(pid1 = fork())){
printf("Je suis le processus fils avec le pid : %d\nLe pid de mon père est : %d\n", getpid(), getppid());
}else{
if(!(pid2 = fork())){
printf("Je suis le processus fils avec le pid : %d\nLe pid de mon père est : %d\n", getpid(), getppid());
}else{
printf("Je suis le processus père avec le pid : %d\n", getpid());
}
}
return 0;
}
File added
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <signal.h>
#include <stdlib.h>
#include <sys/wait.h>
int main(int argc, char const *argv[])
{
pid_t pid;
if(pid = fork()){
wait(EXIT_SUCCESS);
printf("Je suis le processus père avec le pid : %d\n", getpid());
}else{
printf("\nJe suis le processus fils avec le pid : %d\nLe pid de mon père est : %d\n", getpid(), getppid());
exit(EXIT_SUCCESS);
}
return 0;
}
File added
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <signal.h>
#include <stdlib.h>
#include <sys/wait.h>
int main(int argc, char const *argv[])
{
pid_t pid1;
pid_t pid2;
if(!(pid1 = fork())){
printf("Je suis le processus fils avec le pid : %d\nLe pid de mon père est : %d\n", getpid(), getppid());
exit(EXIT_SUCCESS);
}else{
if(!(pid2 = fork())){
printf("Je suis le processus fils avec le pid : %d\nLe pid de mon père est : %d\n", getpid(), getppid());
exit(EXIT_SUCCESS);
}else{
waitpid(pid1, EXIT_SUCCESS, 0);
waitpid(pid2, EXIT_SUCCESS, 0);
printf("Je suis le processus père avec le pid : %d\n", getpid());
}
}
return 0;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment