MOV DL,01 ; B INT 13H ; CMP AH,00 ; ? JZ F90 ; - MOV ENDCDE,01 ; : CALL X10ERR ; F90: INC CURADR ; RET F10READ ENDP ; : ; ---------------------- G10DISP PROC NEAR MOV AH,40H ; MOV BX,01 ; MOV CX,512 ; LEA DX,RECDIN INT 21H RET G10DISP ENDP ; : ; -------------- Q10SCR PROC NEAR MOV AX,0600H ; MOV BH,1EH ; MOV CX,0000 ; MOV DX,184FH INT 10H RET Q10SCR ENDP ; : ; ----------------- Q20CURS PROC NEAR MOV AH,02 ; MOV BH,00 ; MOV DX,0000 INT 10H RET Q20CURS ENDP ; : ; ---------------------------------- X10ERR PROC NEAR MOV AH,40H ; MOV BH,01 ; MOV CX,18 ; LEA DX,READMSG INT 21H RET X10ERR ENDP CODESG ENDS END BEGIN IBM PC. . 134 TITLE PRTNAME (COM) CODESG SEGMENT PARA PUBLIC 'CODE' ASSUME CS:CODESG,DS:CODESG,SS:CODESG,ES:CODESG ORG 100H BEGIN: JMP SHORT MAIN ; ----------------------------------------------------- NAMEPAR LABEL BYTE ; MAXNLEN DB 20 ; NAMELEN DB ? ; NAMEFLD DB 20 DUP(' ') ; ; : HEADG DB 'List of Employee Names Page ' PAGECTR DB '01',0AH,0AH FFEED DB 0CH ; LFEED DB 0AH ; LINECTR DB 01 PROMPT DB 'Name? ' ; ----------------------------------------------------- MAIN PROC NEAR CALL Q10CLR ; CALL M10PAGE ; A2LOOP: MOV DX,0000 ; 00,00 CALL Q20CURS CALL D10INPT ; CALL Q10CLR CMP NAMELEN,00 ; ? JE A30 ; - , CALL E10PRNT ; - ; JMP A20LOOP A30: MOV CX,01 ; : LEA DX,FFEED ; CALL P10OUT ; , RET ; DOS MAIN ENDP ; : ; ----------------------- D10INPT PROC NEAR MOV AH,40H ; MOV BX,01 ; MOV CX,05 ; 5 LEA DX,PROMPT INT 21H ; DOS MOV AH,0AH ; LEA DX,NAMEPAR INT 21H ; DOS RET D10INPT ENDP ; : ; ---------------------- IBM PC. . 135 E10PRNT PROC NEAR CMP LINECTR,60 ; ? JB E20 ; - CALL M10PAGE ; - E20: MOV CH,00 MOV CL,NAMELEN ; LEA DX,NAMEFLD ; CALL P10OUT ; MOV CX,01 ; LEA DX,LFEED ; CALL P10OUT INC LINECTR ; E10PRNT ENDP ; : ; ----------------------------- M10PAGE PROC NEAR CMP WORD PTR PAGECTR,3130H ; ? JE M30 ; - MOV CX,01 ; LEA DX,FFEED ; -- CALL P10OUT ; , MOV LINECTR,03 ; M30: MOV CX,36 ; LEA DX,HEADG ; M40: CALL P10OUT INC PAGECTR+1 ; CMP PAGECTR+1,3AH ; = .xx3A? JNE M50 ; - , MOV PAGECTR+1,30H ; - ASCII INC PAGECTR M50: RET M10PAGE ENDP ; : ; ------------------- P10OUT PROC NEAR ;CX DX MOV AH,40H ; MOV BX,04 ; INT 21H ; DOS RET P10OUT ENDP ; : ; -------------- Q10CLR PROC NEAR MOV AX,0600H ; MOV BH,60H ; (07 /) MOV CX,0000 ; 00,00 MOV DX,184FH ; 24,79 INT 10H ; BIOS RET Q10CLR ENDP ; (/): IBM PC. . 136 ; ---------------------------------- Q20CURS PROC NEAR ;DX MOV AH,02 ; MOV BH,00 ; 0 INT 10H ; BIOS RET Q20CURS ENDP CODESG ENDS END BEGIN IBM PC. . 137 TITLE PRINASK (COM) CODESG SEGMENT PARA 'Code' ASSUME CS:CODESG,DS:CODESG,SS:CODESG,ES:CODESG ORG 100H BEGIN JMP MAIN ; --------------------------------------------------------- PATHPAR LABEL BYTE ; MAXLEN DB 32 ; NAMELEN DB ? ; FILENAM DB 32 DUP(' ') SECTOR DB 512 DUP(' ') ; DISAREA DB 120 DUP(' ') ; COUNT DW 00 ENDCDE DW 00 FFEED DB 0CH HANDLE DW 0 OPENMSG DB '*** Open error ***' PROMPT DB 'Name of file? ' ; ---------------------------------------------------------- MAIN PROC NEAR ; CALL Q10SCR ; CALL Q20CURS ; A10LOOP: MOV ENDCDE,00 ; CALL C10PRMP ; CMP NAMELEN,00 ; ? JE A90 ; - CALL E10OPEN ; , ; DTA CMP ENDCDE,00 ; ? JNE A80 ; - CALL R10READ ; CMP ENDCDE,00 ; , ? JE A80 ; - CALL G10XPER ; A80: JMP A10LOOP A90: RET MAIN ENDP ; : ; -------------------------------- C10PRMP PROC NEAR MOV AH,40H ; MOV BX,01 MOV CX,13 LEA DX,PROMPT INT 21H MOV AH,0AH ; LEA DX,PATHPAR INT 21H MOV BL,NAMELEN ; MOV BH,00 ; 00 IBM PC. . 138 MOV FILENAM[BX],0 ; C90 RET C10PRMP ENDP ; : ; ------------------------ E10OPEN PROC NEAR MOV AH,3DH ; MOV AL,00 ; LEA DX,FILENAM INT 21H JNC E20 ; CF CALL X10ERR ; , RET E20: MOV HANDLE,AX ; MOV AX,2020H MOV CX,256 ; REP STOSW ; RET E100PEN ENDP ; : ; -------------------------- G10XFER PROC NEAR CLD ; - LEA SI,SECTOR ; G20: LEA DI,DISAREA MOV COUNT,00 G30: LEA DX,SECTOR+512 CMP SI,DX ; ? JNE G40 CALL R10READ ; - CMP ENDCDE,00 ; ? JE G80 ; - LEA SI,SECTOR G40: MOV BX,COUNT CMP BX,80 ; ? JB G50 ; - MOV [DI+BX],0D0AH ; - CR/LF CALL P10PRNT LEA DI,DISAREA ; G50: LODSB ; [SI] AL, ; SI MOV BX,COUNT MOV [DI+BX],AL ; INC BX CMP AL,1AH ; ? JE G80 ; - CMP AL,0AH ; ? JNE G60 ; - , IBM PC. . 139 CALL P10PRNT ; - JMP G20 G60: CMP AL,09H ; ? JNE G70 DEC BX ; - BX: MOV BYTE PTR [DI+BX],20H ; TAB AND BX,0FFF8H ; 8 ADD BX,08 ; 8 G70: MOV COUNT,BX JMP G30 G80: MOV BX,COUNT ; MOV BYTE PTR [DI+BX],0CH ; CALL P10PRNT ; G90: RET G10XFER ENDP ; : ; ------------------- P10PRNT PROC NEAR MOV AH,40H ; MOV BX,04 MOV CX,COUNT ; INC CX LEA DX,DISAREA INT 21H MOV AX,2020H ; MOV CX,60 LEA DI,DISAREA REP STOSW RET P10PRNT ENDP ; : ; --------------------------- R10READ PROC NEAR MOV AH,3FH ; MOV BX,HANDLE ; MOV CX,512 ; MOV DX,SECTOR ; INT 21H MOV ENDCDE,AX RET R10READ ENDP ; : ; ---------------- Q10SCR PROC NEAR MOV AX,0600H MOV BH,1EH ; MOV CX,0000 ; () MOV DX,184FH INT 10H RET Q10SCR ENDP IBM PC. . 140 ; : ; ------------------------------ Q20CURS PROC NEAR MOV AH,02 ; MOV BH,00 ; MOV DX,00 INT 10H RET Q20CURS ENDP ; : ; ------------------------- X10ERR PROC NEAR MOV AH,40H ; MOV BX,01 ; MOV CX,18 ; LEA DX,OPENMSG ; INT 1H MOV NDCDE,01 ; RET X10ERR ENDP CODESG ENDS END BEGIN IBM PC. . 141 TITLE MACRO1 (EXE) ; -------------------------------------------- INIT1 MACRO ASSUME CS:CSEG,DS:DSEG,SS:STACK,ES:DSEG PUSH DS SUB AX,AX PUSH AX MOV AX,DSEG MOV DS,AX MOV ES,AX ENDM ; ; -------------------------------------------- 0000 STACK SEGMENT PARA STACK 'Stack' 0000 20 [ ???? ] DW 32 DUP(?) 0040 STACK ENDS ; -------------------------------------------- 0000 DSEG SEGMENT PARA 'Data' 0000 54 65 73 74 20 6F MESSGE DB 'Test of macro-instruction', 13 66 20 6D 61 63 72 6F 2D 69 6E 73 74 72 65 73 74 69 6F 6E 0D 001A DSEG ENDS ; -------------------------------------------- 0000 CSEG SEGMENT PARA 'Code' 0000 BEGIN PROC FAR INIT1 ; 0000 1E + PUSH DS 0001 2B C0 + SUB AX,AX 0003 50 + PUSH AX 0004 B8 ---- R + MOV AX,DSEG 0007 8E D8 + MOV DS,AX 0009 8E C0 + MOV ES,AX 000B B4 40 MOV AH,40H ; 000D BB 0001 MOV BX,01 ; 0010 B9 001A MOV CX,26 ; 0013 8D 16 0000 R LEA DX,MESSGE ; 0017 CD 21 INT 21H 0019 CB RET 001A BEGIN ENDP 001A CSEG ENDS END BEGIN Macros: N a m e Length INIT1. . . . . . . . . . . . . . . . 0004 Segments and Groups: N a m e Size Align Combine Class CSEG . . . . . . . . . . . . . . . . 001A PARA NONE 'CODE' DSEG . . . . . . . . . . . . . . . . 001A PARA NONE 'DATA' STACK. . . . . . . . . . . . . . . . 0040 PARA STACK 'STACK' IBM PC. . 142 Symbols: N a m e Type Value Attr BEGIN. . . . . . . . . . . . . . . . F PROC 0000 CSEG Length=001A MESSAGE. . . . . . . . . . . . . . . L BYTE 0000 DSEG IBM PC. . 143 TITLE MACRO2 (EXE) ; ------------------------------------------------ INIT2 MACRO CSNAME,DSNAME,SSNAME ASSUME CS:CSNAME,DS:DSNAME,SS:SSNAME,ES:DSNAME PUSH DS SUB AX,AX PUSH AX MOV AX,DSNAME MOV DS,AX MOV ES,AX ENDM ; ; ------------------------------------------------ 0000 STACK SEGMENT PARA STACK 'Stack' 0000 20 [ ???? ] DW 32 DUP(?) 0040 STACK ENDS ; ------------------------------------------------ 0000 DSEG SEGMENT PARA 'Data' 0000 54 65 73 74 20 6F MESSAGE DB 'Test of macro', '$' 66 20 6D 61 63 72 6F 24 000E DSEG ENDS ; ------------------------------------------------ 0000 CSEG SEGMENT PARA 'Code' 0000 BEGIN PROC FAR INIT2 CSEG,DSEG,STACK 0000 1E + PUSH DS 0001 2B C0 + SUB AX,AX 0003 50 + PUSH AX 0004 B8 ---- R + MOV AX,DSEG 0007 8E D8 + MOV DS,AX 0009 8E C0 + MOV ES,AX 000B B4 09 MOV AH,09 ; 000D 8D 16 0000 R LEA DX,MESSGE ; 0011 CD 21 INT 21H 0013 CB RET 0014 BEGIN ENDP 0014 CSEG ENDS END BEGIN IBM PC. . 144 TITLE MACRO3 (EXE) .LALL .SALL ; ------------------------------------------------ INIT2 MACRO CSNAME,DSNAME,SSNAME ASSUME CS:CSNAME,DS:DSNAME,SS:SSNAME,ES:DSNAME PUSH DS SUB AX,AX PUSH AX MOV AX,DSNAME MOV DS,AX MOV ES,AX ENDM ; ------------------------------------------------ PROMPT MACRO MESSAGE ; ;; DOS MOV AH,09 ; LEA DX,MESSAGE INT 21H ENDM ; ------------------------------------------------ 0000 STACK SEGMENT PARA STACK 'Stack' 0000 20 [ ???? ] DW 32 DUP (?) 0040 STACK ENDS ; ------------------------------------------------ 0000 DATA SEGMENT PARA 'Data' 0000 43 75 73 74 6F 6D MESSG1 DB 'Customer name?', '$' 65 72 20 6E 61 6D 65 3F 24 000F 43 75 73 74 6F 6D MESSG2 DB 'Customer address?', '$' 65 72 20 61 64 64 72 65 73 73 3F 24 0021 DATA ENDS ; ------------------------------------------------ 0000 CSEG SEGMENT PARA 'Code' 0000 BEGIN PROC FAR .SALL INIT2 CSEG,DATA,STACK PROMPT MESSG1 .LALL PROMPT MESSG2 + ; 0013 B4 09 + MOV AH,09 ; 0015 8D 16 000F R + LEA DX,MESSG2 0019 CD 21 + INT 21H 001B CB RET 001C BEGIN ENDP 001C CSEG ENDS END BEGIN IBM PC. . 145 TITLE MACRO4 (COM) LOCAL ; ------------------------------------------------- DIVIDE MACRO DIVIDEND,DIVISOR,QUOTIENT LOCAL COMP LOCAL OUT ; AX=, BX=, CX= 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 ; ------------------------------------------------ 0000 CSEG SEGMENT PARA 'Code' ASSUME CS:CSEG,DS:CSEG,SS:CSEG,ES:CSEG 0100 ORG 100H 0100 EB 06 BEGIN: JMP SHORT MAIN ; ------------------------------------------------ 0102 0096 DIVDND DW 150 ; 0104 001B DIVSOR DW 27 ; 0106 ???? QUOTNT DW ? ; ; ------------------------------------------------ 0108 MAIN PROC NEAR .LALL DIVIDE DIVDND,DIVSOR,QUOTNT + ; AX=, BX=, CX= 0108 A1 0102 R + MOV AX,DIVDND ; 010B 8B 1E 0104 R + MOV BX,DIVSOR ; 010F 2B C9 + SUB CX,CX ; 0111 + ??0000: 0111 3B C3 + CMP AX,BX ; < ? 0113 72 05 + JB ??0001 ; - 0115 2B C3 + SUB AX,BX ; - 0117 41 + INC CX ; + 1 0118 EB F7 + JMP ??0000 011A + ??0001: 011A 89 0E 0106 R + MOV QUOTNT,CX ; 011E C3 RET 011F MAIN ENDP 011F CSEG ENDS END BEGIN IBM PC. . 146 TITLE MACRO5 (EXE) INCLUDE EDIF ; ------------------------------------------------ 0000 STACK SEGMENT PARA STACK 'Stack' 0000 20 [????] DW 32 DUP(?) 0040 STACK ENDS ; ------------------------------------------------ 0000 DATA SEGMENT PARA 'Data' 0000 54 65 73 74 20 6F MESSGE DB 'Test of macro','$' 66 20 6D 61 63 72 6F 24 000E DATA ENDS ; ------------------------------------------------ 0000 CSEG SEGMENT PARA 'Code' 0000 BEGIN PROC FAR INIT CSEG,DATA,STACK 0000 1E + PUSH DS 0001 3B C0 + SUB AX,AX 0003 50 + PUSH AX 0004 B8 ---- R + MOV AX,DATA 0007 8E D8 + MOV DS,AX 0009 8E C0 + MOV ES,AX PROMPT MESSGE 000B B4 09 + MOV AH,09 ; 000D 8D 16 0000 R + LEA DX,MESSGE 0011 CD 21 + INT 21H 0013 CB RET 0014 BEGIN ENDP 0014 CSEG ENDS END BEGIN IBM PC. . 147 TITLE MACRO6 (COM) IF IFNDEF ; ------------------------------------------------ DIVIDE MACRO DIVIDEND,DIVISOR,QUOTIENT LOCAL COMP LOCAL OUT CNTR = 0 ; AX-, BX-, CX- 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 ; ------------------------------------------------ 0000 CSEG SEGMENT PARA 'Code' ASSUME CS:CSEG,DS:CSEG,SS:CSEG,ES:CSEG 0100 ORG 100H 0100 EB 06 BEGIN: JMP SHORT MAIN ; ------------------------------------------------ 0102 0096 DIVDND DW 150 0104 001B DIVSOR DW 27 0106 ???? QUOTNT DW ? ; ------------------------------------------------ 0108 MAIN PROC NEAR .LALL DIVIDE DIVDND,DIVSOR,QUOTNT = 0000 + CNTR = 0 + ; AX-, BX-, CX- + ENDIF + ENDIF IBM PC. . 148 + ENDIF + ENDIF 0108 A1 0102 R + MOV AX,DIVDND ; 0108 8B 1E 0104 R + MOV BX,DIVSOR ; 010F 2B C9 + SUB CX,CX ; 0111 + ??0000: 0111 3B C3 + CMP AX,BX ; < ? 0113 72 05 + JB ??0001 ; - 0115 2B C3 + SUB AX,BX ; - 0117 41 + INC CX 0118 EB F7 + JMP ??0000 011A + ??0001: 011A 89 0E 0106 R + MOV QUOTNT,CX ; DIVIDE DIDND,DIVSOR,QUOT = 0000 + CNTR = 0 + ; AX-, BX-, CX- + IFNDEF DIDND + ; = 0001 + CNTR = CNTR +1 + ENDIF + ENDIF + IFNDEF QUOT + ; = 0002 + CNTR = CNTR +1 + ENDIF + IF CNTR + ; + EXITM 011E C3 RET 011F MAIN ENDP 011F CSEG ENDS END BEGIN IBM PC. . 149 TITLE MACRO7 (COM) IFIDN ; -------------------------------------------- MOVIF MACRO TAG IFIDN <&TAG>,<B> REP MOVSB EXITM ENDIF IFIDN <&TAG>,<W> REP MOVSW ELSE ; B W, ; B REP MOVSB ENDIF ENDM ; -------------------------------------------- 0000 CSIG SEGMENT PARA 'Code' ASSUME CS:CSEG,DS:CSEG,SS:CSEG,ES:CSEG 0100 ORG 100H 0100 EB 00 BEGIN: JMP SHORT MAIN ; ... 0102 MAIN PROC NEAR .LALL MOVIF B + IFIDN <B>,<B> 0102 F3/A4 + REP MOVSB + EXITM MOVIF W + ENDIF + IFIDN <W>, <W> 0104 F3/A5 + REP MOVSW + ENDIF MOVIF + ENDIF + ELSE + ; B W, + ; B 0106 F3/A4 + REP MOVSB + ENDIF 0108 C3 RET 0109 MAIN ENDP 0109 CSEG ENDS END BEGIN IBM PC. . 150 +-----------+ +-----------+ | | | | | | | | +-----+-----+ +-----+-----+ | | | | +------------+------------+ +------+------+ | | | | | | | | | | +--------+ +--------+ +--------+ +--------+ +--------+ | / 1 | | / 2 | | / 3 | | / 1 | | / 2 | +---------+ +---------+ +---------+ +----+----+ +---------+ | | +--------+ | / 3 | +---------+ IBM PC. . 151 +---------------------------------------+ | EXTRN SUBPROG:FAR | | MAINPROG: . | | . | | CALL SUBPROG | | . | | . | +---------------------------------------+ | PUBLIC SUBPROG | | SUBPROG: . | | . | | . | | RET | +---------------------------------------+ IBM PC. . 152 page 60,132 TITLE CALLMULL1 (EXE) EXTRN SUBMUL:FAR ;----------------------------------------------- 0000 STACKSG SEGMENT PARA STACK 'Stack' 0000 40 [ ???? ] DW 64 DUP(?) 0080 STACKSG ENDS ;----------------------------------------------- 0000 DATASG SEGMENT PARA 'Data' 0000 0140 QTY DW 0140H 0002 2500 PRICE DW 2500H 0004 DATASG ENDS ;----------------------------------------------- 0000 CODESG SEGMENT PARA 'Code' 0000 BEGIN PROC FAR ASSUME CS:CODESG,DS:DATASG,SS:STACKSG 0000 1E PUSH DS 0001 2B C0 SUB AX,AX 0003 50 PUSH AX 0004 B8 ---- R MOV AX,DATASG 0007 8E D8 MOV DS,AX 0009 A1 0002 R MOV AX,PRICE ; 000C 8B 1E 0000 R MOV BX,QTY ; 0010 9A 0000 ---- E CALL SUBMUL ; 0015 CB RET 0016 BEGIN ENDP 0016 CODESG ENDS END BEGIN Segments and Groups: N a m e Size Align Combine Class CODESG . . . . . . . . . . . . 0016 PARA NONE 'CODE' DATASG . . . . . . . . . . . . 0004 PARA NONE 'DATA' STACKSG. . . . . . . . . . . . 0080 PARA STACK 'STACK' Symbols: N a m e Type Value Attr BEGIN. . . . . . . . . . . . . F PROC 0000 CODESG Length=0016 PRICE. . . . . . . . . . . . . L WORD 0002 DATASG QTY. . . . . . . . . . . . . . L WORD 0000 DATASG SUBMUL . . . . . . . . . . . . L FAR 0000 External page 60,132 TITLE SUBMUL ;----------------------------------------------- 0000 CODESG SEGMENT PARA 'Code' 0000 SUBMUL PROC FAR ASSUME CS:CODESG PUBLIC SUBMUL 0000 F7 E3 MUL BX ;AX-, BX- 0002 CB RET ; DX:AX IBM PC. . 153 0003 SUBMUL ENDP 0003 CODESG ENDS END SUBMUL Segments and groups: N a m e Size Align Combine Class CODESG . . . . . . . . . . . . 0003 PARA NONE 'CODE' Symbols: N a m e Type Value Attr SUBMUL . . . . . . . . . . . . F PROC 0000 CODESG Clobal Length=0003 LINK IBM Personal Computer Linker Version 2.30 (C) Copyright IBM Corp 1981, 1985 Object Modules: B:CALLMUL1+B:SUBMUL1 Run File: [B:CALLMUL1.EXE]: <return> List File:[NUL.MAP]: CON Libraries [.LIB]: <return> Start Stop Length Name Class 00000H 00015H 0016H CODESG CODE <--: 2 00020H 00022H 0003H CODESG CODE <-- 00030H 00033H 0004H DATASG DATA 00040H 000BFH 0080H STACKSG STACK Program entry point at 0000:0000 IBM PC. . 154 page 60,132 TITLE CALLMUL2 (EXE) EXTERN SUBMUL:FAR ;---------------------------------------------- 0000 STACKSG SEGMENT PARA STACK 'Stack' 0000 40 [????] DW 64 DUP(?) 0080 STACKSG ENDS ;---------------------------------------------- 0000 DATASG SEGMENT PARA 'Data' 0000 0140 QTY DW 0140H 0002 2500 PRICE DW 2500H 0004 DATASG ENDS ;---------------------------------------------- 0000 CODESG SEGMENT PARA PUBLIC 'Code' 0000 BEGIN PROC FAR ASSUME CS:CODESG,DS:DATASG,SS:STACKSG 0000 1E PUSH DS 0001 2B C0 SUB AX,AX 0003 50 PUSH AX 0004 B8 ---- R MOV AX,DATASG 0007 8E D8 MOV DS,AX 0009 A1 0002 R MOV AX,PRICE ; 000C 8B 1E 0000 R MOV BX,QTY ; 0010 9A 0000 ---- E CALL SUBMUL ; 0015 CB RET 0016 BEGIN ENDP 0016 CODESG ENDS END BEGIN Segments and Group: N a m e Size Align Combine Class CODESG . . . . . . . . . . . . .0016 PARA PUBLIC 'CODE' DATASG . . . . . . . . . . . . .0004 PARA NONE 'DATA' STACKSG. . . . . . . . . . . . .0080 PARA STACK 'STACK' Symbols: N a m e Type Value Attr BEGIN. . . . . . . . . . . . . F PROC 0000 CODESG Lenght=0016 PRICE. . . . . . . . . . . . . L WORD 0002 DATASG QTY. . . . . . . . . . . . . . L WORD 0000 DATASG SUBMUL . . . . . . . . . . . . L FAR 0000 External page 60,132 TITLE SUBMUL2 ;---------------------------------------------- 0000 CODESG SEGMENT PARA PUBLIC 'CODE' 0000 SUBMUL PROC FAR ASSUME CS:CODESG PUBLIC SUBMUL 0000 F7 E3 MUL BX ;AX-, BX- IBM PC. . 155 0002 CB RET ; DX:AX 0003 SUBMUL ENDP 0003 CODESG ENDS END SUBMUL Segments and Groups: N a m e Size Align Combine Class CODESG. . . . . . . . . . . . . 0003 PARA PUBLIC 'CODE' Symbols: N a m e Type Value Attr SUBMUL. . . . . . . . . . . . .F PROC 0000 CODESG Global Length=0003 LINK IBM Personal Computer Linker Version 2.30 (C) Copyright IBM Corp 1981, 1985 Object Modules: B:CALLMUL2+B:SUBMUL2 Run File: [B:CALLMUL2.EXE]: <return> List