Download Memory Address

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
Memory Address
•
•
•
•
•
•
•
•
•
Segment-offset address
Base location (segment) + logical location (offset)
Example:
For 32-bits segment-offset address, 08F1:0100
represents a 20-bits absolute address 09010
0
8
F
1
(0)
0000 1000 1111 0001 0000
+
0
1
0
0
0
9
0
1
0
Floating-Point Unit
•
80-bit Registers
48-bit Pointer Register
ST(0)
FPU Instruction Pointer
ST(1)
FPU Data Pointer
Tag Register
Control Register
Status Register
16-bit Control Register
ST(7)
Opcode Register
DUP Operator
• db 20 dup(0) ; 20 bytes, all equal to zero
• db 20 dup (?) ; 20 un-initialized bytes
• db 4 dup(“ABC”) ; 12 bytes:
“ABCABCABCABC”
• db 4096 dup(0);
Assembly Language
• Basic elements
• 1. Constant and expression
•
3
•
3.5
• - 3.5
• 26. E+07
Integer Constants
•
•
•
•
•
•
•
•
26
1Ah
1101b
36q
2BH
43Q
36D
48d
decimal
hexadecimal
binary
octal
hexadecimal
octal
decimal
decimal
Constant Expression, Symbolic constants
and Character or String Constants
•
•
•
•
•
•
•
Constant expression
5 26.5 4*20 -3*4/6 -2.301E+04
A symbolic constant
rows = 5 columns = 10
Number = rows * columns
Character or string constant
‘ABC’ ‘X’ “ This is a test” “The dog is
black”
Assembly Language Statement
• Consists of :
• 1. A name, an instruction mnemonic,
operands, and a comment. It has the
following form:
• [name] [mnemonic] [operands] [;comment]
• Example:
• call sub1 ; transfer of control
Names
• A name identifies a label, variable, symbolic, or
a keyword.
• What can be used as a name:
• 1. A… Z a… z
• 2. 0-9
• 3. ?
• 4. _ Underscore
• 5. @
• 6. $
• Length limit----maximum of 247 characters (in
MASM)
Variables and Labels
• 1. A variable is a location in a program’s data area
that has been assigned a name.
• Such as: count1 db 50 ;
•
message db “ Hello world!”, odh, 0ah
• 2. Label. If a name appears in the code area of a
program, it is called a label.
• Example:
•
LabelA: mov ax, 0
•
mov bx, ffh
•
Hello World Program
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
title Hello World Program
(hello.asm)
; This program displays "Hello, world!"
.model small
.stack 100h
.data
message db "Hello, world!",0dh,0ah,'$'
.code
main proc
mov ax,@data
mov ds,ax
mov ah,9
mov dx,offset message
int 21h
mov ax,4C00h
int 21h
main endp
end main
Analyze the Program
•
•
•
•
•
•
•
•
•
•
.model small ----specify the program’s memory model
For that model we can have:
Tiny--- code + data less than 64k
Samll--- code <=64k, data ,<=64k One code segment and
one data segment
Medium---Data <=64k, code any size. Multiple code
segment, one data segment
Compact---Code <= 64k, data any size. Multiple data
segment, one code segment
Large---Code >64k, data >64k both multiple segment
Huge---Same as the large model, except that individual
variables such as arrays may be large than 64k
Flat--- No segments. 32-bits addresses are used for both
code and data. ***Protected mode only
Standard Assembler Directives
•
•
•
•
•
•
end---end of program assembly
endp--- end of procedure
page---Set a page format for the listing file
proc---Begin procedure
title---Title of the listing file
.code--- Mark the beginning of the code
segment
• .data--• .model--• .stack---Set the size of the stack segment
Data Allocation Directives
•
•
•
•
•
•
DB--------------------1 byte
DW-------------------2
DD--------------------4
DF, DP---------------6---define far pointer
DQ--------------------8 define Quadword
DT--------------------10 define 10 bytes
Examples
•
•
•
•
Char1 db ‘A’
Char2 db “A’ –10
Smallest db –128
Max_unsign db 255
; ASCII char.
; expression
• Myval db ? Only reserve memory, no
initializeers
• List db 10,20,30,40,50
Characters and Integers are one
and the same
•
•
•
•
•
Char db ‘A’
Hex db 41h
Dec db 65
Bin db 01000001
Oct db 101q
Type mix is allowed
• List db 10, 20, 41h, 10011000b
• List2 db 0ah, 29h, ‘a’, 22
Strings
• Cstring db “Good morning”,0
• Pstring db 12, “Good morning”
• Longstring db “This is a long string, that”
•
db “ clearly is going to take”
•
db “ several lines to store”,0
Symbolic Constants
• Equate directives
• They allow constants and literals to be
given symbolic names.
• 1. Equal-Sign Directive (redefinable)
• The syntax is: name = expression
• Examples: string = ‘XY’
•
count = 500
•
minInt = 8000h
•
To assign a 32 bits integer---.386
is required
• .386
• maxLong = 7FFFFFFFh ; maximum 32-bit
signed value
• minLong = 80000000h ; Minimum 32-bit
signed value
• “=“ defined symbols can be redefined any
number of times.
Example of Using Directives
•
•
•
•
•
•
•
count =5
mov al , count
mov dl , al
count =10
mov cx , count
count = 2000
mov ax, count
EQU and TEXTEQU directives
•
•
•
•
•
•
•
EQU is not redefinable
TEXTEQU is redefinable
Examples: maxint equ 32767; Numeric
float1 equ <3.1416> ; String
TEXTEQU syntax:
name TEXREQU <text>
name TEXTEQU textmacro
Intel chip Instructions
• 1. MOV---Data transfer instruction
• Instruction format:
• MOV reg, reg
• MOV mem, reg
• MOV reg, mem
•
•
•
•
MOV reg, immed
MOV mem, immed
MOV mem16, segreg
MOV reg16, segreg
MOV segreg, immed16
MOV segreg, reg16
Flag bits are not affected by MOV instruction
***
Examples
•
•
•
•
•
•
•
•
•
.data
count db 10
total dw 4126h
bigVal dd 12345678h
.code
mov al, bl
mov bl, count
mov count, 26
mov bl, 1
Examples—cont…
•
•
•
•
•
•
mov dx, cx
mov bx, 8FE2h
mov total, 1000h
mov eax, ebx
mov edx, bigVal ; 32-bit memory to reg
***Pay attention the the fact that operands
size must match. Otherwise, the assembler
will return an error for any size mismatch.
Example
• .data
• count dw 20h ;
20h---here really mean 0020h
• .code
• mov al, count; error:
XCHG Instruction
•
•
•
•
•
XCHG reg, reg
xchg ax, bx
xchg eax, ebx
XCHG reg, mem
xchg ax, value1
• XCHG mem, reg
• xchg value2, cx
Program example
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
Title Exchange Two Variables (Exchange.asm)
.model small
.stack 100h
.data
Value1 db 0ah
Value2 db 14h
.code
Main proc
Mov ax, @data ; initialize DS register
Mov ds, ax
Mov al, value1
Xchg value2, al
Mov value1, al
Mov ax, 4c00h
Int 21h
Main endp
End main; Question: Why don’t we use xchg value1, value2?
Arithmetic Instructions
•
•
•
•
•
•
•
•
ADD and SUB instructions
ADD reg, reg
ADD mem, reg
ADD reg, mem
ADD reg, immed
ADD mem, immed
ADD accum, immed
Flag O D I S Z A P C
*
*
*
*
*
*
• SUB has the similar instruction format
Examples
• Mov ax, 10
• Sub ax, 10 ; AX=0, ZF =1
• Mov bx, 1
• Sub bx, 2 ; BC = FFFF, SF = 1
• Mov ax, 0FFh
• Add al, 1 ; AL = 00 , CF = 1
Basic Operand Types
•
•
•
•
•
There are three basic types of operands:
1. Immediate----a constant
2. Register-------one of the CPU’s register
3. Memory---a reference to a mem.Location
There are six different types of memory
operands:
• Direct, direct-offset, register-indirect
• Indexed, base-indexed, and base-indexed
with displacement
Example
• mov ax, [si] --- this is called register-indirect
• Here si register hold the beginning address
for a list of numbers.
• The first number in the address will be
moved to al and the second number will be
moved into ah.
Immediate operands, Direct Operands, and
Direct-Offset operands
•
•
•
•
•
1. Immediate operands:
Mov al, 10 ; ----a number
Mov eax, 12345678h ; ---a 4-byte number
Mov dl, ‘X’ ; --- a character
Mov ax, (40 *50) ; arithmetic expression
Direct Operands
•
•
•
•
•
•
•
•
.data
Count db 20
Wordlist dw 1000h, 2000h
LongVal dd 11223344h
.code
Mov al, Count
Mov bx, Wordlist +2
Mov edx, LongVal
Direct Offset Operands
•
•
•
•
•
•
•
.data
Array db 0ah, 0bh, 0ch, 0dh
.code
Mov al, array
; 0ah-al
Mov bl, array +1 ; 0bh  bl
Mov cl, array + 2 ; 0ch  cl
Mov dl, array +3 ; 0dh  dl
Another Example
IA – 32 Processor Architecture
• IA – 32 processor have three basic mode of
operations:
• 1. Protected Mode
• 2. Real-address Mode
• 3. System Management Mode
Protected Mode
• IA-32 processors have three basic modes of
operation: Protected mode, Real-address
mode and System Management mode. In
addition, the Virtual-8086 mode is a
special case of Protected mode.
1. Protected Mode
• Protected mode is the native state of the processor,
in which all instructions and features are available.
• Programs are given separate memory areas (called
segment), and the processor detects any attempt by
a program to reference memory outside its
assigned segment.
• Each program can address up to 4GB memory.
Virtual – 8086 Mode
• While in Protected mode, the processor can
directly execute Real-address mode
software such as MS-DOS programs in a
safe multitasking environment.
• In other word, even if an MS-DOS program
crashes, it will not affect other program
running at the same time.
Real-address mode
• It offers us a few more features, such as the
ability to switch into other two modes.
• Only 1 MB of memory can be addressed:
• 00000h-FFFFFh
• The processor can only run one program a
time.
System Management Mode
• SSM-mode
• It provides an operating system with a mechanism
for implementing such functions as power
management and system security.
• These functions are usually implemented by
computer manufacturers who want to customize
the processor for a particular system setup.
Homework6
•
•
•
•
•
•
Write and run an assembly program under debug that will:
1) Add numbers from 1 to 1000.
Note: you would need these following instructions:
A) jz – jump if zero
B) mov cx, number of times (1000 in Hex.)
C) create the labels that tells program where to go when
certain conditions are met.
• Due: 11/07 Turn in: Your code and the running result.
Note to the debug usage
• You can assemble your assembly language
program with other software and load the code
into the memory by using the debug as follows:
• Under debug: (Click start, click Run, type cmd
and type enter)
• N a:hello.exe
• L
• This will load your code from a: to the memory
address beginning at CS:0100.