SlideShare una empresa de Scribd logo
1 de 59
Zena Mohammed
Introduction
• The data-addressing modes include register, immediate, direct, register indirect, base
plus-index, register relative, and base relative-plus-index addressing. The 80386
through the Pentium 4 microprocessors have an additional addressing mode called
scaled-index addressing.
• The program memory-addressing modes include direct, relative, and indirect
addressing.
3–1 DATA-ADDRESSING MODES
• MOV instruction is a common and flexible instruction.
• provides a basis for explanation of data-addressing modes
Figure 3–2 shows all possible variations of the data-addressing modes using MOV.
Direct Data Addressing
Direct addressing occurs in two forms in the microprocessor: direct addressing and
displacement addressing.
• Direct Addressing
Direct addressing with a MOV instruction transfers data between a memory
location, located within the data segment, and the AL (8-bit), AX (16-bit), or EAX
(32-bit) register.
• usually a 3-byte long instruction MOV AL,DATA
• Displacement Addressing
– In 80386 through Pentium 4, this instruction can be up to 7 bytes wide if a 32-bit
register and a 32-bit displacement are specified.
– This type of direct data addressing is much more flexible because most
instructions use it.
• The sequence shown in Example 3–7 loads register BX with the starting address of
the table and it initializes the count, located in register CX, to 50. The OFFSET
directive tells the assembler to load BX with the offset address of memory location
TABLE, not the contents of TABLE.
For example, the MOV BX,DATAS instruction copies the contents of memory location DATAS into BX,
while the MOV BX,OFFSET DATAS instruction copies the offset address DATAS into BX. When the
OFFSET directive is used with the MOV instruction, the assembler calculates the offset address and then
uses a MOV immediate instruction to load the address in the specified 16-bit register.
Addressing Arrays with Base Relative-Plus-Index
• Suppose a file of many records exists in memory, each record with many
elements.
– displacement addresses the file, base register addresses a record, the
index register addresses an element of a record
• Following figure illustrates this very complex form of addressing.
Figure: Base relative-plus-index addressing used to access a FILE that
contains multiple records (REC).
• Scaled-index addressing
 Unique to 80386 - Core2 microprocessors.
 uses two 32-bit registers (a base register and an index register) to access the
memory
 The second register (index) is multiplied by a scaling factor.
 the scaling factor can be 1x, 2x, 4x, 8x
 A scaling factor of is implied and need not be included in the assembly language
instruction (MOV AL,[EBX + ECX]).
 The MOV AX,[ EBX + 2*ECX] and the MOV [4 * ECX ],EDX are examples of
scaled-index instructions.
• RIP Relative Addressing
 Uses the 64-bit instruction pointer register in the 64-bit mode to address a linear
location in the flat memory model.
 Inline assembler program available to Visual does not contain any way of using this
mode or any other 64-bit addressing mode.
 The Microsoft Visual does not at present support developing 64-bit assembly code.
