9.1. -:
.286
TITLE MACRO7 (COM) IF IFNDEF
;--------------------------------------------
DIVIDE MACRO DIVIDEND,DIVISOR,QUOTIENT
LOCAL COMP
LOCAL OUT
CNTR = 0
; AX= = =
IFNDEF DIVIDEND
;
CNTR = CNTR +1
ENDIF
IFNDEF DIVISOR
;
CNTR = CNTR +1
ENDIF
IFNDEF QUOTIENT
;
CNTR = CNTR +1
ENDIF
IF CNTR
;
EXITM
ENDIF
MOV AX,DIVIDEND;
MOV BX,DIVISOR;
SUB CX,CX;
COMP: CMP AX,BX; < ?
JB OUT; -
SUB AX,BX; -
INC CX; + 1
JMP COMP
OUT: MOV QUOTIENT,CX;
ENDM;
;--------------------------------------------------
CSEG SEGMENT PARA 'Code'
ASSUME CS:CSEG,DS:CSEG,SS:CSEG,ES:CSEG
ORG 100H
BEGIN: JMP SHORT MAIN
;---------------------------------------------------
DIVDND DW 150;
DIVSOR DW 27;
QUOTNT DW?;
;---------------------------------------------------
MAIN PROC NEAR
.LALL
DIVIDE DIVDND,DIVSOR,QUOTNT
DIVIDE DIDND,DIVSOR,QUOT
RET
MAIN ENDP
CSEG ENDS
END BEGIN
DIVIDE, . : , , . IFNDEF . CNTR. .
CNTR.
CNTR , EXITM .
, . DIVIDE .
9.2. . .
, IFIDN.
10.1. string.asm ASMLIB. :
TITLE MACRO8 (EXE) IFIDN
:
MOVIF MACRO TAG
IFIDN <&TAG>,<B>
REP MOVSB
EXITM
ENDIF
IFIDN <&TAG>,<W>
REP MOVSW
ELSE
; W,
;---------------------------------------------------
REP MOVSB
ENDIF
ENDM
;----------------------------------------------------
|
|
REP MOVSB MOVIF B, REP MOVSW MOVIF W.
MOVIF, MOVSB MOVSW . ( ) W ( ).
:
1. .
2. .
:
1. : ) , ; ) , .
2. : ) MULTBY ; ) MULTWD .
.
:
1. ).SALL; ).XALL
2. ) MULTBY MACRO TPR,TCD
MOV AL,TCD
MUL TPR
ENDM
) MULTWD MACRO TPR,TCD
MOV AX,TCD
MUL TPR
ENDM