SlideShare a Scribd company logo
1 of 19
Introduction to 8086 Assembly
Language
   Assembly Language Programming
                     University of Akron
                       Dr. Tim Margush
Program Statements
name operation operand(s) comment
• Operation is a predefined or reserved word
   › mnemonic - symbolic operation code
   › directive - pseudo-operation code
• Space or tab separates initial fields
• Comments begin with semicolon
• Most assemblers are not case sensitive

10/21/12       Dr. Tim Margush - Assembly Language Program
                                        2
Program Data and Storage
• Pseudo-ops to define       • These directives
  data or reserve storage      require one or more
   ›   DB - byte(s)            operands
   ›   DW - word(s)              › define memory
   ›   DD - doubleword(s)          contents
   ›   DQ - quadword(s)          › specify amount of
   ›                               storage to reserve for
       DT - tenbyte(s)
                                   run-time data



10/21/12           Dr. Tim Margush - Assembly Language Program
                                            3
Defining Data
• Numeric data values        • A list of values may be
   ›   100 - decimal           used - the following
   ›   100B - binary           creates 4 consecutive
   ›   100H - hexadecimal      words
   ›   '100' - ASCII             DW 40CH,10B,-13,0
   ›   "100" - ASCII         • A ? represents an
• Use the appropriate          uninitialized storage
  DEFINE directive             location
  (byte, word, etc.)             DB 255,?,-128,'X'

10/21/12           Dr. Tim Margush - Assembly Language Program
                                            4
Naming Storage Locations
• Names can be              • ANum refers to a byte
  associated with             storage location,
  storage locations           initialized to FCh
   ANum DB -4               • The next word has no
    DW 17                     associated name
   ONE
                            • ONE and UNO refer
   UNO DW 1
   X DD ?                     to the same word
• These names are called    • X is an unitialized
  variables                   doubleword
10/21/12          Dr. Tim Margush - Assembly Language Program
                                           5
Arrays
• Any consecutive storage locations of the
  same size can be called an array
  X DW 40CH,10B,-13,0
  Y DB 'This is an array'
  Z DD -109236, FFFFFFFFH, -1, 100B
• Components of X are at X, X+2, X+4, X+8
• Components of Y are at Y, Y+1, …, Y+15
• Components of Z are at Z, Z+4, Z+8, Z+12
10/21/12      Dr. Tim Margush - Assembly Language Program
                                       6
DUP
• Allows a sequence of storage locations to
  be defined or reserved
• Only used as an operand of a define
  directive
DB   40 DUP (?)
DW   10h DUP (0)
DB   3 dup ("ABC")
db   4 dup(3 dup (0,1), 2 dup('$'))
10/21/12      Dr. Tim Margush - Assembly Language Program
                                       7
Word Storage
• Word, doubleword, and quadword data are
  stored in reverse byte order (in memory)
Directive            Bytes in Storage
DW 256               00 01
DD 1234567H          67 45 23 01
DQ 10                0A 00 00 00 00 00 00 00
X DW 35DAh           DA 35
   Low byte of X is at X, high byte of X is at X+1

10/21/12          Dr. Tim Margush - Assembly Language Program
                                           8
Named Constants
• Symbolic names associated with storage locations
  represent addresses
• Named constants are symbols created to represent
  specific values determined by an expression
• Named constants can be numeric or string
• Some named constants can be redefined
• No storage is allocated for these values


10/21/12        Dr. Tim Margush - Assembly Language Program
                                         9
Equal Sign Directive
• name = expression
   › expression must be numeric
   › these symbols may be redefined at any time
   maxint = 7FFFh
   count = 1
   DW count
   count = count * 2
   DW count

10/21/12        Dr. Tim Margush - Assembly Language Program
                                         10
EQU Directive
• name EQU expression
   › expression can be string or numeric
   › Use < and > to specify a string EQU
   › these symbols cannot be redefined later in the
     program
   sample EQU 7Fh
   aString EQU <1.234>
   message EQU <This is a message>
10/21/12         Dr. Tim Margush - Assembly Language Program
                                          11