Data Structures
• Used to specify how information is stored in a memory array.
• a template for data
• The start of a structure is identified with the STRUC assembly language directive and
the end with the ENDS statement.
3–2 PROGRAM MEMORY-ADDRESSING MODES
• Used with the JMP (jump) and CALL instructions.
• Consist of three distinct forms:
• direct, relative, and indirect
Direct Program Memory Addressing
• Direct program memory addressing is allowed with the JMP and CALL instructions
to any location in the memory system. With this addressing mode, the offset address
and segment address are stored with the instruction.
• an intersegment jump is a jump to any memory location within the
entire memory system
Relative Program Memory Addressing
• Relative program addressing allows a JMP or CALL instruction to branch for-
ward or backward in the current code segment by bytes.
• In the 80386 and above, the 32-bit displacement allows a branch to any location in
the current code segment by using a displacement value of bytes.
• The 32-bit displacement can be used only in protected mode.
3–3 STACK MEMORY-ADDRESSING MODES
• The stack plays an important role in all microprocessors.
– holds data temporarily and stores return addresses used by procedures
• In 80386 and above, the extended register and extended flags can also be transferred
between registers and the stack.
• A PUSHFD stores the EFLAGS, whereas a PUSHF stores the FLAGS.
• PUSHA and POPA instructions push or pop all except segment registers, on the
stack. Not available on early 8086/8088 processors.
• POPA and PUSHA are not available in 64-bit mode.
• 80386 and above allow words or double-words to be transferred to and from the
stack.
• Data may be pushed onto the stack from any 16-bit register or segment register.
– in 80386 and above, from any 32-bit extended register
• Data may be popped off the stack into any register or any segment register except
CS.
• 80386 and above allow extended registers to be pushed or popped.
– 64-bit mode for Pentium and Core2 does not contain a PUSHA or POPA
instruction
Data Movement Instructions
Introduction
• The data movement instructions include MOV, MOVSX, MOVZX,
PUSH, POP, BSWAP, XCHG, XLAT, IN, OUT, LEA, LDS, LES,
LFS, LGS, LSS, LAHF, SAHF.
• String instructions: MOVS, LODS, STOS, INS, and OUTS.
• The latest data transfer instruction implemented on the Pentium Pro
and above is
the CMOV (conditional move) instruction.
4–1 MOV REVISITED
It may be necessary to interpret machine language programs
generated by an assembler.
Machine Language
• Machine language instructions for the 8086 through the Core2 vary in length from 1
to as many as 13 bytes
• Figure 4–1 The formats of the 8086–Core2 instructions. (a) The 16-bit form and
(b) the 32-bit form.
• 80386 and above assume all instructions are 16-bit mode instructions when the
machine is operated in the real mode (DOS).
• in protected mode (Windows), the upper byte of the descriptor contains the D-bit
that selects either the 16- or 32-bit instruction mode
The Opcode
• Selects the operation (addition, subtraction, etc.,) performed by the microprocessor.
– either 1 or 2 bytes long for most instructions
• Figure 4–2 illustrates the general form of the first opcode byte of many instructions.
– first 6 bits of the first byte are the binary opcode
– remaining 2 bits indicate the direction (D) of the data flow, and indicate
whether the data are a byte or a word (W)
Figure 4–2 Byte 1 of many machine language instructions, showing the position of
the D- and W-bits.
Figure 4–3 Byte 2 of many machine language instructions, showing the position of the
MOD, REG, and R/M fields.
MOD Field.
• Specifies addressing mode (MOD) and whether a
displacement is present with the selected type.
• All 8-bit displacements are sign-extended into
16-bit displacements when the processor executes the instruction.
– if the 8-bit displacement is 00H–7FH (positive),
it is sign-extended to 0000H–007FH before adding to the offset address
– if the 8-bit displacement is 80H–FFH (negative),
it is sign-extended to FF80H–FFFFH
• To sign-extend a number, its sign-bit is copied to the next higher-order byte,
which generates either a 00H or an FFH in the next higher-order byte.
• Some assembler programs do not use the 8-bit displacements and in place
default to all 16-bit displacements.
Register Assignments
TABLE 4–2 MOD field for
the 32-bit instruction mode
(80386–Core2 only).
TABLE 4–3 REG and
R/M (when)
assignments.
MOD = 11
MOV BP,SP instruction.
R/M Memory Addressing
If the MOD field contains a 00, 01, or 10, the R/M field takes on a new meaning.
TABLE 4–4 16-bit R/M
memory-addressing modes
Special Addressing Mode
A special addressing mode occurs when memory data are referenced by only the
displacement mode of addressing for 16-bit instructions.
32-Bit Addressing Modes
• Found in 80386 and above.
– by running in 32-bit instruction mode or
– In 16-bit mode by using address-size prefix 67H
• A scaled-index byte indicates additional forms of scaled-index addressing.
– mainly used when two registers are added to specify the memory address in an
instruction
• A scaled-index instruction has 215 (32K) possible combinations.
– the index and base fields both contain
register numbers
The 64-Bit Mode for the Pentium 4 and Core2
W =1 (64 bits)
W =0 (CS descriptor)
• In 64-bit mode, a prefix called REX (register extension) is added.
• encoded as a 40H–4FH, follows other prefixes; placed immediately before the
opcode
• Purpose is to modify REG and R/M fields in the second byte of the instruction.
• REX is needed to be able to address registers R8 through R15
4–2 PUSH/POP
• Six forms of the PUSH and POP instructions:
– register, memory, immediate, segment register, flags, all registers
• The PUSH and POP immediate & PUSHA and POPA (all registers)
available 80286 - Core2
• Immediate addressing allows immediate data to be pushed onto the stack,
but not popped off the stack.
PUSH
• Always transfers 2 bytes of data to the stack;
– 80386 and above transfer 2 or 4 bytes
• PUSHA instruction copies contents of the internal register set, except the segment
registers, to the stack.
Figure 4–13 shows the operation of the PUSH AX instruction. This instruction copies the
contents of AX onto the stack where address SS:3SP - 14AH, SS:3SP - 24 AL SP = SP - 2
, and afterwards .
The PUSH immediate data instruction has two different opcodes, but in both cases, a 16-
bit immediate number moves onto the stack; if PUSHD is used, a 32-bit immediate datum is
pushed. If the values of the immediate data are 00H–FFH, the opcode is a 6AH; if the data are
0100H–FFFFH, the opcode is 68H. The PUSH 8 instruction, which pushes 0008H onto the
stack, assembles as 6A08H. The PUSH 1000H instruction assembles as 680010H. Another
example of PUSH immediate is the PUSH ‘A’ instruction, which pushes a 0041H onto the stack.
Here, the 41H is the ASCII code for the letter A.
4–3 LOAD EFFECTIVE ADDRESS
• LEA instruction loads any 16-bit register with the offset address
– determined by the addressing mode selected
• LDS and LES load a 16-bit register with offset address retrieved from a memory
location and then load either DS or ES with a segment address retrieved from
memory
• In 80386 and above, LFS, LGS, and LSS are added to the instruction set.
LEA
Loads a 16- or 32-bit register with the offset address of the data specified by the
operand.
Earlier examples presented by using the OFFSET directive.
OFFSET performs same function as LEA instruction if the operand is a
displacement
LEA and MOV with OFFSET instructions are both the same length (3 bytes).
MOV BX,OFFSET LIST
LEA BX,LIST
LDS, LES, LFS, LGS, and LSS
• The LDS, LES, LFS, LGS, and LSS instructions load any 16-bit or 32-bit register
with an offset address, and the DS, ES, FS, GS, or SS segment register with a
segment address. These instructions use any of the memory-addressing modes to
access a 32-bit or 48-bit section of memory that contains both the segment and offset
address. The 32-bit section of memory contains a 16- bit offset and segment address,
while the 48-bit section contains a 32-bit offset and a segment address.
4–4 STRING DATA TRANSFERS
• Five string data transfer instructions: LODS, STOS, MOVS, INS, and OUTS.
• Each allows data transfers as a single byte, word, or doubleword.
• Before the string instructions are presented, the operation of the D flag-bit
(direction), DI, and SI must be understood as they apply to the string instructions.
INS
• Transfers a byte, word, or doubleword of data from an I/O device into the extra
segment memory location addressed by the DI register.
– I/O address is contained in the DX register
• Useful for inputting a block of data from an external I/O device directly into the
memory.
• One application transfers data from a disk drive to memory.
– disk drives are often considered and interfaced
as I/O devices in a computer system
• Three basic forms of the INS:INSB INSW INSD
MOVS
• One of the more useful string data transfer instructions is MOVS, because it transfers data
from one memory location to another.
OUTS
• Transfers a byte, word, or doubleword of data from
the data segment memory location address by SI to
an I/O device.
– I/O device addressed by the DX register as with the
INS instruction
• In the 64-bit mode for Pentium 4 and Core2, there
is no 64-bit output
– but the address in RSI is 64 bits wide
4–5 MISCELLANEOUS DATA TRANSFER INSTRUCTIONS
• Used in programs, data transfer instructions detailed in this section are XCHG,
LAHF, SAHF, XLAT, IN, OUT, BSWAP, MOVSX, MOVZX, and CMOV.
LAHF and SAHF
• Seldom used bridge instructions.
• LAHF instruction transfers the rightmost 8 bits of the flag register into the AH
register.
• SAHF instruction transfers the AH register into the rightmost 8 bits of the flag
register.
• SAHF instruction may find some application with the numeric coprocessor.
• As legacy instructions, they do not function in the 64-bit mode and are invalid
instructions.
MOVSX and MOVZX
The MOVSX (move and sign-extend) and MOVZX (move and zero-extend)
instructions are found in the 80386–Pentium 4 instruction sets
XLAT
• Converts the contents of the AL register into a number stored in a memory table.
– performs the direct table lookup technique often used to convert one code to another
• An XLAT instruction first adds the contents of AL to BX to form a memory address within the
data segment.
– copies the contents of this address into AL
– only instruction adding an 8-bit to a 16-bit number
Figure 4–19 The operation of the XLAT instruction at the point just before 6DH is loaded into AL.
IN and OUT
• IN & OUT instructions perform I/O operations.
• Contents of AL, AX, or EAX are transferred only between I/O device and
microprocessor.
– an IN instruction transfers data from an external I/O device into AL, AX, or
EAX
– an OUT transfers data from AL, AX, or EAX to an external I/O device
• Only the 80386 and above contain EAX
• Two forms of I/O device (port) addressing:
• Fixed-port addressing allows data transfer between AL, AX, or EAX using an 8-
bit I/O port address.
– port number follows the instruction’s opcode
• Variable-port addressing allows data transfers between AL, AX, or EAX and a
16-bit port address.
– the I/O port number is stored in register DX, which can be changed (varied)
during the execution of a program.
CMOV
• Many variations of the CMOV instruction.
– these move the data only if the condition is true
• CMOVZ instruction moves data only if the result from some prior instruction was
a zero.
– destination is limited to only a 16- or 32-bit register, but the source can be a
16- or 32-bit register or memory location
• Because this is a new instruction, you cannot use it with the assembler unless the
.686 switch is added to the program
BSWAP
• BSWAP (byte swap) is available only in 80486–Pentium 4 microprocessors
• Takes the contents of any 32-bit register and swaps the first byte with the fourth,
and the second with the third.
• This instruction is used to convert data between the big and little endian forms.
• In 64-bit operation for the Pentium 4, all 8 bytes in the selected operand are
swapped.
• For example, the BSWAP EAX instruction with EAX = 00112233H
EAX = 33221100H
4–6 SEGMENT OVERRIDE PREFIX
• May be added to almost any instruction in any memory-addressing mode
– allows the programmer to deviate from the default segment
– only instructions that cannot be prefixed are jump and call instructions using
the code segment register for address generation
– Additional byte appended to the front of an instruction to select alternate
segment register
• Example
MOV AX,[DI] instruction accesses data within the data segment by default.
Suppose that the data are in the extra segment instead of in the data segment. This
instruction addresses the extra segment if changed to MOV AX,ES:[DI].
4–7 ASSEMBLER DETAIL
The assembler can be used two ways:
• with models unique to a particular assembler
• with full-segment definitions that allow complete control over the
assembly process and are universal to all assemblers
Directives
• Indicate how an operand or section of a program is to be processed by the
assembler.
– some generate and store information in the memory; others do not
• Assembler directives DB (define byte), DW (define word), DD (define double-
word), and DUP (duplicate) store data in the memory system.
• BYTE PTR indicates the size of the data referenced by a pointer or index register.
• Complex sections of assembly code are still written using MASM.
• The EQU (equate) directive allows data or labels to be equated to labels.
• The SEGMENT directive identifies the start of a memory segment and ENDS
identifies the
• end of a segment when full-segment definitions are in use.
• The ASSUME directive tells the assembler what segment names you have
assigned to CS,
• DS, ES, and SS when full-segment definitions are in effect. In the 80386 and
above,
• ASSUME also indicates the segment name for FS and GS.
• The PROC and ENDP directives indicate the start and end of a procedure. The
USES directive
• (MASM version 6.x) automatically saves and restores any number of registers on
the
• stack if they appear with the PROC directive.
• The assembler assumes that software is being developed for the 8086/8088
microprocessor
• unless the .286, .386, .486, .586, or .686 directive is used to select one of these
other microprocessors.
• This directive follows the .MODEL statement to use the 16-bit instruction mode
and precedes it for the 32-bit instruction mode
Introduction
• We examine the arithmetic and logic instructions. The arithmetic instructions
include addition, subtraction, multiplication, division, comparison, negation,
increment, and decrement.
• The logic instructions include AND, OR, Exclusive-OR, NOT, shifts, rotates, and
the logical compare (TEST).
• The 80386 through the Core2 instructions XADD, SHRD, SHLD, bit tests, and bit
scans.
• comparison tasks are performed efficiently with the string scan (SCAS) and string
compare (CMPS) instructions.
5-1 ADDITION, SUBTRACTION AND COMPARISON
• The bulk of the arithmetic instructions found in any microprocessor include
addition, subtraction, and comparison.
• Also shown are their uses in manipulating register and memory data.
Immediate Addition
Immediate addition is employed whenever constant or known data are added.
Array Addition
• Sequential lists of data.
• A sequence of instructions written 80386 shows scaled-index form addressing to
add elements 3, 5, and 7 of an area of memory called ARRAY.
• EBX is loaded with the address ARRAY, and ECX holds the array element
number.
• The scaling factor is used to multiply the contents of the ECX register by 2 to
address words of data.
Increment Addition
• With indirect memory increments, the size of the data must be described by using
the BYTE PTR, WORD PTR, DWORD PTR, or QWORD PTR directives.
• ADC adds the bit in the carry flag (C) to the operand data. mainly appears in
software that adds numbers wider than 16 or 32 bits in the 80386–Core2.
• The changes required for this operation are the use of the extended registers to hold
the data and modifications of the instructions for the 80386 and above.
Addition-with-Carry
Exchange and Add for the 80486–Core2 Processors.
• A new type of addition called exchange
• and add (XADD) appears in the 80486 instruction set and continues through the
Core2.
• The difference is that after the addition takes place, the original value of the
destination is copied into the source operand. This is one of the few instructions that
change the source.
• For example, if BL = 12H and DL = 02H , and the XADD BL,DL instruction
executes, the BL register contains the sum of 14H and DL becomes 12H. The sum of
14H is generated and the original destination of 12H replaces the source.
Subtract.
Compare and Exchange (80486–Core2 Processors Only)
• Compare and exchange instruction (CMPXCHG) compares the destination
operand with the accumulator.
– found only in 80486 - Core2 instruction sets
• If they are equal, the source operand is copied to the destination; if not equal, the
destination operand is copied into the accumulator.
– instruction functions with 8-, 16-, or 32-bit data CMPXCHG CX,DX
In the Pentium–Core2 processors, a CMPXCHG8B instruction
is available that compares two quadwords. This is the only
new data manipulation instruction provided in the Pentium–
Core2 when they are compared with prior versions of the
microprocessor. The compare-and-exchange- 8-bytes
instruction compares the 64-bit value located in EDX:EAX
with a 64-bit number located in memory.
An example is CMPXCHG8B TEMP. If TEMP equals
EDX:EAX, TEMP is replaced with the value found in
ECX:EBX; if TEMP does not equal EDX:EAX, the number
found in TEMP is loaded into EDX:EAX. The Z (zero) flag bit
indicates that the values are equal after the comparison.
5-2 MULTIPLICATION AND DIVISION
 Only modern microprocessors contain multiplication and division instructions.
 The Pentium–Core2 processors contain special circuitry that performs a
multiplication in as little as one clocking period, whereas it took over 40
clocking periods to perform the same multiplication in earlier Intel
microprocessors.
Multiplication
o 8-bit Multiplication
– The multiplication instruction contains one operand because it always
multiplies the operand times the contents of register AL.
A Special Immediate 16-Bit Multiplication
• 80186 - Core2 processors can use a special version of the multiply instruction.
– immediate multiplication must be signed;
– instruction format is different because it contains three operands
• First operand is 16-bit destination register; the second a register/memory location
with16-bit multiplicand; the third 8- or 16-bit immediate data used as the multiplier.
• Example
IMUL CX,DX,12H
IMUL BX,NUMBER,1000H
Division
8-Bit Division
• Uses AX to store the dividend divided by the contents of any 8-bit register or
memory location.
• Quotient moves into AL after the division with AH containing a whole number
remainder
• CBW (convert byte to word) instruction performs this conversion.
• In 80386 through Core2, MOVSX sign-extends a number.
5-3 BCD AND ASCII ARITHMETIC
 ASCII Arithmetic
• ASCII arithmetic instructions function with coded numbers, value 30H to 39H for
0–9.
• Four instructions in ASCII arithmetic operations:
– AAA (ASCII adjust after addition)
– AAD (ASCII adjust before division)
– AAM (ASCII adjust after multiplication)
– AAS (ASCII adjust after subtraction)
• These instructions use register AX as the source and as the destination.
AAA Instruction
• Addition of two one-digit ASCII-coded numbers will not result in any useful data.
For example, if 31H and 39H are added, the result is 6AH.
AAD Instruction
• Appears before a division.
• The AAD instruction requires the AX register contain a two-digit unpacked BCD
number (not ASCII) before executing.
• how 72 in unpacked BCD is divided by 9 to produce a quotient of 8. The 0702H loaded
into the AX register is adjusted by the AAD instruction to 0048H.
AAM Instruction
• Follows multiplication instruction after multiplying two one-digit unpacked BCD
numbers.
• AAM converts from binary to unpacked BCD.
• If a binary number between 0000H and 0063H appears in AX, AAM converts it to
BCD.
AAS Instruction
• AAS adjusts the AX register after an ASCII subtraction.
• For example, suppose that 35H subtracts from 39H. The result will be 04H
5-4 BASIC LOGIC INSTRUCTIONS
• Include AND, OR, Exclusive-OR, and NOT.
– also TEST, a special form of the AND instruction
– NEG, similar to the NOT instruction
• Logic operations provide binary bit control in low-level software.
– allow bits to be set, cleared, or complemented.
• 80386-Pentium 4 contain additional test instructions that test single bit positions.
– four different bit test instructions available
• All forms test the bit position in the destination operand selected by the source
operand.
 Test and Bit Test Instructions
For example, the BT AX,4
5-5 Shift and Rotate
 Double-Precision Shifts (80386–Core2 Only)
• 80386 and above contain two double precision shifts: SHLD (shift left) and SHRD
(shift right).
• Each instruction contains three operands.
• Both function with two 16-or 32-bit registers, or with one 16- or 32-bit memory
location and a register
Examples:
SHLD EBX,ECX,16 instruction shifts EBX left.
Bit Scan Instructions(available in 80386–Pentium 4)
• Scan through a number searching for a 1-bit.
• accomplished by shifting the number
• BSF scans the number from the leftmost bit toward the right; BSR scans the
number from the rightmost bit toward the left.
• if a 1-bit is encountered, the zero flag is set and the bit position number of the
1-bit is placed into the destination operand
• if no 1-bit is encountered the zero flag is cleared
For example, if and the BSF EBX,EAX instruction executes, the number is scanned from the
leftmost bit toward the right
SHRD AX,BX,12
5-6 STRING COMPARISONS
• String instructions are powerful because they allow the programmer to manipulate
large blocks of data with relative ease.
• Block data manipulation occurs with MOVS, LODS, STOS, INS, and OUTS.
• Additional string instructions allow a section of memory to be tested against a
constant or against another section of memory.
– SCAS (string scan); CMPS (string compare)
• SCAS
• Compares the AL register with a byte block of memory, AX with a word block, or
EAX with a doubleword block of memory.
• Opcode used for byte comparison is SCASB; for word comparison SCASW;
doubleword comparison is SCASD
• CMPS
• Always compares two sections of memory data as bytes (CMPSB), words
(CMPSW), or doublewords (CMPSD).
• Normally used with REPE or REPNE prefix.
– alternates are REPZ (repeat while zero) and REPNZ (repeat while not zero)
Program Control Instructions
Introduction
• This chapter explains the program control instructions, including the jumps, calls,
returns, interrupts, and machine control instructions.
• This chapter also presents the relational assembly language statements (.IF,
.ELSE, .ELSEIF, .ENDIF, .WHILE, .ENDW, .REPEAT, and .UNTIL) that are
available in version 6.xx and above of MASM or TASM, with version 5.xx set for
MASM compatibility.
6–1 THE JUMP GROUP
• Allows programmer to skip program sections and branch to any part of memory
for the
next instruction.
• A conditional jump instruction allows decisions based upon numerical tests.
– results are held in the flag bits, then tested by conditional jump instructions
• LOOP and conditional LOOP are also forms of the jump instruction.
Unconditional Jump (JMP)
• Three types: short jump, near jump, far jump.
• Short jump is a 2-byte instruction that allows jumps or branches to memory
locations within +127 and –128 bytes.
– from the address following the jump
• 3-byte near jump allows a branch or jump within ±32K bytes from the instruction
in the current code segment.
• 5-byte far jump allows a jump to any memory location within the real memory
system.
• The short and near jumps are often called intrasegment jumps.
• Far jumps are called intersegment jumps.
Figure 6–1 The three
main forms of the JMP
instruction. Note that
Disp is either an 8- or
16-bit signed
displacement or distance.
Jumps with Register Operands
• Jump can also use a 16- or 32-bit register as an operand.
– automatically sets up as an indirect jump
– address of the jump is in the register specified
by the jump instruction
• Unlike displacement associated with the near jump, register contents are
transferred directly into the instruction pointer.
• An indirect jump does not add to the instruction pointer.
• JMPAX, for example, copies the contents of the AX register into the IP.
– allows a jump to any location within the current code segment
• In 80386 and above, JMP EAX also jumps to any location within the current code
segment;
– in protected mode the code segment can be 4G bytes long, so a 32-bit offset
address is needed
Indirect Jumps Using an Index
• Jump instruction may also use the [ ] form of addressing to directly access the
jump table.
• The jump table can contain offset addresses for near indirect jumps, or segment
and offset addresses for far indirect jumps.
– also known as a double-indirect jump if the register jump is called an indirect
jump
• The assembler assumes that the jump is near unless the FAR PTR directive
indicates a far jump instruction.
Conditional Jumps and Conditional Sets
• Allows a conditional jump to any location within the current code segment.
• Conditional jump instructions test flag bits:
– sign (S), zero (Z), carry (C)
– parity (P), overflow (0)
• When signed numbers are compared, use the JG, JL, JGE, JLE, JE, and JNE
instructions.
– terms greater than and less than refer to signed numbers
• When unsigned numbers are compared, use the JA, JB, JAB, JBE, JE, and JNE
instructions.
– terms above and below refer to unsigned numbers
• Remaining conditional jumps test individual flag bits, such as overflow and
parity.
• The conditional jump instructions all test flag bits except for JCXZ (jump if CX =
0)and JECXZ (jump if ECX = 0).
The Conditional Set Instructions
• 80386 - Core2 processors also contain conditional set instructions.
– conditions tested by conditional jumps put
to work with the conditional set instructions
– conditional set instructions set a byte to either
01H or clear a byte to 00H, depending on the outcome of the condition under
test
• Useful where a condition must be tested at a point much later in the program.
Conditional LOOPs
• LOOP instruction also has conditional forms: LOOPE and LOOPNE
• LOOPE (loop while equal) instruction jumps if CX != 0 while an equal condition
exists.
– will exit loop if the condition is not equal or the
CX register decrements to 0
• LOOPNE (loop while not equal) jumps if CX != 0 while a not-equal condition
exists.
– will exit loop if the condition is equal or the CX register decrements to 0
• For example, a byte can be set to indicate that the carry is cleared at some point in the program
by using the SETNC MEM instruction. This instruction places 01H into memory location
MEM if carry is cleared, and 00H into MEM if carry is set.
6–2 CONTROLLING THE FLOW OF THE PROGRAM
 WHILE Loops
• The .WHILE and .ENDW statements allow an assembly language program to use
the WHILE construction,
• The .BREAK and .CONTINUE statements are available for use with the while
loop.
– .BREAK is often followed by .IF to select the break condition as in .BREAK
.IF AL == 0DH
– .CONTINUE can be used to allow a DO–.WHILE loop to continue if a certain
condition is met
 REPEAT-UNTIL Loops
• A series of instructions is repeated until some condition occurs.
• The .REPEAT statement defines the start of the loop.
– end is defined with the .UNTIL statement, which contains a condition
• An .UNTILCXZ instruction uses the LOOP instruction to check CX for a repeat
loop.
– .UNTILCXZ uses the CX register as a counter m to repeat a loop a fixed
number of times
• Procedures are groups of instructions that perform one task and are used from
any point in a program.
• The CALL instruction links to a procedure and the RET instruction returns
from a procedure. In assembly language, the PROC directive defines the
name and type of procedure.
• The ENDP directive declares the end of the procedure.
6–3 PROCEDURES
• The CALL construction is a combination of a PUSH and a JMP instruction.
• When CALL executes, it pushes the return address on the stack and then jumps to the
procedure.
• A near CALL places the contents of IP on the stack, and a far CALL places both IP and CS
on the stack.
•The RET instruction returns from a procedure by removing the return address from
the stack and placing it into IP (near return), or IP and CS (far return).
The effect of a near CALL on the stack and
the instruction pointer.
The effect of a far CALL instruction.
6–5 MACHINE CONTROLAND MISCELLANEOUS
INSTRUCTIONS
• These instructions provide control of the carry bit, sample the BUSY/TEST pin, and
perform various other functions.
•The carry flag bit (C) is clear, set, and complemented by the CLC, STC, and CMC
instructions.
•The BOUND instruction compares the contents of any 16-bit register against the
contents of two words of memory: an upper and a lower boundary. If the value in the
register compared with memory is not within the upper and lower boundary, a type 5
interrupt ensues.
•The ENTER and LEAVE instructions are used with stack frames. A stack frame is a
mechanism used to pass parameters to a procedure through the stack memory.
•The stack frame also holds local memory variables for the procedure.
•The ENTER instruction creates the stack frame, and the LEAVE instruction removes
the stack frame from the stack. The BP register addresses stack frame data.

Más contenido relacionado

La actualidad más candente

Byte and string manipulation 8086
Byte and string manipulation 8086Byte and string manipulation 8086
Byte and string manipulation 8086mpsrekha83
 
System bus timing 8086
System bus timing 8086System bus timing 8086
System bus timing 8086mpsrekha83
 
Program execution, straight line sequence and branching
Program execution, straight line sequence and branchingProgram execution, straight line sequence and branching
Program execution, straight line sequence and branchingJyotiprakashMishra18
 
Microprocessor 80386
Microprocessor 80386Microprocessor 80386
Microprocessor 80386yash sawarkar
 
ARM Architecture Instruction Set
ARM Architecture Instruction SetARM Architecture Instruction Set
ARM Architecture Instruction SetDwight Sabio
 
Processor Organization
Processor OrganizationProcessor Organization
Processor OrganizationDominik Salvet
 
8086 Microprocessor
8086 Microprocessor 8086 Microprocessor
8086 Microprocessor Vijay Kumar
 
8257 DMA Controller
8257 DMA Controller8257 DMA Controller
8257 DMA ControllerShivamSood22
 
Lect 2 ARM processor architecture
Lect 2 ARM processor architectureLect 2 ARM processor architecture
Lect 2 ARM processor architectureDr.YNM
 
Data Communication & Computer Networks: Multi level, multi transition & block...
Data Communication & Computer Networks: Multi level, multi transition & block...Data Communication & Computer Networks: Multi level, multi transition & block...
Data Communication & Computer Networks: Multi level, multi transition & block...Dr Rajiv Srivastava
 
