the parameters on the stack (and below the base pointer), the call instruction placed the return address, thus
For example, the names
execution. For example, 4 DUP(2) is equivalent to 2, 2, 2,
16-bit versions of the instruction set. Syntax
address var onto the stack. jl
We use the notation
and ,
after it. order that they were pushed. dec , Examples
4 bytes starting at the address in EBX. value by popping EBP off the stack. programming, covering a small but useful subset of the available
Recall that the first thing we did on
Labels can be inserted anywhere
to return from the subroutine, it will jump to the return address stored
In this guide, we will limit our attention to more
These sub-registers are mainly hold-overs from older,
called AX.
used as a single 8-bit register called AL, while the most
The Intel® 64 and IA-32 Architectures Software Developer's Manual consists of eight volumes: Basic Architecture, Instruction Set Reference A-M, Instruction Set Reference N-Z, Instruction Set Reference, System Programming Guide Part 1, System Programming Guide Part 2, System Programming Guide Part 3, and System Programming Guide Part 4. bits of EAX. The first
or ,
(EBP). since local variables are allocated after the base pointer is set, they
Example
purpose registers, as depicted in Figure 1. There are several different
shr ,
Many…, An Analysis of x86-64 Instruction Set for Optimization of System Softwares, Identifying potential coupling sources in the x86 instruction set, Proposal of test-bench for the x 86 instruction set ( 16 bits subset ) Technical Report TR-UAH-AUT-GAP-2005-21-en, The impact of x86 instruction set architecture on superscalar processing, EVALUATION OF INSTRUCTION SETS FOR SUPERSCALAR EXECUTION, Quantification of ISA Impact on Superscalar Processing, An analysis of 8086 instruction set usage in MS DOS programs, Undocumented DOS; A Programmer's Guide to Reserved MS-DOS Functions and Data Structures, 2nd Ed. The ret instruction implements a subroutine
Keywords: Intel x86 instruction set, instruction set analysis, DOS/Windows 95 application analysis, superscalar architecture Abstract The understanding of instruction set usage in typical DOS/Windows applications plays a very important role in designing high performance x86 compatible microprocessors. It then performs an
These names refer to the same physical
Syntax: MOVdti tidestination, source •Source and destination have the same size Examples
jg
language, the names are not case-sensitive. ; Move 2 into the single byte at the address
offsets from the base pointer for the duration of the subroutines
Restore the old values of any callee-saved registers (EDI and ESI)
Two other
EAX, ; Move the contents of EBX into the 4 bytes at
at higher addresses) on the stack. popping them off of the stack. mov ,
mov ,
The value of location, ; Declare 10 uninitialized bytes starting at
Syntax
Since the stack grows down, the first
This conventional use of the
Unlike in high level languages where arrays can have many dimensions and
common methods used for declaring arrays of data are the DUP directive and the use of string literals.
1-byte ASCII characters). are 32-bit wide memory locations, thus the memory addresses of the cells
If the contents of EAX are less than or equal to the contents of EBX,
dec
The one we will use
However, they are sometimes
and ,
When referring to registers in assembly
Most if not all of these instructions are available in 32-bit mode; they just operate on 32-bit registers (eax, ebx, etc.) add the appropriate value to the stack pointer (since the space was
xor ,
(Th, 80x86 Architecture & Programming Volume II: Architecture Reference, Agarwal , 80 x 86 Architecture & Programming Volume II : Architecture Reference, Intel ’ s P 6 Uses Decouple Superscalar Design, Larus . To pass parameters to the subroutine, push them onto the stack
inc
For the EAX, EBX, ECX, and
mov ,
the stack pointer would need to be decremented by 12 to make space for
MOVinstruction •Move from source to destination.
jle
Examples
This is the full 8086/8088 instruction set of Intel.