Page 401 - FUNDAMENTALS OF COMPUTER
P. 401
NPP
NPP CPU Architecture, Addressing Modes and Data Transfer Schemes 401
main unchanged. This is a Intra segment An[ad{V©V ahVm h¡& `h EH$ BÝQ´>m goJ_oÝQ> ~«mÝM h¡&
branch.
e.g. IP ⇐ IP + d 16
CALL P near : P near refers to a procedure de- CALL P near : P near Agoå~ca S>mBao{ŠQ>d Ûmam NEAR
fined as NEAR by the assembler directive. e.g. Ho$ ê$n _| n[a^m{fV EH$ à{H«$`m H$m gÝX^© XoVm h¡& CXmhaU
NEXT PROC NEAR
It declares NEXT as a NEAR procedure. It `h NEXT H$mo NEAR àmogrOa {S>ŠboAa Kmo{fV
refers to a 16-bit displacement which is to be H$aVm h¡& `h 16-{~Q> {S>gßbog_|Q> Ho$ g§X^© _| {Ogo IP
added to IP. Thus following instruction is an Omo‹S>m OmVm h¡& AV: {ZåZ B§ñQ´>ŠeZ B§Q´>m goJ_|Q> ~«m§M h¡:
Intra segment branch:
CALL NEXT
CALL P : P refers to a procedure which CALL P : àmogrOa go g§X{^©V h¡ {Ogo Egoå~ba
far
far
far
has been defined as FAR by assembler direc- S>m`aopŠQ>ìg Ûmam n[a^m{fV {H$`m J`m h¡& CXmhaU,
tive. e.g.
START PROC FAR
Then the following instruction can be used: BgHo$ níMmV² {ZåZ{c{IV BÝñQ´>ŠeZ Cn`moJ {H$`m
Om gH$Vm h¡:
CALL START
Now START refers to a 32-bit number. A~ START EH$ 32-{~Q> g§»`m H$m gÝX^© XoVm h¡&
Lower 16-bits are loaded into IP and Higher cmoAa {~Q²>g H$mo IP _| cmoS> {H$`m OmVm h¡ VWm hm`a {~Q²>g
16-bits are loaded into CS. Thus, CS and IP both H$mo CS _| cmoS> {H$`m OmVm h¡& Bg àH$ma CS VWm IP XmoZm|
changed. (Intersegment). n[ad{V©V hmoVo h¢& (BÝQ>agoJ_oÝQ>)
CALL m : m refers to a memory loca- CALL m : m S>mQ>m goJ_oÝQ> _| EH$ _o_moar cmoHo$eZ
32
32
32
32
tion in data segment which points to a 32-bit H$m gÝX^© XoVm h¡ Omo EH$ 32 {~Q> (4 ~mBQ>) g§»`m H$mo
(4 Byte) number. Lower 16-bit number is
loaded into IP and Higher 16-bit is loaded in B§{JV H$aVm h¡& cmoAa 16 {~Q> g§»`m IP _| VWm hm`a
CS. 16 {~Q> CS _| cmoS> H$s OmVr h¡&
First pushes CS onto stack. · nhco CS H$mo ñQ>¡H$ _| ^oOm OmVm h¡&
Then Loads it from Higher 16-bit of m . · BgHo$ níMmV² Bgo m H$s hm`a 16 {~Q> go cmoS>
32
32
{H$`m OmVm h¡&
Pushes IP onto stack. · IP H$mo ñQ>¡H$ na ^oOm OmVm h¡&
Loads lower 16-bits of m into IP. · m H$s cmoAa 16 {~Q²>g H$mo IP _| cmoS> {H$`m
32 32
OmVm h¡&
e.g. CALL DWORD PTR [SI]
This instructions point to four locations `h BÝñQ´>ŠeZ Mma cmoHo$eÝg H$mo B§{JV H$aVm h¡
and therefore Inter segment branch. Therefore VWm Bg{cE BÝQ>a goJ_oÝQ> ~«mÝM h¡& AV: CS VWm IP H$mo
CS & IP are loaded as follows: {ZåZ àH$ma go cmoS> {H$`m OmVm h¡: