loading

Logout succeed

Logout succeed. See you again!

ebook img

Assembly Language Lecture 4 – Data Transfers, Addressing, and Arithmetic PDF

pages75 Pages
release year2013
file size0.67 MB
languageEnglish

Preview Assembly Language Lecture 4 – Data Transfers, Addressing, and Arithmetic

Assembly Language    Lecture 4 – Data Transfers, Addressing, and  Arithmetic    Ahmed Sallam  Slides based on original lecture slides by Dr. Mahmoud Elgayyar Outcomes of Lecture 3  Basic Elements of Assembly Language   Example: Adding and Subtracting Integers   Assembling, Linking, and Running Programs   Defining Data   Symbolic Constants   Real‐Address Mode Programming   Mahmoud El‐Gayyar / Assembly Language       2 Outline   Data Transfer Instructions  Operand types   MOV, MOVZX, MOVSX instructions   LAHF, SAHF instructions   XCHG instruction    Addition and Subtraction  INC and DEC instructions   ADD, SUB instructions   NEG instruction    Data‐Related Operators and Directives    Indirect Addressing  Arrays and pointers    JMP and LOOP instructions  Mahmoud El‐Gayyar / Assembly Language       3 Outline   Data Transfer Instructions  Operand types   MOV, MOVZX, MOVSX instructions   LAHF, SAHF instructions   XCHG instruction    Addition and Subtraction  INC and DEC instructions   ADD, SUB instructions   NEG instruction    Data‐Related Operators and Directives    Indirect Addressing  Arrays and pointers    JMP and LOOP instructions  Mahmoud El‐Gayyar / Assembly Language       4 Operand Types  Immediate – a constant integer (8, 16, or 32 bits)   value is encoded within the instruction   Register – the name of a register   Memory – reference to a location in memory   memory  address  is  encoded  within  the  instruction,  or  a   register holds the address of a memory location  .data var1 BYTE 10h ;Suppose var1 were located at offset 10400h mov AL,var1  A0 00010400 Mahmoud El‐Gayyar / Assembly Language       5 Operand Notation  Mahmoud El‐Gayyar / Assembly Language       6 MOV Instruction   Move from source to destination   Syntax:  MOV destination, source  Both operands must be the same size   No more than one memory operand permitted   CS, EIP, and IP cannot be the destination   No immediate to segment registers moves   Memory to Memory:    .code mov ax,var1 mov var2,ax Mahmoud El‐Gayyar / Assembly Language       7 Direct Memory Operands   A direct memory operand is a named reference to storage in memory   The  named  reference  (label)  is  automatically  dereferenced  by  the  assembler    .data var1 BYTE 10h .code mov al,var1 ; AL = 10h mov al,[var1] ; AL = 10h Use it only when an arithmetic alternate format – Use consistently expression is involved if you chose to use it mov al, [var1 +5] Mahmoud El‐Gayyar / Assembly Language       8 Mov Errors  .data bVal BYTE 100 bVal2 BYTE ? wVal WORD 2 dVal DWORD 5 .code mov al,wVal ; byte <- word mov ax,bVal ; word <- byte mov eax,bVal ; dword <- byte mov ds,45 ;immediate value not permitted mov eip,dVal ;invalid destination (eip) mov 25,bVal ;invalid destination (25) mov bVal2,bVal ; move in mem not permitted Mahmoud El‐Gayyar / Assembly Language       9 Zero Extension   When you copy a smaller value into a larger destination, the MOVZX  instruction fills (extends) the upper half of the destination with zeros  0 1 0 0 0 1 1 1 1 Source 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 1 Destination mov bl,10001111b movzx ax,bl ; zero-extension The destination must be a register Mahmoud El‐Gayyar / Assembly Language       10

See more

The list of books you might like