Data Transfer Instructions
• MOV target, source          • reg can be any non-
   ›   reg, reg                 segment register
   ›   mem, reg                 except IP cannot be
   ›   reg, mem                 the target register
   ›   mem, immed             • MOV's between a
   ›   reg, immed               segment register and
• Sizes of both operands        memory or a 16-bit
  must be the same              register are possible


10/21/12            Dr. Tim Margush - Assembly Language Program
                                             12
Sample MOV Instructions
b db 4Fh       • When a variable is created with a
w dw 2048        define directive, it is assigned a
                 default size attribute (byte, word,
mov   bl,dh      etc)
mov   ax,w     • You can assign a size attribute
mov   ch,b       using LABEL
mov   al,255      LoByte LABEL BYTE
mov   w,-100      aWord DW 97F2h
mov   b,0

10/21/12        Dr. Tim Margush - Assembly Language Program
                                         13
Addresses with Displacements
b db 4Fh, 20h, 3Ch            • The assembler
w dw 2048, -100, 0              computes an address
                                based on the
mov bx, w+2                     expression
mov b+1, ah                   • NOTE: These are address
mov ah, b+5                     computations done at
mov dx, w-3                     assembly time
                                   MOV ax, b-1
• Type checking is still in
                                will not subtract 1 from
  effect                        the value stored at b

10/21/12            Dr. Tim Margush - Assembly Language Program
                                             14
eXCHanGe
• XCHG target, source     • This provides an
   › reg, reg               efficient means to
   › reg, mem               swap the operands
   › mem, reg                 › No temporary storage
• MOV and XCHG                  is needed
                              › Sorting often requires
  cannot perform
                                this type of operation
  memory to memory
                              › This works only with
  moves                         the general registers


10/21/12        Dr. Tim Margush - Assembly Language Program
                                         15
Arithmetic Instructions
ADD dest, source          • source can be a
SUB dest, source            general register,
INC dest                    memory location, or
                            constant
DEC dest
                          • dest can be a register
NEG dest                    or memory location
• Operands must be of         › except operands cannot
  the same size                 both be memory


10/21/12        Dr. Tim Margush - Assembly Language Program
                                         16
Program Segment Structure
• Data Segments               • Stack Segment
   › Storage for variables      › used to set aside
   › Variable addresses are       storage for the stack
     computed as offsets        › Stack addresses are
     from start of this           computed as offsets
     segment                      into this segment
• Code Segment                • Segment directives
   › contains executable        .data
     instructions               .code
                                .stack size

10/21/12          Dr. Tim Margush - Assembly Language Program
                                           17
Memory Models
• .Model memory_model
   ›   tiny: code+data <= 64K (.com program)
   ›   small: code<=64K, data<=64K, one of each
   ›   medium: data<=64K, one data segment
   ›   compact: code<=64K, one code segment
   ›   large: multiple code and data segments
   ›   huge: allows individual arrays to exceed 64K
   ›   flat: no segments, 32-bit addresses, protected
       mode only (80386 and higher)
10/21/12           Dr. Tim Margush - Assembly Language Program
                                            18
Program Skeleton
.model small         •   Select a memory model
.stack 100H          •   Define the stack size
.data                •   Declare variables
  ;declarations      •   Write code
.code                    › organize into procedures
main proc            • Mark the end of the
  ;code                source file
main endp                › optionally, define the
  ;other procs             entry point
end main
10/21/12     Dr. Tim Margush - Assembly Language Program
                                      19

More Related Content

What's hot

8257 DMA Controller
8257 DMA Controller8257 DMA Controller
8257 DMA ControllerShivamSood22
 
Architecture of 8086 Microprocessor
Architecture of 8086 Microprocessor  Architecture of 8086 Microprocessor
Architecture of 8086 Microprocessor Mustapha Fatty
 
Addressing modes of 8086
Addressing modes of 8086Addressing modes of 8086
Addressing modes of 8086saurav kumar
 
