Code :
with Ada.Text_Io, Ada.Integer_Text_Io; use Ada; with System.Machine_Code; use System.Machine_Code; package body Pp.Pp_Io is use Interfaces, Ascii; procedure Put(Msg : in Message_Type; Value : in Unsigned_8) is begin Asm("mov %1, %%al" & LF & HT & "mov %0, %%dx" & LF & HT & "out %%al, %%dx", Inputs => (Unsigned_16'Asm_Input ("g", LP+Message_Type'Pos(Msg)), Unsigned_8'Asm_Input ("a", Value)), Volatile => True); end Put; procedure Get(Msg : in Message_Type; Value : out Unsigned_8) is begin Asm("mov %1,%%dx" & LF & HT & "in %%dx,%%al" & LF & HT & "mov %0, %%al", Inputs => (Unsigned_16'Asm_Input ("g", LP+Message_Type'Pos(Msg))), Outputs => Unsigned_8'Asm_Output ("=a", Value), Volatile => True); end Get; end Pp.Pp_Io;
|