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¡:
   396   397   398   399   400   401   402   403   404   405   406