Interrupts on 8086 microprocessor by vijay kumar.k
Interrupts on 8086 microprocessor by vijay kumar.kInterrupts on 8086 microprocessor by vijay kumar.k
Interrupts on 8086 microprocessor by vijay kumar.kVijay Kumar
 
Addressing modes of 8086 - Binu Joy
Addressing modes of 8086 - Binu JoyAddressing modes of 8086 - Binu Joy
Addressing modes of 8086 - Binu JoyBinu Joy
 
Byte and string manipulation 8086
Byte and string manipulation 8086Byte and string manipulation 8086
Byte and string manipulation 8086mpsrekha83
 
8086 in minimum mode
8086 in minimum mode8086 in minimum mode
8086 in minimum modeSridari Iyer
 
Microcontroller-8051.ppt
Microcontroller-8051.pptMicrocontroller-8051.ppt
Microcontroller-8051.pptDr.YNM
 
Accessing I/O Devices
Accessing I/O DevicesAccessing I/O Devices
Accessing I/O DevicesSlideshare
 
3.programmable interrupt controller 8259
3.programmable interrupt controller 82593.programmable interrupt controller 8259
3.programmable interrupt controller 8259MdFazleRabbi18
 
Assembly Language Lecture 4
Assembly Language Lecture 4Assembly Language Lecture 4
Assembly Language Lecture 4Motaz Saad
 
Instruction sets of 8086
Instruction sets of 8086Instruction sets of 8086
Instruction sets of 8086Mahalakshmiv11
 
8086 modes
8086 modes8086 modes
8086 modesPDFSHARE
 
LPC 2148 ARM MICROCONTROLLER
LPC 2148 ARM MICROCONTROLLERLPC 2148 ARM MICROCONTROLLER
LPC 2148 ARM MICROCONTROLLERsravannunna24
 

What's hot (20)

8257 DMA Controller
8257 DMA Controller8257 DMA Controller
8257 DMA Controller
 
Architecture of 8086 Microprocessor
Architecture of 8086 Microprocessor  Architecture of 8086 Microprocessor
Architecture of 8086 Microprocessor
 
Pin diagram 8085
Pin diagram 8085 Pin diagram 8085
Pin diagram 8085
 
Addressing modes of 8086
Addressing modes of 8086Addressing modes of 8086
Addressing modes of 8086
 
Interrupts on 8086 microprocessor by vijay kumar.k
Interrupts on 8086 microprocessor by vijay kumar.kInterrupts on 8086 microprocessor by vijay kumar.k
Interrupts on 8086 microprocessor by vijay kumar.k
 
Addressing modes of 8086 - Binu Joy
Addressing modes of 8086 - Binu JoyAddressing modes of 8086 - Binu Joy
Addressing modes of 8086 - Binu Joy
 
Byte and string manipulation 8086
Byte and string manipulation 8086Byte and string manipulation 8086
Byte and string manipulation 8086
 
Assembly 8086
Assembly 8086Assembly 8086
Assembly 8086
 
8086 in minimum mode
8086 in minimum mode8086 in minimum mode
8086 in minimum mode
 
Microcontroller-8051.ppt
Microcontroller-8051.pptMicrocontroller-8051.ppt
Microcontroller-8051.ppt
 
dual-port RAM (DPRAM)
dual-port RAM (DPRAM)dual-port RAM (DPRAM)
dual-port RAM (DPRAM)
 
Accessing I/O Devices
Accessing I/O DevicesAccessing I/O Devices
Accessing I/O Devices
 
3.programmable interrupt controller 8259
3.programmable interrupt controller 82593.programmable interrupt controller 8259
3.programmable interrupt controller 8259
 
8086 alp
8086 alp8086 alp
8086 alp
 
Assembly Language Lecture 4
Assembly Language Lecture 4Assembly Language Lecture 4
Assembly Language Lecture 4
 
8085 instruction set
8085 instruction set8085 instruction set
8085 instruction set
 
Instruction sets of 8086
Instruction sets of 8086Instruction sets of 8086
Instruction sets of 8086
 
8086 micro processor
8086 micro processor8086 micro processor
8086 micro processor
 
8086 modes
8086 modes8086 modes
8086 modes
 
