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 |
| 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
|