Exercise 7            Name       _________________    Points __/10

Give the expansions for the following macros.

Example:
Macro
Definition
Use in
Program
Macro
Expansion
.Div    Macro  N
        Mov    Dx, 0
        Mov    Bx, &N    
        Div    Bx
endm
Call  ReadDec
.Div  34
Call  WriteDec  

  
Call  ReadDec
Mov   Dx, 0
Mov   Bx, 34
Div   Bx
Call  WriteDec
1.   (2)
Macro
Definition
Use in
Program
Macro
Expansion
.Swap Macro  A, B
      PushA  
      Mov    Ax, &A       
      Mov    Bx, &B
      Mov    &A, Bx
      Mov    &B, Ax
      PopA
endm
.Swap X, Y     
   

  
      PushA  
      Mov    Ax, X       
      Mov    Bx, Y
      Mov    X, Bx
      Mov    Y, Ax
      PopA

2.  (4)
Macro
Definition
Use in
Program
Macro
Expansion
.DCG Macro  X, Y
       local  L
  ifb <&y>
      exitm
  endif
  while&L:
       cmp    &Y, 0
       Jne    do&L
       Jmp    endwhile&L    
   do&L:
       .Swap  &X, &Y
       Jmp    while&L
  endwhile&L:
endm
.DCG A, B      
   

  
  while??0001:
       cmp    B, 0
       Jne    do??0001
       Jmp    endwhile??0001    
   do??0001:
       PushA         ;  .Swap  A, B
       Mov    Ax, A
       Mov    Bx, B
       Mov    A, Bx
       Mov    B, Ax
       PopA
       Jmp    while??0001
  endwhile??0001:

3. (4) Give the macro to compute the power of xn, x is signed and n unsigned 8 bit, both may be constants. The result is in Ax. No overflow checking is performed. Use the following real operations.

      Mov  Ax, 1
      Mov  Cx, x
      Mov  Bh, n
  while:
      Cmp  Bh, 0
      Ja   do
      Jmp  endwhile
  do: Imul Cx
      Dec  Bh
      Jmp  while
  endwhile:
.Power Macro x, n
      local L
      ifb  <&n>
           exitm
      endif

      PushF
      Push  Cx
      Push  Bx
      Mov  Ax, 1
      Mov  Cx, &x
      Mov  Bh, &n
  while&L:
      Cmp  Bh, 0
      Ja   do&L
      Jmp  endwhile&L
   do&L:
      Imul Cx
      Dec  Bh
      Jmp  while&L
  endwhile&L:
      Pop   Bx
      Pop   Cx
      PopF
endm

Document last modified: