Download presentation
Published byAntony Albert Carter Modified over 8 years ago
1
CS-401 Computer Architecture & Assembly Language Programming
Lecture-8 Addressing Modes Branching
2
In the Last Lecture We discussed memory addresses
3
Addressing Modes Offset Addressing ; Default segment = ds
mov ax, [0x1234] ; word move mov ah, [0x1234] ; byte move mov byte[0x1234], 10 mov word[0x1234], 10
4
Addressing Modes Base Addressing ; Default segment = ds mov ax, [bx]
mov byte [bx], 10 mov word [bx], 10 ; Default segment = ss mov ax, [bp] mov byte [bp], 10 mov word [bp], 10
5
Addressing Modes Index Addressing ; Default segment = ds mov ax, [si]
mov byte [di], 10 mov word [si], 10
6
Base + Offset Addressing
Addressing Modes Base + Offset Addressing ; Default segment = ds mov ax, [bx+0x0100] mov byte [bx+0x100], 10 mov word [bx+0x100], 10 ; Default segment = ss mov byte [bp+0x10], 10 mov word [bp+0x100], 10
7
Index + Offset Addressing
Addressing Modes Index + Offset Addressing ; Default segment = ds mov ax, [si+0x0100] mov byte [di+0x100], 10 mov word [di+0x100], 10 mov byte [si+0x10], 10 mov word [si+0x0100], 10
8
Base + Index Addressing
Addressing Modes Base + Index Addressing ; Default segment = ds mov ax, [bx+si] mov byte [bx+si], 10 mov word [bx+di], 10 ; Default segment = ss mov byte [bp+si], 10 mov word [bp+di], 10
9
Base + Index + Offset Addressing
Addressing Modes Base + Index + Offset Addressing ; Default segment = ds mov ax, [bx+si+0x0100] mov byte [bx+si+0x0100], 10 mov word [bx+di+0x0100], 10 ; Default segment = ss mov byte [bp+si+0x0100], 10 mov word [bp+di+0x0100], 10
10
Addressing Modes General Form [base + index + offset]
11
Illegal Addressing Example mov al, [bl] ; Address cannot be 8-bit
; has to be 16-bit
12
Illegal addressing
13
Illegal Addressing Example
mov ax, [bx-si] ; Registers cannot be ; subtracted
14
Illegal Addressing Example
mov ax, [bx+bp] ; Two bases cannot be ; used in one addressing
15
Illegal Addressing Example
mov ax, [si+di] ; Two indices cannot be ; used in one addressing
16
Physical Address Calculation
[cs:bx+si+0x0700] BX = 0x0100 SI = 0x0200 CS = 0x1000 Effective Address = EA = Base + Index + Offset EA = 0x x x0700 = 0x0A00 Physical Address = Segment*0x10+EA = 0x1000*0x10+0xA00 = 0x10A00
17
Physical Address Calculation
[bx+0x7000] BX = 0x9100 DS = 0x1500 Effective Address = EA = Base + Index + Offset = 0x x x07000 = 0x10100 ; 17-bits ! = 0x0100 ; Segment wrap ; around
18
Physical Address Calculation
[bx+0x7000] BX = 0x9100 DS = 0x1500 Effective Address = EA = 0x0100 ; Segment wrap ; around Physical Address = Segment*0x10+EA = 0x1500*0x10+0x100 = 0x15100
19
Physical Address Calculation
[bx+0x0100] BX = 0x0100 DS = 0xFFF0 Effective Address = EA = Base + Index + Offset = 0x x x0100 = 0x0200 Physical Address = Segment*0x10+EA = 0xFFF0*0x10+0x0200 = 0x ; 21-bits ! = 0x ; memory wrap ; around
20
CMP Subtracts the source (src) from destination (dest)
Does not change contents of src or dest. Affects AF,CF,OF,PF,SF and ZF. The relation is of destination to source.
21
Conditional Jumps jz ;jump if zero [ZF=1] Jnz ;jump if not zero [ZF=0]
Example cmp ax, bx jz label1
22
Conditional Jumps je ;jump if equal [same as jz]
Jne ;jump if not equal [same as jnz]
23
Conditional Jumps jc ;jump if carry [CF=1]
Jnc ;jump if not carry [CF=0] Example add ax, bx jc label1 sub ax, bx jnc label1
24
Conditional Jumps ja ;jump if above [ZF = 0 and CF=0]
jb ;jump if below [CF=1] unsigned integers jl ;jump if less [SF <> OF=0] jg ;jump if greater [ZF = 0 and SF=OF] signed integers
25
Conditional Jumps jae ;jump if above or equal
jbe ;jump if below or equal jge ;jump if greater or equal jle ;jump if less or equal jno ;Jump if not overflow jns ; Jump if not sign
26
Renamed Conditional Jumps
JNBE JA JNB JAE JNAE JB JNA JBE JZ JE JNLE JG JNL JGE JNGE JL JNG JLE JNZ JNE JPO JNP JPE JP
27
Conditional Jumps jcxz ;jump if the cx register is zero [cx=0]
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.