MdePkg Base.h: Always define ASM_PFX

Some compilers may define __USER_LABEL_PREFIX__ to determine the
prefix used with ASM_PFX. Otherwise, IA32 will use a single underscore
'_' character, and all other architectures will use an empty prefix.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>

git-svn-id: svn://svn.code.sf.net/p/edk2/code/trunk/edk2/MdePkg@16019 6f19259b-4bc3-4df7-8a09-765794883524
MdePkg BaseLib Thunk16: Replace IA32 GAS Thunk16 with NASM version

This is a translation of Ia32/Thunk16.asm to NASM.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>

git-svn-id: svn://svn.code.sf.net/p/edk2/code/trunk/edk2/MdePkg@16020 6f19259b-4bc3-4df7-8a09-765794883524
MdePkg BaseLib Thunk16: Replace X64 GAS Thunk16 with NASM version

This is a translation of X64/Thunk16.asm to NASM.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>

git-svn-id: svn://svn.code.sf.net/p/edk2/code/trunk/edk2/MdePkg@16021 6f19259b-4bc3-4df7-8a09-765794883524
MdePkg BaseLib NASM Thunk16: Use NASM local labels

http://www.nasm.us/doc/nasmdoc3.html#section-3.9

A local label is a label beginning with the period, and it's actual
name is prefixed by the previous non-local label.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>

git-svn-id: svn://svn.code.sf.net/p/edk2/code/trunk/edk2/MdePkg@16022 6f19259b-4bc3-4df7-8a09-765794883524
MdePkg BaseLib NASM Thunk16: Use bits 16 for 16-bit code

By using 'bits 16', we can write code for 16-bit use the actual
assembly syntax rather than 'DB' and sometimes writing code with
seemingly incorrect operands because we know it will run correctly
when the processor is running in 16-bit mode.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>

git-svn-id: svn://svn.code.sf.net/p/edk2/code/trunk/edk2/MdePkg@16023 6f19259b-4bc3-4df7-8a09-765794883524
MdePkg BaseLib NASM Thunk16: Remove remaining 'DB' code

Convert remaining 'DB' code to assembly code by:
* Move instruction immediate data labels to end of instruction
* Use strict keyword to make sure immediate data size is not optimized

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>

git-svn-id: svn://svn.code.sf.net/p/edk2/code/trunk/edk2/MdePkg@16024 6f19259b-4bc3-4df7-8a09-765794883524
MdePkg BaseLib NASM Thunk16: Initialize _16GdtrBase to 0

Previously we were setting it to the start of the GDT in the UEFI
driver's copy of BaseLib. This address is irrelavent, since the C code
will initialize it to the cooresponding address after the Thunk16 code
has been placed in low memory.

Additionally, initializing this was causing a link error for the
XCLANG toolchain.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>

git-svn-id: svn://svn.code.sf.net/p/edk2/code/trunk/edk2/MdePkg@16025 6f19259b-4bc3-4df7-8a09-765794883524