Chapter 7 - Programming Techniques with Additional Instructions
Chapter 7 - Programming Techniques with Additional InstructionsChapter 7 - Programming Techniques with Additional Instructions
Chapter 7 - Programming Techniques with Additional Instructionscmkandemir
 
Module 2 ARM CORTEX M3 Instruction Set and Programming
Module 2 ARM CORTEX M3 Instruction Set and ProgrammingModule 2 ARM CORTEX M3 Instruction Set and Programming
Module 2 ARM CORTEX M3 Instruction Set and ProgrammingAmogha Bandrikalli
 
x86 architecture
x86 architecturex86 architecture
x86 architecturei i
 
Ascii adjust & decimal adjust
Ascii adjust & decimal adjustAscii adjust & decimal adjust
Ascii adjust & decimal adjustTech_MX
 

La actualidad más candente (20)

Byte and string manipulation 8086
Byte and string manipulation 8086Byte and string manipulation 8086
Byte and string manipulation 8086
 
System bus timing 8086
System bus timing 8086System bus timing 8086
System bus timing 8086
 
Program execution, straight line sequence and branching
Program execution, straight line sequence and branchingProgram execution, straight line sequence and branching
Program execution, straight line sequence and branching
 
Microprocessor 80386
Microprocessor 80386Microprocessor 80386
Microprocessor 80386
 
8086
80868086
8086
 
ARM Architecture Instruction Set
ARM Architecture Instruction SetARM Architecture Instruction Set
ARM Architecture Instruction Set
 
Ch12 microprocessor interrupts
Ch12 microprocessor interruptsCh12 microprocessor interrupts
Ch12 microprocessor interrupts
 
Processor Organization
Processor OrganizationProcessor Organization
Processor Organization
 
8086
80868086
8086
 
8086 Microprocessor
8086 Microprocessor 8086 Microprocessor
8086 Microprocessor
 
8257 DMA Controller
8257 DMA Controller8257 DMA Controller
8257 DMA Controller
 
Lect 2 ARM processor architecture
Lect 2 ARM processor architectureLect 2 ARM processor architecture
Lect 2 ARM processor architecture
 
Data Communication & Computer Networks: Multi level, multi transition & block...
Data Communication & Computer Networks: Multi level, multi transition & block...Data Communication & Computer Networks: Multi level, multi transition & block...
Data Communication & Computer Networks: Multi level, multi transition & block...
 
Instruction formats-in-8086
Instruction formats-in-8086Instruction formats-in-8086
Instruction formats-in-8086
 
80386
8038680386
80386
 
CISC & RISC Architecture
CISC & RISC Architecture CISC & RISC Architecture
CISC & RISC Architecture
 
Chapter 7 - Programming Techniques with Additional Instructions
Chapter 7 - Programming Techniques with Additional InstructionsChapter 7 - Programming Techniques with Additional Instructions
Chapter 7 - Programming Techniques with Additional Instructions
 
Module 2 ARM CORTEX M3 Instruction Set and Programming
Module 2 ARM CORTEX M3 Instruction Set and ProgrammingModule 2 ARM CORTEX M3 Instruction Set and Programming
Module 2 ARM CORTEX M3 Instruction Set and Programming
 
x86 architecture
x86 architecturex86 architecture
x86 architecture
 
Ascii adjust & decimal adjust
Ascii adjust & decimal adjustAscii adjust & decimal adjust
Ascii adjust & decimal adjust
 

Destacado (20)

Microprocessor and Interfacing Notes
Microprocessor and Interfacing NotesMicroprocessor and Interfacing Notes
Microprocessor and Interfacing Notes
 
Parallel port programming
Parallel port programmingParallel port programming
Parallel port programming
 
Microprocessor and-interfacing-techbymak
Microprocessor and-interfacing-techbymakMicroprocessor and-interfacing-techbymak
Microprocessor and-interfacing-techbymak
 
Interfacing ics for microprocessor
Interfacing ics for microprocessorInterfacing ics for microprocessor
Interfacing ics for microprocessor
 
8255_utkarsh_kulshrestha
8255_utkarsh_kulshrestha8255_utkarsh_kulshrestha
8255_utkarsh_kulshrestha
 
1327 Addressing Modes Of 8086
1327 Addressing Modes Of 80861327 Addressing Modes Of 8086
1327 Addressing Modes Of 8086
 
Microcontroller 8051 and its interfacing
Microcontroller 8051 and its interfacingMicrocontroller 8051 and its interfacing
Microcontroller 8051 and its interfacing
 
Embedded systems
Embedded systemsEmbedded systems
Embedded systems
 
Microprocessor systems 8085
Microprocessor systems 8085Microprocessor systems 8085
Microprocessor systems 8085
 
The 8255 PPI
The 8255 PPIThe 8255 PPI
The 8255 PPI
 
Chapter5
Chapter5Chapter5
Chapter5
 
Port Interfacing
Port InterfacingPort Interfacing
Port Interfacing
 
Assembly Language Lecture 4
Assembly Language Lecture 4Assembly Language Lecture 4
Assembly Language Lecture 4
 
Parallel Port
Parallel PortParallel Port
Parallel Port
 
8255 Programmable parallel I/O
8255 Programmable parallel I/O 8255 Programmable parallel I/O
8255 Programmable parallel I/O
 
Operation of 8255A
Operation of 8255AOperation of 8255A
Operation of 8255A
 
Interfacing of 8255 IC By Er. Swapnil Kaware.
Interfacing of 8255 IC By Er. Swapnil Kaware.Interfacing of 8255 IC By Er. Swapnil Kaware.
Interfacing of 8255 IC By Er. Swapnil Kaware.
 
Introduction to 8086 microprocessor
Introduction to 8086 microprocessorIntroduction to 8086 microprocessor
Introduction to 8086 microprocessor
 
Interfacing 8255
Interfacing 8255Interfacing 8255
Interfacing 8255
 
8086 microprocessor
8086 microprocessor8086 microprocessor
8086 microprocessor
 

Similar a advancsed microprocessor and interfacing

micro chapter 3jjgffffyeyhhuyerfftfgggffgjj
micro chapter 3jjgffffyeyhhuyerfftfgggffgjjmicro chapter 3jjgffffyeyhhuyerfftfgggffgjj
micro chapter 3jjgffffyeyhhuyerfftfgggffgjjTadeseBeyene
 
address5ng modes.pptx IS A GOOD MATERIAL
address5ng  modes.pptx IS A GOOD MATERIALaddress5ng  modes.pptx IS A GOOD MATERIAL
address5ng modes.pptx IS A GOOD MATERIALDrkoteswararaoseelam
 
Introduction to 80386 microprocessor
Introduction to 80386 microprocessorIntroduction to 80386 microprocessor
Introduction to 80386 microprocessorShehrevar Davierwala
 
Module 2 instruction set
Module 2 instruction set Module 2 instruction set
Module 2 instruction set Deepak John
 
8051 Programming (1).pptx
8051 Programming (1).pptx8051 Programming (1).pptx
8051 Programming (1).pptxDhyeayaParmar
 
8086 microprocessor pptx JNTUH ece 3rd year
8086 microprocessor pptx JNTUH ece 3rd year8086 microprocessor pptx JNTUH ece 3rd year
8086 microprocessor pptx JNTUH ece 3rd yearBharghavteja1
 
Module 1-ppt System programming
Module 1-ppt System programmingModule 1-ppt System programming
Module 1-ppt System programmingvishnu sankar
 
lect 03- MIT Addressing Modes.pdf
lect 03- MIT Addressing Modes.pdflect 03- MIT Addressing Modes.pdf
lect 03- MIT Addressing Modes.pdfAdeelAsghar36
 
Unit II arm 7 Instruction Set
Unit II arm 7 Instruction SetUnit II arm 7 Instruction Set
Unit II arm 7 Instruction SetDr. Pankaj Zope
 
Microprocessor Miscellaneous datatrans+directives
Microprocessor Miscellaneous datatrans+directivesMicroprocessor Miscellaneous datatrans+directives
Microprocessor Miscellaneous datatrans+directiveswaqasahmad1995
 
Advanced Microprocessors By Er. Swapnil Kaware
Advanced Microprocessors By Er. Swapnil KawareAdvanced Microprocessors By Er. Swapnil Kaware
Advanced Microprocessors By Er. Swapnil KawareProf. Swapnil V. Kaware
 
Pentium (80586) Microprocessor By Er. Swapnil Kaware
Pentium (80586) Microprocessor By Er. Swapnil KawarePentium (80586) Microprocessor By Er. Swapnil Kaware
Pentium (80586) Microprocessor By Er. Swapnil KawareProf. Swapnil V. Kaware
 
Advanced Microprocessors By Er. Swapnil Kaware
Advanced Microprocessors By Er. Swapnil Kaware Advanced Microprocessors By Er. Swapnil Kaware
Advanced Microprocessors By Er. Swapnil Kaware Prof. Swapnil V. Kaware
 
Introduction of 8086 micro processor .
Introduction of 8086 micro processor .Introduction of 8086 micro processor .
Introduction of 8086 micro processor .Siraj Ahmed
 

Similar a advancsed microprocessor and interfacing (20)

micro chapter 3jjgffffyeyhhuyerfftfgggffgjj
micro chapter 3jjgffffyeyhhuyerfftfgggffgjjmicro chapter 3jjgffffyeyhhuyerfftfgggffgjj
micro chapter 3jjgffffyeyhhuyerfftfgggffgjj
 
8051d
8051d8051d
8051d
 
address5ng modes.pptx IS A GOOD MATERIAL
address5ng  modes.pptx IS A GOOD MATERIALaddress5ng  modes.pptx IS A GOOD MATERIAL
address5ng modes.pptx IS A GOOD MATERIAL
 
Introduction to 80386 microprocessor
Introduction to 80386 microprocessorIntroduction to 80386 microprocessor
Introduction to 80386 microprocessor
 
Introduction to 80386
Introduction to 80386Introduction to 80386
Introduction to 80386
 
Module 2 instruction set
Module 2 instruction set Module 2 instruction set
Module 2 instruction set
 
8051 Programming (1).pptx
8051 Programming (1).pptx8051 Programming (1).pptx
8051 Programming (1).pptx
 
8086 microprocessor pptx JNTUH ece 3rd year
8086 microprocessor pptx JNTUH ece 3rd year8086 microprocessor pptx JNTUH ece 3rd year
8086 microprocessor pptx JNTUH ece 3rd year
 
Module 1-ppt System programming
Module 1-ppt System programmingModule 1-ppt System programming
Module 1-ppt System programming
 
