Coal lab 10 notes
USES
Procedure
Nameprocedure proc keyword
- (prog)
Ret
Nameprocedure endp
Procedure is called with keyword ‘call’ and the procedure name
Uses keyword is used with proc to push pop registers directly
Macro
Syntax:
namemacro macro keyword (a1, a2) arguments can be passed to simply without brackets write the
var
-(prog)
Endm
Calling is done by just writing name and passing arguments if any (can pass reg,var,direct vals)
No arithmetic operations are not allowed within macro
Only push/pop, saving, moving simple tasks.
Similar to ‘proc’ just the prog within body is diff with some restrictions
Structure
Namestruct struct keyword
//Name db 50 dup(?) (a string variable of byte type)
Sem db ? (var type of byte)
Cgpa db ?
Namestruct ends
Variables withing struct are known as fields
Same concept we learnt in c++
Only fields are added usually
If your macros are in another file, that files are called .inc and .lib files
.lib/ .inc do not need. code or .data keywords before coding
The code you write in are known as .asm files
Struct /macro files should be in the same file where your .Asm file is present
To include the files in asm file:
keyword include NAMEFILE.inc/lib
. model
.data
How to use structure?
It is used within .data segment
In code, another variable of that structure is defined
(Ignore name variable in above structure)
.data
(struct name you defined) S1 Namestruct <>
leaving ‘<>’ blanks mean you’re not assigning values to struct vars
Or
S1 Namestruct <4,3>
If you initialize the values, then 4 goes for sem and 3 for cgpa
Or
S1 Namestruct <,3> (ya phir) S1 Namestruct <4,>
One var initialized other left empty
If you didn’t initialize the vars and are taking user input:
. code
Mov ah,01h
Int 21h
mov S1. Sem, al
(For printing)
mov dl, S1. Sem
mov ah,02h
int 21h
(To save string values in struct)
initializing within .data segment simple use double quotes
.data
S1 Namestruct <” Fatima, $”>
Or else take from user and send the offset into variable