LPC 2148 ARM MICROCONTROLLER
LPC 2148 ARM MICROCONTROLLERLPC 2148 ARM MICROCONTROLLER
LPC 2148 ARM MICROCONTROLLER
 

Similar to Introduction to 8086 Assembly Language

DB2 and storage management
DB2 and storage managementDB2 and storage management
DB2 and storage managementCraig Mullins
 
Best Practices for Migrating Your Data Warehouse to Amazon Redshift
Best Practices for Migrating Your Data Warehouse to Amazon RedshiftBest Practices for Migrating Your Data Warehouse to Amazon Redshift
Best Practices for Migrating Your Data Warehouse to Amazon RedshiftAmazon Web Services
 
TriHUG - Beyond Batch
TriHUG - Beyond BatchTriHUG - Beyond Batch
TriHUG - Beyond Batchboorad
 
Hadoop 3.0 - Revolution or evolution?
Hadoop 3.0 - Revolution or evolution?Hadoop 3.0 - Revolution or evolution?
Hadoop 3.0 - Revolution or evolution?Uwe Printz
 
Hadoop distributed computing framework for big data
Hadoop distributed computing framework for big dataHadoop distributed computing framework for big data
Hadoop distributed computing framework for big dataCyanny LIANG
 
Webinar: Understanding Storage for Performance and Data Safety
Webinar: Understanding Storage for Performance and Data SafetyWebinar: Understanding Storage for Performance and Data Safety
Webinar: Understanding Storage for Performance and Data SafetyMongoDB
 
Backup, Restore, and Disaster Recovery
Backup, Restore, and Disaster RecoveryBackup, Restore, and Disaster Recovery
Backup, Restore, and Disaster RecoveryMongoDB
 
DB2 and Storage Management
DB2 and Storage ManagementDB2 and Storage Management
DB2 and Storage ManagementCraig Mullins
 
Apache Arrow: In Theory, In Practice
Apache Arrow: In Theory, In PracticeApache Arrow: In Theory, In Practice
Apache Arrow: In Theory, In PracticeDremio Corporation
 
Hadoop Fundamentals
Hadoop FundamentalsHadoop Fundamentals
Hadoop Fundamentalsits_skm
 
Hadoop 3.0 - Revolution or evolution?
Hadoop 3.0 - Revolution or evolution?Hadoop 3.0 - Revolution or evolution?
Hadoop 3.0 - Revolution or evolution?Uwe Printz
 
MongoDB Days UK: Tales from the Field
MongoDB Days UK: Tales from the FieldMongoDB Days UK: Tales from the Field
MongoDB Days UK: Tales from the FieldMongoDB
 
QuadIron An open source library for number theoretic transform-based erasure ...
QuadIron An open source library for number theoretic transform-based erasure ...QuadIron An open source library for number theoretic transform-based erasure ...
QuadIron An open source library for number theoretic transform-based erasure ...Scality
 
Android supporting multiple screen
Android supporting multiple screenAndroid supporting multiple screen
Android supporting multiple screenDao Quang Anh
 
Ceph Day London 2014 - Best Practices for Ceph-powered Implementations of Sto...
Ceph Day London 2014 - Best Practices for Ceph-powered Implementations of Sto...Ceph Day London 2014 - Best Practices for Ceph-powered Implementations of Sto...
Ceph Day London 2014 - Best Practices for Ceph-powered Implementations of Sto...Ceph Community
 

Similar to Introduction to 8086 Assembly Language (20)

DB2 and storage management
DB2 and storage managementDB2 and storage management
DB2 and storage management
 
Best Practices for Migrating Your Data Warehouse to Amazon Redshift
Best Practices for Migrating Your Data Warehouse to Amazon RedshiftBest Practices for Migrating Your Data Warehouse to Amazon Redshift
Best Practices for Migrating Your Data Warehouse to Amazon Redshift
 
TriHUG - Beyond Batch
TriHUG - Beyond BatchTriHUG - Beyond Batch
TriHUG - Beyond Batch
 