lect 03- MIT Addressing Modes.pdf
lect 03- MIT Addressing Modes.pdflect 03- MIT Addressing Modes.pdf
lect 03- MIT Addressing Modes.pdf
 
UNIT 1.pptx
UNIT 1.pptxUNIT 1.pptx
UNIT 1.pptx
 
UNIT 1.pptx
UNIT 1.pptxUNIT 1.pptx
UNIT 1.pptx
 
Internal microprocessor architecture
Internal microprocessor architectureInternal microprocessor architecture
Internal microprocessor architecture
 
Unit II arm 7 Instruction Set
Unit II arm 7 Instruction SetUnit II arm 7 Instruction Set
Unit II arm 7 Instruction Set
 
ARM Architecture
ARM ArchitectureARM Architecture
ARM Architecture
 
Microprocessor Miscellaneous datatrans+directives
Microprocessor Miscellaneous datatrans+directivesMicroprocessor Miscellaneous datatrans+directives
Microprocessor Miscellaneous datatrans+directives
 
Advanced Microprocessors By Er. Swapnil Kaware
Advanced Microprocessors By Er. Swapnil KawareAdvanced Microprocessors By Er. Swapnil Kaware
Advanced Microprocessors By Er. Swapnil Kaware
 
Pentium (80586) Microprocessor By Er. Swapnil Kaware
Pentium (80586) Microprocessor By Er. Swapnil KawarePentium (80586) Microprocessor By Er. Swapnil Kaware
Pentium (80586) Microprocessor By Er. Swapnil Kaware
 
Advanced Microprocessors By Er. Swapnil Kaware
Advanced Microprocessors By Er. Swapnil Kaware Advanced Microprocessors By Er. Swapnil Kaware
Advanced Microprocessors By Er. Swapnil Kaware
 
Introduction of 8086 micro processor .
Introduction of 8086 micro processor .Introduction of 8086 micro processor .
Introduction of 8086 micro processor .
 

Más de @zenafaris91

Implementation of Digital Communication by using Matlab
Implementation of Digital Communication by using MatlabImplementation of Digital Communication by using Matlab
Implementation of Digital Communication by using Matlab@zenafaris91
 
PSEUDONOISE SEQUENCE IN CDMA EXAMPLE
PSEUDONOISE SEQUENCE IN CDMA EXAMPLEPSEUDONOISE SEQUENCE IN CDMA EXAMPLE
PSEUDONOISE SEQUENCE IN CDMA EXAMPLE@zenafaris91
 
Advanced Digital Signal Processing book
Advanced Digital Signal Processing bookAdvanced Digital Signal Processing book
Advanced Digital Signal Processing book@zenafaris91
 
IWSN with OMNET++ Simulation
IWSN with OMNET++ SimulationIWSN with OMNET++ Simulation
IWSN with OMNET++ Simulation@zenafaris91
 
IWSN with OMNET++ Simulation
IWSN with OMNET++ SimulationIWSN with OMNET++ Simulation
IWSN with OMNET++ Simulation@zenafaris91
 
face recognition based on PCA
face recognition based on PCAface recognition based on PCA
face recognition based on PCA@zenafaris91
 
Network Mnagement for WSN
Network Mnagement for WSNNetwork Mnagement for WSN
Network Mnagement for WSN@zenafaris91
 
optical transmitter
optical transmitteroptical transmitter
optical transmitter@zenafaris91
 

Más de @zenafaris91 (13)

Implementation of Digital Communication by using Matlab
Implementation of Digital Communication by using MatlabImplementation of Digital Communication by using Matlab
Implementation of Digital Communication by using Matlab
 
PSEUDONOISE SEQUENCE IN CDMA EXAMPLE
PSEUDONOISE SEQUENCE IN CDMA EXAMPLEPSEUDONOISE SEQUENCE IN CDMA EXAMPLE
PSEUDONOISE SEQUENCE IN CDMA EXAMPLE
 
Advanced Digital Signal Processing book
Advanced Digital Signal Processing bookAdvanced Digital Signal Processing book
Advanced Digital Signal Processing book
 
IWSN with OMNET++ Simulation
IWSN with OMNET++ SimulationIWSN with OMNET++ Simulation
IWSN with OMNET++ Simulation
 
IWSN with OMNET++ Simulation
IWSN with OMNET++ SimulationIWSN with OMNET++ Simulation
IWSN with OMNET++ Simulation
 
face recognition based on PCA
face recognition based on PCAface recognition based on PCA
face recognition based on PCA
 
Network Mnagement for WSN
Network Mnagement for WSNNetwork Mnagement for WSN
Network Mnagement for WSN
 
WLAN:VPN Security
WLAN:VPN SecurityWLAN:VPN Security
WLAN:VPN Security
 
optical transmitter
optical transmitteroptical transmitter
optical transmitter
 
DSR Protocol
DSR ProtocolDSR Protocol
DSR Protocol
 
Equalization
EqualizationEqualization
Equalization
 
Multirate DSP
Multirate DSPMultirate DSP
Multirate DSP
 
Multirate DSP
Multirate DSPMultirate DSP
Multirate DSP
 

Último

