0% found this document useful (0 votes)
78 views8 pages

Coal LAB 01: Lab Instructor: Ayeza Ghazanfar

This document discusses the structure and basic concepts of assembly language programs. It defines data types available in assembly, such as data registers. It provides an example assembly program that declares variables in the .data section, performs arithmetic operations like addition and subtraction in the .code section using MOV, ADD, and SUB instructions, and calls library procedures to dump registers and read/write integers. The sample code demonstrates how to move data between registers and memory locations, add and subtract values, and interface with the operating system.

Uploaded by

Muhammad Osama
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
78 views8 pages

Coal LAB 01: Lab Instructor: Ayeza Ghazanfar

This document discusses the structure and basic concepts of assembly language programs. It defines data types available in assembly, such as data registers. It provides an example assembly program that declares variables in the .data section, performs arithmetic operations like addition and subtraction in the .code section using MOV, ADD, and SUB instructions, and calls library procedures to dump registers and read/write integers. The sample code demonstrates how to move data between registers and memory locations, add and subtract values, and interface with the operating system.

Uploaded by

Muhammad Osama
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 8

COAL

LAB 01

L A B I N S T R U C T O R : AY E Z A G H A Z A N F A R
LAB 01:BASIC ASSEMBLY LANGUAGE CONCEPTS

Objectives:
• To install Irvine Library in visual studio
• Learn structure of program in assembly
• To learn basic addressing modes of assembly language
DEFINING DATA:
DATA TYPES AVAILABLE IN ASSEMBLY LANGUAGE
DATA REGISTERS
STRUCTURE OF PROGRAM IN ASSEMBLY
TITLE Template (Template.asm) ; you can give your own title
; Program Description: ; The semi colon is used to start a COMMENT
INCLUDE Irvine32.inc ; INCLUDE is a directive to Assembler
; Irvine32 is the Library name
data
; (you declare Variables here)
code
Main PROC ; executable code begins here
; (write your code here)
Exit ; return control to Operating System
main ENDP
End main
SAMPLE CODE
.data
Val1 DWORD 30000
Val2 DWORD 20000
Val3 DWORD 10000
.code
main PROC
mov eax,Val1 ; eax=30000h
add eax,Val2 ; eax=eax+Val2 ;50000h
sub eax,Val3 ; eax= eax-Val3 ;40000h
call DumpRegs ; Call Irvine library procedure to print Register Contents.
exit
main ENDP
END main
EXPLANATION OF SAMPLE CODE
• Mov: mov instruction copies data from source to destination. In above instruction value of Val1 copies to
eax . Here is a list of general variant of MOV
• Mov reg,reg
• Mov mem,reg
• Mov reg,mem
• Mov mem,imm
• Mov reg,imm

MOV is very flexible in its use of operands, as long as the following rules are observed:
Both operands must be the same size.
Both operands cannot be memory operands.
CS, EIP, and IP cannot be destination operands.
An immediate value cannot be moved to a segment register.
Add: the add instruction adds a source operand to a destination operand of the same size.
In above instruction Val2 is added to eax .
Sub: The sub instructions subtract a source operand from a destination operand. In above
instruction Val3 is subtracted from eax.
Call DumpRegs: The call DumpRegs procedure displays the EAX, EBX, ECX, EDX, ESI, EDI, ESP,
EIP, EFL register in hexadecimal.

Call ReadInt: The ReadInt procedure reads a 32-bit signed integer from standard input and
store value in eax register.
Call WriteInt: The writeInt procedure writes a 32-bit signed integer to standard output in
decimal format. Before calling it,place the integer in eax.

You might also like