Hadoop 3.0 - Revolution or evolution?
Hadoop 3.0 - Revolution or evolution?Hadoop 3.0 - Revolution or evolution?
Hadoop 3.0 - Revolution or evolution?
 
Hadoop distributed computing framework for big data
Hadoop distributed computing framework for big dataHadoop distributed computing framework for big data
Hadoop distributed computing framework for big data
 
Hbase: an introduction
Hbase: an introductionHbase: an introduction
Hbase: an introduction
 
Webinar: Understanding Storage for Performance and Data Safety
Webinar: Understanding Storage for Performance and Data SafetyWebinar: Understanding Storage for Performance and Data Safety
Webinar: Understanding Storage for Performance and Data Safety
 
Backup, Restore, and Disaster Recovery
Backup, Restore, and Disaster RecoveryBackup, Restore, and Disaster Recovery
Backup, Restore, and Disaster Recovery
 
DB2 and Storage Management
DB2 and Storage ManagementDB2 and Storage Management
DB2 and Storage Management
 
HDF5 Advanced Topics
HDF5 Advanced TopicsHDF5 Advanced Topics
HDF5 Advanced Topics
 
Apache Arrow: In Theory, In Practice
Apache Arrow: In Theory, In PracticeApache Arrow: In Theory, In Practice
Apache Arrow: In Theory, In Practice
 
Hadoop Fundamentals
Hadoop FundamentalsHadoop Fundamentals
Hadoop Fundamentals
 
Hadoop fundamentals
Hadoop fundamentalsHadoop fundamentals
Hadoop fundamentals
 
2012 apache hadoop_map_reduce_windows_azure
2012 apache hadoop_map_reduce_windows_azure2012 apache hadoop_map_reduce_windows_azure
2012 apache hadoop_map_reduce_windows_azure
 
Hadoop 3.0 - Revolution or evolution?
Hadoop 3.0 - Revolution or evolution?Hadoop 3.0 - Revolution or evolution?
Hadoop 3.0 - Revolution or evolution?
 
MongoDB Days UK: Tales from the Field
MongoDB Days UK: Tales from the FieldMongoDB Days UK: Tales from the Field
MongoDB Days UK: Tales from the Field
 
Lecture 2 part 1
Lecture 2 part 1Lecture 2 part 1
Lecture 2 part 1
 
QuadIron An open source library for number theoretic transform-based erasure ...
QuadIron An open source library for number theoretic transform-based erasure ...QuadIron An open source library for number theoretic transform-based erasure ...
QuadIron An open source library for number theoretic transform-based erasure ...
 
Android supporting multiple screen
Android supporting multiple screenAndroid supporting multiple screen
Android supporting multiple screen
 
Ceph Day London 2014 - Best Practices for Ceph-powered Implementations of Sto...
Ceph Day London 2014 - Best Practices for Ceph-powered Implementations of Sto...Ceph Day London 2014 - Best Practices for Ceph-powered Implementations of Sto...
Ceph Day London 2014 - Best Practices for Ceph-powered Implementations of Sto...
 

More from Mir Majid

Use case diagrams
Use case diagramsUse case diagrams
Use case diagramsMir Majid
 
Dfd and flowchart
Dfd and flowchartDfd and flowchart
Dfd and flowchartMir Majid
 
.Net framework interview questions
.Net framework interview questions.Net framework interview questions
.Net framework interview questionsMir Majid
 
My sql technical reference manual
My sql technical reference manualMy sql technical reference manual
My sql technical reference manualMir Majid
 
Holographic memory
Holographic memoryHolographic memory
Holographic memoryMir Majid
 
Simulation programs
Simulation programsSimulation programs
Simulation programsMir Majid
 
Compiler Design
Compiler DesignCompiler Design
Compiler DesignMir Majid
 
Lessons from life_2
Lessons from life_2Lessons from life_2
Lessons from life_2Mir Majid
 
Time management
Time managementTime management
Time managementMir Majid
 
Lest weforget
Lest weforget Lest weforget
Lest weforget Mir Majid
 
E hospital manager
E hospital managerE hospital manager
E hospital managerMir Majid
 

