DEFINED VARIABLE System Programing Lab Second Year Introduction
DEFINED VARIABLE System Programing Lab Second Year
Introduction • Variable is a memory location. Our compiler supports two types of variables: BYTE and WORD • There are two types of the variables: Numeric variable & String variables • Syntax for a variable declaration: Name Directive Value Ahmed 1 DB 02 H Val_2 DW 0123 H
Introduction Name Must start with letter. Must defer from instruction names. It’s not important small or large letter because assembly isn’t sensitive language. Directive • Can be consist of letters, numbers, and symbols. • Can be DB to define byte, or DW to define 2 bytes. Value • Can be any numeric, or string value in any supported numbering system (hexadecimal, binary, octal, ASCII or decimal), or "? " symbol for variables that are not initialized.
Numeric variable • Variable can define numerical numbers in multiple forms: v. Constant: value in this type of variables can not be change. Variable Description Var 1 EQU 02 H Define constant number 8 bit Var 1 EQU 0123 H Define constant number 16 bit v. Variable: value in this type of variables can be change Variable Var 1 DB 02 H Var 2 DW 0234 H Description Define 1 value 8 bit stored at one memory location Define 1 value 16 bit stored at tow memory locations Var 3 DB 01 H, 02 H, 03 H, 04 H Define 4 values each 8 bit (array) at 4 memory locations Var 4 DW 0123 H, 4567 H, 89 ABH Define 3 values each 16 bit (array) at 6 memory locations Var 7 DB 6 DUP (01 H) Define an array (6 ML) using DUP instruction Var 8 DB 3 DUP (01 H, 02 H) Define an array (6 ML) using DUP instruction
String variables • String variables can be one or multiple letters Variable Var 5 DB ‘A’ Description Define 1 ASCII Code at 1 memory locations Var 6 DB “AHMED” Define 5 ASCII Codes (array) at 5 memory locations Var 7 DB ‘A’, ’H’, ’M’, ’E’, ’D’ Define 5 ASCII Codes (array) at 5 memory locations • DUP an instruction duplicate the value between brackets n times based on the number written before it. Variable Result Var 5 DB 4 DUP (02 H) N=4 , Var 5 = 02 H, 02 H Var 5 DW 4 DUP (0123 H) N=4 , Var 5 = 0123 H, 0123 H Var 5 DB 4 DUP (02 H, 03 H) N=4 , Var 5 = 02 H, 03 H, 02, 03, 02, 03
Reading Variables • There are many ways to read variables: • Offset : Store variable address into specific register. MOV BX, OFFSET Var 1 • LEA (load effective address) LEA BX, Var 1 • Direct : can use it if there is one value MOV AL, Var 1 Program 1 MOV BX, offset Var 1 MOV AL, [BX] HLT Var 1 DB 01 H Program 2 LEA BX, Var 1 MOV AL, [BX] HLT Var 1 DB 01 H Program 3 MOV AL, Var 1 HLT Var 1 DB 01 H
Define Variables • There are tow ways to define variables: • At the beginning of program: . Data VAR 1 DB 01 H. code MOV BX, OFFSET VAR 1 MOV AL, [BX] HLT • At the end of program: MOV BX, OFFSET VAR 1 MOV AL, [BX] HLT VAR 1 DB 01 H
EXAMPLES • Write a program to exchange the content of var 1, var 2. DATA Var 1 DB 01 H Var 2 DB 02 H. CODE MOV AX, 0100 H MOV DS, AX MOV SI, OFFSET Var 1 MOV DI, OFFSET Var 2 MOV AL, [SI] MOV BL, [DI] MOV [SI], BL MOV [DI], AL HLT MOV AX, 0100 MOV DS, AX MOV SI, OFFSET Var 1 MOV DI, OFFSET Var 2 MOV AL, [SI] MOV BL, [DI] MOV [SI], BL MOV [DI], AL HLT Var 1 DB 01 H Var 2 DB 02 H
EXAMPLES • Write a program to transfer the content of var 1 in data segment started at 2000 H , to var 2 in stack segment started at 3000 H. DATA Var 1 DB 01 H Var 2 DB ? . CODE MOV AX, 2000 H MOV DS, AX MOV SI, OFFSET Var 1 MOV BL, [SI] MOV AX, 3000 H MOV SS, AX MOV BP, OFFSET Var 2 MOV [BP], BL HLT Var 1 DB 01 H Var 2 DB ?
- Slides: 9