(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...ranjana rawat
 
247267395-1-Symmetric-and-distributed-shared-memory-architectures-ppt (1).ppt
247267395-1-Symmetric-and-distributed-shared-memory-architectures-ppt (1).ppt247267395-1-Symmetric-and-distributed-shared-memory-architectures-ppt (1).ppt
247267395-1-Symmetric-and-distributed-shared-memory-architectures-ppt (1).pptssuser5c9d4b1
 
Porous Ceramics seminar and technical writing
Porous Ceramics seminar and technical writingPorous Ceramics seminar and technical writing
Porous Ceramics seminar and technical writingrakeshbaidya232001
 
UNIT-III FMM. DIMENSIONAL ANALYSIS
UNIT-III FMM.        DIMENSIONAL ANALYSISUNIT-III FMM.        DIMENSIONAL ANALYSIS
UNIT-III FMM. DIMENSIONAL ANALYSISrknatarajan
 
IMPLICATIONS OF THE ABOVE HOLISTIC UNDERSTANDING OF HARMONY ON PROFESSIONAL E...
IMPLICATIONS OF THE ABOVE HOLISTIC UNDERSTANDING OF HARMONY ON PROFESSIONAL E...IMPLICATIONS OF THE ABOVE HOLISTIC UNDERSTANDING OF HARMONY ON PROFESSIONAL E...
IMPLICATIONS OF THE ABOVE HOLISTIC UNDERSTANDING OF HARMONY ON PROFESSIONAL E...RajaP95
 
Processing & Properties of Floor and Wall Tiles.pptx
Processing & Properties of Floor and Wall Tiles.pptxProcessing & Properties of Floor and Wall Tiles.pptx
Processing & Properties of Floor and Wall Tiles.pptxpranjaldaimarysona
 
Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...
Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...
Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...Dr.Costas Sachpazis
 
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...Dr.Costas Sachpazis
 
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur Escorts
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur EscortsCall Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur Escorts
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur EscortsCall Girls in Nagpur High Profile
 
CCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete Record
CCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete RecordCCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete Record
CCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete RecordAsst.prof M.Gokilavani
 
KubeKraft presentation @CloudNativeHooghly
KubeKraft presentation @CloudNativeHooghlyKubeKraft presentation @CloudNativeHooghly
KubeKraft presentation @CloudNativeHooghlysanyuktamishra911
 
UNIT - IV - Air Compressors and its Performance
UNIT - IV - Air Compressors and its PerformanceUNIT - IV - Air Compressors and its Performance
UNIT - IV - Air Compressors and its Performancesivaprakash250
 
Coefficient of Thermal Expansion and their Importance.pptx
Coefficient of Thermal Expansion and their Importance.pptxCoefficient of Thermal Expansion and their Importance.pptx
Coefficient of Thermal Expansion and their Importance.pptxAsutosh Ranjan
 
Introduction to Multiple Access Protocol.pptx
Introduction to Multiple Access Protocol.pptxIntroduction to Multiple Access Protocol.pptx
Introduction to Multiple Access Protocol.pptxupamatechverse
 
(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...ranjana rawat
 
(RIA) Call Girls Bhosari ( 7001035870 ) HI-Fi Pune Escorts Service
(RIA) Call Girls Bhosari ( 7001035870 ) HI-Fi Pune Escorts Service(RIA) Call Girls Bhosari ( 7001035870 ) HI-Fi Pune Escorts Service
(RIA) Call Girls Bhosari ( 7001035870 ) HI-Fi Pune Escorts Serviceranjana rawat
 
VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130
VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130
VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130Suhani Kapoor
 
Extrusion Processes and Their Limitations
Extrusion Processes and Their LimitationsExtrusion Processes and Their Limitations
Extrusion Processes and Their Limitations120cr0395
 
Call Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service Nashik
Call Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service NashikCall Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service Nashik
Call Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service NashikCall Girls in Nagpur High Profile
 
APPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICS
APPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICSAPPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICS
APPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICSKurinjimalarL3
 

Último (20)

(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
 
247267395-1-Symmetric-and-distributed-shared-memory-architectures-ppt (1).ppt
247267395-1-Symmetric-and-distributed-shared-memory-architectures-ppt (1).ppt247267395-1-Symmetric-and-distributed-shared-memory-architectures-ppt (1).ppt
247267395-1-Symmetric-and-distributed-shared-memory-architectures-ppt (1).ppt
 
Porous Ceramics seminar and technical writing
Porous Ceramics seminar and technical writingPorous Ceramics seminar and technical writing
Porous Ceramics seminar and technical writing
 
UNIT-III FMM. DIMENSIONAL ANALYSIS
UNIT-III FMM.        DIMENSIONAL ANALYSISUNIT-III FMM.        DIMENSIONAL ANALYSIS
UNIT-III FMM. DIMENSIONAL ANALYSIS
 
IMPLICATIONS OF THE ABOVE HOLISTIC UNDERSTANDING OF HARMONY ON PROFESSIONAL E...
IMPLICATIONS OF THE ABOVE HOLISTIC UNDERSTANDING OF HARMONY ON PROFESSIONAL E...IMPLICATIONS OF THE ABOVE HOLISTIC UNDERSTANDING OF HARMONY ON PROFESSIONAL E...
IMPLICATIONS OF THE ABOVE HOLISTIC UNDERSTANDING OF HARMONY ON PROFESSIONAL E...
 
Processing & Properties of Floor and Wall Tiles.pptx
Processing & Properties of Floor and Wall Tiles.pptxProcessing & Properties of Floor and Wall Tiles.pptx
Processing & Properties of Floor and Wall Tiles.pptx
 
Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...
Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...
Structural Analysis and Design of Foundations: A Comprehensive Handbook for S...
 
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...
 
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur Escorts
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur EscortsCall Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur Escorts
Call Girls Service Nagpur Tanvi Call 7001035870 Meet With Nagpur Escorts
 
CCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete Record
CCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete RecordCCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete Record
CCS335 _ Neural Networks and Deep Learning Laboratory_Lab Complete Record
 
KubeKraft presentation @CloudNativeHooghly
KubeKraft presentation @CloudNativeHooghlyKubeKraft presentation @CloudNativeHooghly
KubeKraft presentation @CloudNativeHooghly
 
UNIT - IV - Air Compressors and its Performance
UNIT - IV - Air Compressors and its PerformanceUNIT - IV - Air Compressors and its Performance
UNIT - IV - Air Compressors and its Performance
 
Coefficient of Thermal Expansion and their Importance.pptx
Coefficient of Thermal Expansion and their Importance.pptxCoefficient of Thermal Expansion and their Importance.pptx
Coefficient of Thermal Expansion and their Importance.pptx
 
Introduction to Multiple Access Protocol.pptx
Introduction to Multiple Access Protocol.pptxIntroduction to Multiple Access Protocol.pptx
Introduction to Multiple Access Protocol.pptx
 
(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANJALI) Dange Chowk Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
 
(RIA) Call Girls Bhosari ( 7001035870 ) HI-Fi Pune Escorts Service
(RIA) Call Girls Bhosari ( 7001035870 ) HI-Fi Pune Escorts Service(RIA) Call Girls Bhosari ( 7001035870 ) HI-Fi Pune Escorts Service
(RIA) Call Girls Bhosari ( 7001035870 ) HI-Fi Pune Escorts Service
 
VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130
VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130
VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130
 
Extrusion Processes and Their Limitations
Extrusion Processes and Their LimitationsExtrusion Processes and Their Limitations
Extrusion Processes and Their Limitations
 
Call Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service Nashik
Call Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service NashikCall Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service Nashik
Call Girls Service Nashik Vaishnavi 7001305949 Independent Escort Service Nashik
 
APPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICS
APPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICSAPPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICS
APPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICS
 

advancsed microprocessor and interfacing

  • 2.
  • 3. Introduction • The data-addressing modes include register, immediate, direct, register indirect, base plus-index, register relative, and base relative-plus-index addressing. The 80386 through the Pentium 4 microprocessors have an additional addressing mode called scaled-index addressing. • The program memory-addressing modes include direct, relative, and indirect addressing.
  • 4. 3–1 DATA-ADDRESSING MODES • MOV instruction is a common and flexible instruction. • provides a basis for explanation of data-addressing modes
  • 5. Figure 3–2 shows all possible variations of the data-addressing modes using MOV.
  • 6. Direct Data Addressing Direct addressing occurs in two forms in the microprocessor: direct addressing and displacement addressing. • Direct Addressing Direct addressing with a MOV instruction transfers data between a memory location, located within the data segment, and the AL (8-bit), AX (16-bit), or EAX (32-bit) register. • usually a 3-byte long instruction MOV AL,DATA • Displacement Addressing – In 80386 through Pentium 4, this instruction can be up to 7 bytes wide if a 32-bit register and a 32-bit displacement are specified. – This type of direct data addressing is much more flexible because most instructions use it.
  • 7. • The sequence shown in Example 3–7 loads register BX with the starting address of the table and it initializes the count, located in register CX, to 50. The OFFSET directive tells the assembler to load BX with the offset address of memory location TABLE, not the contents of TABLE. For example, the MOV BX,DATAS instruction copies the contents of memory location DATAS into BX, while the MOV BX,OFFSET DATAS instruction copies the offset address DATAS into BX. When the OFFSET directive is used with the MOV instruction, the assembler calculates the offset address and then uses a MOV immediate instruction to load the address in the specified 16-bit register.
  • 8. Addressing Arrays with Base Relative-Plus-Index • Suppose a file of many records exists in memory, each record with many elements. – displacement addresses the file, base register addresses a record, the index register addresses an element of a record • Following figure illustrates this very complex form of addressing. Figure: Base relative-plus-index addressing used to access a FILE that contains multiple records (REC).
  • 9. • Scaled-index addressing  Unique to 80386 - Core2 microprocessors.  uses two 32-bit registers (a base register and an index register) to access the memory  The second register (index) is multiplied by a scaling factor.  the scaling factor can be 1x, 2x, 4x, 8x  A scaling factor of is implied and need not be included in the assembly language instruction (MOV AL,[EBX + ECX]).  The MOV AX,[ EBX + 2*ECX] and the MOV [4 * ECX ],EDX are examples of scaled-index instructions. • RIP Relative Addressing  Uses the 64-bit instruction pointer register in the 64-bit mode to address a linear location in the flat memory model.  Inline assembler program available to Visual does not contain any way of using this mode or any other 64-bit addressing mode.  The Microsoft Visual does not at present support developing 64-bit assembly code.
  • 10. Data Structures • Used to specify how information is stored in a memory array. • a template for data • The start of a structure is identified with the STRUC assembly language directive and the end with the ENDS statement.
  • 11. 3–2 PROGRAM MEMORY-ADDRESSING MODES • Used with the JMP (jump) and CALL instructions. • Consist of three distinct forms: • direct, relative, and indirect Direct Program Memory Addressing • Direct program memory addressing is allowed with the JMP and CALL instructions to any location in the memory system. With this addressing mode, the offset address and segment address are stored with the instruction. • an intersegment jump is a jump to any memory location within the entire memory system
  • 12. Relative Program Memory Addressing • Relative program addressing allows a JMP or CALL instruction to branch for- ward or backward in the current code segment by bytes. • In the 80386 and above, the 32-bit displacement allows a branch to any location in the current code segment by using a displacement value of bytes. • The 32-bit displacement can be used only in protected mode.
  • 13. 3–3 STACK MEMORY-ADDRESSING MODES • The stack plays an important role in all microprocessors. – holds data temporarily and stores return addresses used by procedures • In 80386 and above, the extended register and extended flags can also be transferred between registers and the stack. • A PUSHFD stores the EFLAGS, whereas a PUSHF stores the FLAGS. • PUSHA and POPA instructions push or pop all except segment registers, on the stack. Not available on early 8086/8088 processors. • POPA and PUSHA are not available in 64-bit mode. • 80386 and above allow words or double-words to be transferred to and from the stack. • Data may be pushed onto the stack from any 16-bit register or segment register. – in 80386 and above, from any 32-bit extended register • Data may be popped off the stack into any register or any segment register except CS. • 80386 and above allow extended registers to be pushed or popped. – 64-bit mode for Pentium and Core2 does not contain a PUSHA or POPA instruction
  • 15. Introduction • The data movement instructions include MOV, MOVSX, MOVZX, PUSH, POP, BSWAP, XCHG, XLAT, IN, OUT, LEA, LDS, LES, LFS, LGS, LSS, LAHF, SAHF. • String instructions: MOVS, LODS, STOS, INS, and OUTS. • The latest data transfer instruction implemented on the Pentium Pro and above is the CMOV (conditional move) instruction. 4–1 MOV REVISITED It may be necessary to interpret machine language programs generated by an assembler.
  • 16. Machine Language • Machine language instructions for the 8086 through the Core2 vary in length from 1 to as many as 13 bytes • Figure 4–1 The formats of the 8086–Core2 instructions. (a) The 16-bit form and (b) the 32-bit form. • 80386 and above assume all instructions are 16-bit mode instructions when the machine is operated in the real mode (DOS). • in protected mode (Windows), the upper byte of the descriptor contains the D-bit that selects either the 16- or 32-bit instruction mode
  • 17. The Opcode • Selects the operation (addition, subtraction, etc.,) performed by the microprocessor. – either 1 or 2 bytes long for most instructions • Figure 4–2 illustrates the general form of the first opcode byte of many instructions. – first 6 bits of the first byte are the binary opcode – remaining 2 bits indicate the direction (D) of the data flow, and indicate whether the data are a byte or a word (W) Figure 4–2 Byte 1 of many machine language instructions, showing the position of the D- and W-bits.
  • 18. Figure 4–3 Byte 2 of many machine language instructions, showing the position of the MOD, REG, and R/M fields. MOD Field. • Specifies addressing mode (MOD) and whether a displacement is present with the selected type. • All 8-bit displacements are sign-extended into 16-bit displacements when the processor executes the instruction. – if the 8-bit displacement is 00H–7FH (positive), it is sign-extended to 0000H–007FH before adding to the offset address – if the 8-bit displacement is 80H–FFH (negative), it is sign-extended to FF80H–FFFFH • To sign-extend a number, its sign-bit is copied to the next higher-order byte, which generates either a 00H or an FFH in the next higher-order byte. • Some assembler programs do not use the 8-bit displacements and in place default to all 16-bit displacements.
  • 19. Register Assignments TABLE 4–2 MOD field for the 32-bit instruction mode (80386–Core2 only). TABLE 4–3 REG and R/M (when) assignments. MOD = 11 MOV BP,SP instruction.
  • 20. R/M Memory Addressing If the MOD field contains a 00, 01, or 10, the R/M field takes on a new meaning. TABLE 4–4 16-bit R/M memory-addressing modes Special Addressing Mode A special addressing mode occurs when memory data are referenced by only the displacement mode of addressing for 16-bit instructions.
  • 21. 32-Bit Addressing Modes • Found in 80386 and above. – by running in 32-bit instruction mode or – In 16-bit mode by using address-size prefix 67H • A scaled-index byte indicates additional forms of scaled-index addressing. – mainly used when two registers are added to specify the memory address in an instruction • A scaled-index instruction has 215 (32K) possible combinations. – the index and base fields both contain register numbers
  • 22. The 64-Bit Mode for the Pentium 4 and Core2 W =1 (64 bits) W =0 (CS descriptor) • In 64-bit mode, a prefix called REX (register extension) is added. • encoded as a 40H–4FH, follows other prefixes; placed immediately before the opcode • Purpose is to modify REG and R/M fields in the second byte of the instruction. • REX is needed to be able to address registers R8 through R15
  • 23. 4–2 PUSH/POP • Six forms of the PUSH and POP instructions: – register, memory, immediate, segment register, flags, all registers • The PUSH and POP immediate & PUSHA and POPA (all registers) available 80286 - Core2 • Immediate addressing allows immediate data to be pushed onto the stack, but not popped off the stack. PUSH • Always transfers 2 bytes of data to the stack; – 80386 and above transfer 2 or 4 bytes • PUSHA instruction copies contents of the internal register set, except the segment registers, to the stack.
  • 24. Figure 4–13 shows the operation of the PUSH AX instruction. This instruction copies the contents of AX onto the stack where address SS:3SP - 14AH, SS:3SP - 24 AL SP = SP - 2 , and afterwards . The PUSH immediate data instruction has two different opcodes, but in both cases, a 16- bit immediate number moves onto the stack; if PUSHD is used, a 32-bit immediate datum is pushed. If the values of the immediate data are 00H–FFH, the opcode is a 6AH; if the data are 0100H–FFFFH, the opcode is 68H. The PUSH 8 instruction, which pushes 0008H onto the stack, assembles as 6A08H. The PUSH 1000H instruction assembles as 680010H. Another example of PUSH immediate is the PUSH ‘A’ instruction, which pushes a 0041H onto the stack. Here, the 41H is the ASCII code for the letter A.
  • 25. 4–3 LOAD EFFECTIVE ADDRESS • LEA instruction loads any 16-bit register with the offset address – determined by the addressing mode selected • LDS and LES load a 16-bit register with offset address retrieved from a memory location and then load either DS or ES with a segment address retrieved from memory • In 80386 and above, LFS, LGS, and LSS are added to the instruction set. LEA Loads a 16- or 32-bit register with the offset address of the data specified by the operand. Earlier examples presented by using the OFFSET directive. OFFSET performs same function as LEA instruction if the operand is a displacement LEA and MOV with OFFSET instructions are both the same length (3 bytes). MOV BX,OFFSET LIST LEA BX,LIST
  • 26. LDS, LES, LFS, LGS, and LSS • The LDS, LES, LFS, LGS, and LSS instructions load any 16-bit or 32-bit register with an offset address, and the DS, ES, FS, GS, or SS segment register with a segment address. These instructions use any of the memory-addressing modes to access a 32-bit or 48-bit section of memory that contains both the segment and offset address. The 32-bit section of memory contains a 16- bit offset and segment address, while the 48-bit section contains a 32-bit offset and a segment address.
  • 27. 4–4 STRING DATA TRANSFERS • Five string data transfer instructions: LODS, STOS, MOVS, INS, and OUTS. • Each allows data transfers as a single byte, word, or doubleword. • Before the string instructions are presented, the operation of the D flag-bit (direction), DI, and SI must be understood as they apply to the string instructions. INS • Transfers a byte, word, or doubleword of data from an I/O device into the extra segment memory location addressed by the DI register. – I/O address is contained in the DX register • Useful for inputting a block of data from an external I/O device directly into the memory. • One application transfers data from a disk drive to memory. – disk drives are often considered and interfaced as I/O devices in a computer system • Three basic forms of the INS:INSB INSW INSD MOVS • One of the more useful string data transfer instructions is MOVS, because it transfers data from one memory location to another.
  • 28. OUTS • Transfers a byte, word, or doubleword of data from the data segment memory location address by SI to an I/O device. – I/O device addressed by the DX register as with the INS instruction • In the 64-bit mode for Pentium 4 and Core2, there is no 64-bit output – but the address in RSI is 64 bits wide
  • 29. 4–5 MISCELLANEOUS DATA TRANSFER INSTRUCTIONS • Used in programs, data transfer instructions detailed in this section are XCHG, LAHF, SAHF, XLAT, IN, OUT, BSWAP, MOVSX, MOVZX, and CMOV. LAHF and SAHF • Seldom used bridge instructions. • LAHF instruction transfers the rightmost 8 bits of the flag register into the AH register. • SAHF instruction transfers the AH register into the rightmost 8 bits of the flag register. • SAHF instruction may find some application with the numeric coprocessor. • As legacy instructions, they do not function in the 64-bit mode and are invalid instructions. MOVSX and MOVZX The MOVSX (move and sign-extend) and MOVZX (move and zero-extend) instructions are found in the 80386–Pentium 4 instruction sets
  • 30. XLAT • Converts the contents of the AL register into a number stored in a memory table. – performs the direct table lookup technique often used to convert one code to another • An XLAT instruction first adds the contents of AL to BX to form a memory address within the data segment. – copies the contents of this address into AL – only instruction adding an 8-bit to a 16-bit number Figure 4–19 The operation of the XLAT instruction at the point just before 6DH is loaded into AL.
  • 31. IN and OUT • IN & OUT instructions perform I/O operations. • Contents of AL, AX, or EAX are transferred only between I/O device and microprocessor. – an IN instruction transfers data from an external I/O device into AL, AX, or EAX – an OUT transfers data from AL, AX, or EAX to an external I/O device • Only the 80386 and above contain EAX • Two forms of I/O device (port) addressing: • Fixed-port addressing allows data transfer between AL, AX, or EAX using an 8- bit I/O port address. – port number follows the instruction’s opcode • Variable-port addressing allows data transfers between AL, AX, or EAX and a 16-bit port address. – the I/O port number is stored in register DX, which can be changed (varied) during the execution of a program.
  • 32. CMOV • Many variations of the CMOV instruction. – these move the data only if the condition is true • CMOVZ instruction moves data only if the result from some prior instruction was a zero. – destination is limited to only a 16- or 32-bit register, but the source can be a 16- or 32-bit register or memory location • Because this is a new instruction, you cannot use it with the assembler unless the .686 switch is added to the program BSWAP • BSWAP (byte swap) is available only in 80486–Pentium 4 microprocessors • Takes the contents of any 32-bit register and swaps the first byte with the fourth, and the second with the third. • This instruction is used to convert data between the big and little endian forms. • In 64-bit operation for the Pentium 4, all 8 bytes in the selected operand are swapped. • For example, the BSWAP EAX instruction with EAX = 00112233H EAX = 33221100H
  • 33. 4–6 SEGMENT OVERRIDE PREFIX • May be added to almost any instruction in any memory-addressing mode – allows the programmer to deviate from the default segment – only instructions that cannot be prefixed are jump and call instructions using the code segment register for address generation – Additional byte appended to the front of an instruction to select alternate segment register • Example MOV AX,[DI] instruction accesses data within the data segment by default. Suppose that the data are in the extra segment instead of in the data segment. This instruction addresses the extra segment if changed to MOV AX,ES:[DI]. 4–7 ASSEMBLER DETAIL The assembler can be used two ways: • with models unique to a particular assembler • with full-segment definitions that allow complete control over the assembly process and are universal to all assemblers
  • 34. Directives • Indicate how an operand or section of a program is to be processed by the assembler. – some generate and store information in the memory; others do not • Assembler directives DB (define byte), DW (define word), DD (define double- word), and DUP (duplicate) store data in the memory system. • BYTE PTR indicates the size of the data referenced by a pointer or index register. • Complex sections of assembly code are still written using MASM. • The EQU (equate) directive allows data or labels to be equated to labels. • The SEGMENT directive identifies the start of a memory segment and ENDS identifies the • end of a segment when full-segment definitions are in use. • The ASSUME directive tells the assembler what segment names you have assigned to CS, • DS, ES, and SS when full-segment definitions are in effect. In the 80386 and above, • ASSUME also indicates the segment name for FS and GS.
  • 35. • The PROC and ENDP directives indicate the start and end of a procedure. The USES directive • (MASM version 6.x) automatically saves and restores any number of registers on the • stack if they appear with the PROC directive. • The assembler assumes that software is being developed for the 8086/8088 microprocessor • unless the .286, .386, .486, .586, or .686 directive is used to select one of these other microprocessors. • This directive follows the .MODEL statement to use the 16-bit instruction mode and precedes it for the 32-bit instruction mode
  • 36.
  • 37. Introduction • We examine the arithmetic and logic instructions. The arithmetic instructions include addition, subtraction, multiplication, division, comparison, negation, increment, and decrement. • The logic instructions include AND, OR, Exclusive-OR, NOT, shifts, rotates, and the logical compare (TEST). • The 80386 through the Core2 instructions XADD, SHRD, SHLD, bit tests, and bit scans. • comparison tasks are performed efficiently with the string scan (SCAS) and string compare (CMPS) instructions. 5-1 ADDITION, SUBTRACTION AND COMPARISON • The bulk of the arithmetic instructions found in any microprocessor include addition, subtraction, and comparison. • Also shown are their uses in manipulating register and memory data.
  • 38. Immediate Addition Immediate addition is employed whenever constant or known data are added. Array Addition • Sequential lists of data. • A sequence of instructions written 80386 shows scaled-index form addressing to add elements 3, 5, and 7 of an area of memory called ARRAY. • EBX is loaded with the address ARRAY, and ECX holds the array element number. • The scaling factor is used to multiply the contents of the ECX register by 2 to address words of data.
  • 39. Increment Addition • With indirect memory increments, the size of the data must be described by using the BYTE PTR, WORD PTR, DWORD PTR, or QWORD PTR directives. • ADC adds the bit in the carry flag (C) to the operand data. mainly appears in software that adds numbers wider than 16 or 32 bits in the 80386–Core2. • The changes required for this operation are the use of the extended registers to hold the data and modifications of the instructions for the 80386 and above. Addition-with-Carry
  • 40. Exchange and Add for the 80486–Core2 Processors. • A new type of addition called exchange • and add (XADD) appears in the 80486 instruction set and continues through the Core2. • The difference is that after the addition takes place, the original value of the destination is copied into the source operand. This is one of the few instructions that change the source. • For example, if BL = 12H and DL = 02H , and the XADD BL,DL instruction executes, the BL register contains the sum of 14H and DL becomes 12H. The sum of 14H is generated and the original destination of 12H replaces the source. Subtract. Compare and Exchange (80486–Core2 Processors Only) • Compare and exchange instruction (CMPXCHG) compares the destination operand with the accumulator. – found only in 80486 - Core2 instruction sets • If they are equal, the source operand is copied to the destination; if not equal, the destination operand is copied into the accumulator. – instruction functions with 8-, 16-, or 32-bit data CMPXCHG CX,DX
  • 41. In the Pentium–Core2 processors, a CMPXCHG8B instruction is available that compares two quadwords. This is the only new data manipulation instruction provided in the Pentium– Core2 when they are compared with prior versions of the microprocessor. The compare-and-exchange- 8-bytes instruction compares the 64-bit value located in EDX:EAX with a 64-bit number located in memory. An example is CMPXCHG8B TEMP. If TEMP equals EDX:EAX, TEMP is replaced with the value found in ECX:EBX; if TEMP does not equal EDX:EAX, the number found in TEMP is loaded into EDX:EAX. The Z (zero) flag bit indicates that the values are equal after the comparison.
  • 42. 5-2 MULTIPLICATION AND DIVISION  Only modern microprocessors contain multiplication and division instructions.  The Pentium–Core2 processors contain special circuitry that performs a multiplication in as little as one clocking period, whereas it took over 40 clocking periods to perform the same multiplication in earlier Intel microprocessors. Multiplication o 8-bit Multiplication – The multiplication instruction contains one operand because it always multiplies the operand times the contents of register AL.
  • 43. A Special Immediate 16-Bit Multiplication • 80186 - Core2 processors can use a special version of the multiply instruction. – immediate multiplication must be signed; – instruction format is different because it contains three operands • First operand is 16-bit destination register; the second a register/memory location with16-bit multiplicand; the third 8- or 16-bit immediate data used as the multiplier. • Example IMUL CX,DX,12H IMUL BX,NUMBER,1000H Division 8-Bit Division • Uses AX to store the dividend divided by the contents of any 8-bit register or memory location. • Quotient moves into AL after the division with AH containing a whole number remainder • CBW (convert byte to word) instruction performs this conversion. • In 80386 through Core2, MOVSX sign-extends a number.
  • 44. 5-3 BCD AND ASCII ARITHMETIC  ASCII Arithmetic • ASCII arithmetic instructions function with coded numbers, value 30H to 39H for 0–9. • Four instructions in ASCII arithmetic operations: – AAA (ASCII adjust after addition) – AAD (ASCII adjust before division) – AAM (ASCII adjust after multiplication) – AAS (ASCII adjust after subtraction) • These instructions use register AX as the source and as the destination. AAA Instruction • Addition of two one-digit ASCII-coded numbers will not result in any useful data. For example, if 31H and 39H are added, the result is 6AH.
  • 45. AAD Instruction • Appears before a division. • The AAD instruction requires the AX register contain a two-digit unpacked BCD number (not ASCII) before executing. • how 72 in unpacked BCD is divided by 9 to produce a quotient of 8. The 0702H loaded into the AX register is adjusted by the AAD instruction to 0048H. AAM Instruction • Follows multiplication instruction after multiplying two one-digit unpacked BCD numbers. • AAM converts from binary to unpacked BCD. • If a binary number between 0000H and 0063H appears in AX, AAM converts it to BCD. AAS Instruction • AAS adjusts the AX register after an ASCII subtraction. • For example, suppose that 35H subtracts from 39H. The result will be 04H
  • 46. 5-4 BASIC LOGIC INSTRUCTIONS • Include AND, OR, Exclusive-OR, and NOT. – also TEST, a special form of the AND instruction – NEG, similar to the NOT instruction • Logic operations provide binary bit control in low-level software. – allow bits to be set, cleared, or complemented. • 80386-Pentium 4 contain additional test instructions that test single bit positions. – four different bit test instructions available • All forms test the bit position in the destination operand selected by the source operand.  Test and Bit Test Instructions For example, the BT AX,4
  • 47. 5-5 Shift and Rotate  Double-Precision Shifts (80386–Core2 Only) • 80386 and above contain two double precision shifts: SHLD (shift left) and SHRD (shift right). • Each instruction contains three operands. • Both function with two 16-or 32-bit registers, or with one 16- or 32-bit memory location and a register Examples: SHLD EBX,ECX,16 instruction shifts EBX left. Bit Scan Instructions(available in 80386–Pentium 4) • Scan through a number searching for a 1-bit. • accomplished by shifting the number • BSF scans the number from the leftmost bit toward the right; BSR scans the number from the rightmost bit toward the left. • if a 1-bit is encountered, the zero flag is set and the bit position number of the 1-bit is placed into the destination operand • if no 1-bit is encountered the zero flag is cleared For example, if and the BSF EBX,EAX instruction executes, the number is scanned from the leftmost bit toward the right SHRD AX,BX,12
  • 48. 5-6 STRING COMPARISONS • String instructions are powerful because they allow the programmer to manipulate large blocks of data with relative ease. • Block data manipulation occurs with MOVS, LODS, STOS, INS, and OUTS. • Additional string instructions allow a section of memory to be tested against a constant or against another section of memory. – SCAS (string scan); CMPS (string compare) • SCAS • Compares the AL register with a byte block of memory, AX with a word block, or EAX with a doubleword block of memory. • Opcode used for byte comparison is SCASB; for word comparison SCASW; doubleword comparison is SCASD • CMPS • Always compares two sections of memory data as bytes (CMPSB), words (CMPSW), or doublewords (CMPSD). • Normally used with REPE or REPNE prefix. – alternates are REPZ (repeat while zero) and REPNZ (repeat while not zero)
  • 50. Introduction • This chapter explains the program control instructions, including the jumps, calls, returns, interrupts, and machine control instructions. • This chapter also presents the relational assembly language statements (.IF, .ELSE, .ELSEIF, .ENDIF, .WHILE, .ENDW, .REPEAT, and .UNTIL) that are available in version 6.xx and above of MASM or TASM, with version 5.xx set for MASM compatibility. 6–1 THE JUMP GROUP • Allows programmer to skip program sections and branch to any part of memory for the next instruction. • A conditional jump instruction allows decisions based upon numerical tests. – results are held in the flag bits, then tested by conditional jump instructions • LOOP and conditional LOOP are also forms of the jump instruction.
  • 51. Unconditional Jump (JMP) • Three types: short jump, near jump, far jump. • Short jump is a 2-byte instruction that allows jumps or branches to memory locations within +127 and –128 bytes. – from the address following the jump • 3-byte near jump allows a branch or jump within ±32K bytes from the instruction in the current code segment. • 5-byte far jump allows a jump to any memory location within the real memory system. • The short and near jumps are often called intrasegment jumps. • Far jumps are called intersegment jumps. Figure 6–1 The three main forms of the JMP instruction. Note that Disp is either an 8- or 16-bit signed displacement or distance.
  • 52. Jumps with Register Operands • Jump can also use a 16- or 32-bit register as an operand. – automatically sets up as an indirect jump – address of the jump is in the register specified by the jump instruction • Unlike displacement associated with the near jump, register contents are transferred directly into the instruction pointer. • An indirect jump does not add to the instruction pointer. • JMPAX, for example, copies the contents of the AX register into the IP. – allows a jump to any location within the current code segment • In 80386 and above, JMP EAX also jumps to any location within the current code segment; – in protected mode the code segment can be 4G bytes long, so a 32-bit offset address is needed
  • 53. Indirect Jumps Using an Index • Jump instruction may also use the [ ] form of addressing to directly access the jump table. • The jump table can contain offset addresses for near indirect jumps, or segment and offset addresses for far indirect jumps. – also known as a double-indirect jump if the register jump is called an indirect jump • The assembler assumes that the jump is near unless the FAR PTR directive indicates a far jump instruction.
  • 54. Conditional Jumps and Conditional Sets • Allows a conditional jump to any location within the current code segment. • Conditional jump instructions test flag bits: – sign (S), zero (Z), carry (C) – parity (P), overflow (0) • When signed numbers are compared, use the JG, JL, JGE, JLE, JE, and JNE instructions. – terms greater than and less than refer to signed numbers • When unsigned numbers are compared, use the JA, JB, JAB, JBE, JE, and JNE instructions. – terms above and below refer to unsigned numbers • Remaining conditional jumps test individual flag bits, such as overflow and parity. • The conditional jump instructions all test flag bits except for JCXZ (jump if CX = 0)and JECXZ (jump if ECX = 0).
  • 55. The Conditional Set Instructions • 80386 - Core2 processors also contain conditional set instructions. – conditions tested by conditional jumps put to work with the conditional set instructions – conditional set instructions set a byte to either 01H or clear a byte to 00H, depending on the outcome of the condition under test • Useful where a condition must be tested at a point much later in the program. Conditional LOOPs • LOOP instruction also has conditional forms: LOOPE and LOOPNE • LOOPE (loop while equal) instruction jumps if CX != 0 while an equal condition exists. – will exit loop if the condition is not equal or the CX register decrements to 0 • LOOPNE (loop while not equal) jumps if CX != 0 while a not-equal condition exists. – will exit loop if the condition is equal or the CX register decrements to 0 • For example, a byte can be set to indicate that the carry is cleared at some point in the program by using the SETNC MEM instruction. This instruction places 01H into memory location MEM if carry is cleared, and 00H into MEM if carry is set.
  • 56. 6–2 CONTROLLING THE FLOW OF THE PROGRAM  WHILE Loops • The .WHILE and .ENDW statements allow an assembly language program to use the WHILE construction, • The .BREAK and .CONTINUE statements are available for use with the while loop. – .BREAK is often followed by .IF to select the break condition as in .BREAK .IF AL == 0DH – .CONTINUE can be used to allow a DO–.WHILE loop to continue if a certain condition is met  REPEAT-UNTIL Loops • A series of instructions is repeated until some condition occurs. • The .REPEAT statement defines the start of the loop. – end is defined with the .UNTIL statement, which contains a condition • An .UNTILCXZ instruction uses the LOOP instruction to check CX for a repeat loop. – .UNTILCXZ uses the CX register as a counter m to repeat a loop a fixed number of times
  • 57. • Procedures are groups of instructions that perform one task and are used from any point in a program. • The CALL instruction links to a procedure and the RET instruction returns from a procedure. In assembly language, the PROC directive defines the name and type of procedure. • The ENDP directive declares the end of the procedure. 6–3 PROCEDURES • The CALL construction is a combination of a PUSH and a JMP instruction. • When CALL executes, it pushes the return address on the stack and then jumps to the procedure. • A near CALL places the contents of IP on the stack, and a far CALL places both IP and CS on the stack. •The RET instruction returns from a procedure by removing the return address from the stack and placing it into IP (near return), or IP and CS (far return).
  • 58. The effect of a near CALL on the stack and the instruction pointer. The effect of a far CALL instruction.
  • 59. 6–5 MACHINE CONTROLAND MISCELLANEOUS INSTRUCTIONS • These instructions provide control of the carry bit, sample the BUSY/TEST pin, and perform various other functions. •The carry flag bit (C) is clear, set, and complemented by the CLC, STC, and CMC instructions. •The BOUND instruction compares the contents of any 16-bit register against the contents of two words of memory: an upper and a lower boundary. If the value in the register compared with memory is not within the upper and lower boundary, a type 5 interrupt ensues. •The ENTER and LEAVE instructions are used with stack frames. A stack frame is a mechanism used to pass parameters to a procedure through the stack memory. •The stack frame also holds local memory variables for the procedure. •The ENTER instruction creates the stack frame, and the LEAVE instruction removes the stack frame from the stack. The BP register addresses stack frame data.