More from Mir Majid (20)

Use case diagrams
Use case diagramsUse case diagrams
Use case diagrams
 
Dfd and flowchart
Dfd and flowchartDfd and flowchart
Dfd and flowchart
 
.Net framework interview questions
.Net framework interview questions.Net framework interview questions
.Net framework interview questions
 
My sql technical reference manual
My sql technical reference manualMy sql technical reference manual
My sql technical reference manual
 
Dotnet basics
Dotnet basicsDotnet basics
Dotnet basics
 
Holographic memory
Holographic memoryHolographic memory
Holographic memory
 
Data recovery
Data recoveryData recovery
Data recovery
 
Simulation programs
Simulation programsSimulation programs
Simulation programs
 
Router bridge
Router bridgeRouter bridge
Router bridge
 
Compiler Design
Compiler DesignCompiler Design
Compiler Design
 
Assembler
AssemblerAssembler
Assembler
 
Lessons from life_2
Lessons from life_2Lessons from life_2
Lessons from life_2
 
Child faces 2
Child faces 2Child faces 2
Child faces 2
 
Time management
Time managementTime management
Time management
 
Lest weforget
Lest weforget Lest weforget
Lest weforget
 
E hospital manager
E hospital managerE hospital manager
E hospital manager
 
Crypt
CryptCrypt
Crypt
 
Smart cards
Smart cardsSmart cards
Smart cards
 
Rfid
RfidRfid
Rfid
 
Rfid seminar
Rfid seminarRfid seminar
Rfid seminar
 

Introduction to 8086 Assembly Language

  • 1. Introduction to 8086 Assembly Language Assembly Language Programming University of Akron Dr. Tim Margush
  • 2. Program Statements name operation operand(s) comment • Operation is a predefined or reserved word › mnemonic - symbolic operation code › directive - pseudo-operation code • Space or tab separates initial fields • Comments begin with semicolon • Most assemblers are not case sensitive 10/21/12 Dr. Tim Margush - Assembly Language Program 2
  • 3. Program Data and Storage • Pseudo-ops to define • These directives data or reserve storage require one or more › DB - byte(s) operands › DW - word(s) › define memory › DD - doubleword(s) contents › DQ - quadword(s) › specify amount of › storage to reserve for DT - tenbyte(s) run-time data 10/21/12 Dr. Tim Margush - Assembly Language Program 3
  • 4. Defining Data • Numeric data values • A list of values may be › 100 - decimal used - the following › 100B - binary creates 4 consecutive › 100H - hexadecimal words › '100' - ASCII DW 40CH,10B,-13,0 › "100" - ASCII • A ? represents an • Use the appropriate uninitialized storage DEFINE directive location (byte, word, etc.) DB 255,?,-128,'X' 10/21/12 Dr. Tim Margush - Assembly Language Program 4
  • 5. Naming Storage Locations • Names can be • ANum refers to a byte associated with storage location, storage locations initialized to FCh ANum DB -4 • The next word has no DW 17 associated name ONE • ONE and UNO refer UNO DW 1 X DD ? to the same word • These names are called • X is an unitialized variables doubleword 10/21/12 Dr. Tim Margush - Assembly Language Program 5
  • 6. Arrays • Any consecutive storage locations of the same size can be called an array X DW 40CH,10B,-13,0 Y DB 'This is an array' Z DD -109236, FFFFFFFFH, -1, 100B • Components of X are at X, X+2, X+4, X+8 • Components of Y are at Y, Y+1, …, Y+15 • Components of Z are at Z, Z+4, Z+8, Z+12 10/21/12 Dr. Tim Margush - Assembly Language Program 6
  • 7. DUP • Allows a sequence of storage locations to be defined or reserved • Only used as an operand of a define directive DB 40 DUP (?) DW 10h DUP (0) DB 3 dup ("ABC") db 4 dup(3 dup (0,1), 2 dup('$')) 10/21/12 Dr. Tim Margush - Assembly Language Program 7
  • 8. Word Storage • Word, doubleword, and quadword data are stored in reverse byte order (in memory) Directive Bytes in Storage DW 256 00 01 DD 1234567H 67 45 23 01 DQ 10 0A 00 00 00 00 00 00 00 X DW 35DAh DA 35 Low byte of X is at X, high byte of X is at X+1 10/21/12 Dr. Tim Margush - Assembly Language Program 8
  • 9. Named Constants • Symbolic names associated with storage locations represent addresses • Named constants are symbols created to represent specific values determined by an expression • Named constants can be numeric or string • Some named constants can be redefined • No storage is allocated for these values 10/21/12 Dr. Tim Margush - Assembly Language Program 9
  • 10. Equal Sign Directive • name = expression › expression must be numeric › these symbols may be redefined at any time maxint = 7FFFh count = 1 DW count count = count * 2 DW count 10/21/12 Dr. Tim Margush - Assembly Language Program 10
  • 11. EQU Directive • name EQU expression › expression can be string or numeric › Use < and > to specify a string EQU › these symbols cannot be redefined later in the program sample EQU 7Fh aString EQU <1.234> message EQU <This is a message> 10/21/12 Dr. Tim Margush - Assembly Language Program 11
  • 12. Data Transfer Instructions • MOV target, source • reg can be any non- › reg, reg segment register › mem, reg except IP cannot be › reg, mem the target register › mem, immed • MOV's between a › reg, immed segment register and • Sizes of both operands memory or a 16-bit must be the same register are possible 10/21/12 Dr. Tim Margush - Assembly Language Program 12
  • 13. Sample MOV Instructions b db 4Fh • When a variable is created with a w dw 2048 define directive, it is assigned a default size attribute (byte, word, mov bl,dh etc) mov ax,w • You can assign a size attribute mov ch,b using LABEL mov al,255 LoByte LABEL BYTE mov w,-100 aWord DW 97F2h mov b,0 10/21/12 Dr. Tim Margush - Assembly Language Program 13
  • 14. Addresses with Displacements b db 4Fh, 20h, 3Ch • The assembler w dw 2048, -100, 0 computes an address based on the mov bx, w+2 expression mov b+1, ah • NOTE: These are address mov ah, b+5 computations done at mov dx, w-3 assembly time MOV ax, b-1 • Type checking is still in will not subtract 1 from effect the value stored at b 10/21/12 Dr. Tim Margush - Assembly Language Program 14
  • 15. eXCHanGe • XCHG target, source • This provides an › reg, reg efficient means to › reg, mem swap the operands › mem, reg › No temporary storage • MOV and XCHG is needed › Sorting often requires cannot perform this type of operation memory to memory › This works only with moves the general registers 10/21/12 Dr. Tim Margush - Assembly Language Program 15
  • 16. Arithmetic Instructions ADD dest, source • source can be a SUB dest, source general register, INC dest memory location, or constant DEC dest • dest can be a register NEG dest or memory location • Operands must be of › except operands cannot the same size both be memory 10/21/12 Dr. Tim Margush - Assembly Language Program 16
  • 17. Program Segment Structure • Data Segments • Stack Segment › Storage for variables › used to set aside › Variable addresses are storage for the stack computed as offsets › Stack addresses are from start of this computed as offsets segment into this segment • Code Segment • Segment directives › contains executable .data instructions .code .stack size 10/21/12 Dr. Tim Margush - Assembly Language Program 17
  • 18. Memory Models • .Model memory_model › tiny: code+data <= 64K (.com program) › small: code<=64K, data<=64K, one of each › medium: data<=64K, one data segment › compact: code<=64K, one code segment › large: multiple code and data segments › huge: allows individual arrays to exceed 64K › flat: no segments, 32-bit addresses, protected mode only (80386 and higher) 10/21/12 Dr. Tim Margush - Assembly Language Program 18
  • 19. Program Skeleton .model small • Select a memory model .stack 100H • Define the stack size .data • Declare variables ;declarations • Write code .code › organize into procedures main proc • Mark the end of the ;code source file main endp › optionally, define the ;other procs entry point end main 10/21/12 Dr. Tim Margush - Assembly Language Program 19