          ᥬ  IBM PC. ணࠬ.                          84


          
          TITLE   EXDWMUL -   ᫮
          CODESG  SEGMENT PARA 'Code'
                  ASSUME  CS:CODESG,DS:CODESG,SS:CODESG
                  ORG     100H
          BEGIN:  JMP     SHORT MAIN
          ; ---------------------------------------------
          MULTCND DW      3206H           ; 
                  DW      2521H
          MULTPLR DW      6400H
                  DW      0A26H
          PRODUCT DW      0
                  DW      0
                  DW      0
                  DW      0
          ; ---------------------------------------------
          MAIN    PROC    NEAR            ;᭮ 楤
                  CALL    E10XMUL         ;맢 1- 㬭
                  CALL    Z10ZERO         ; ந
                  CALL    F10XMUL         ;맢 2- 㬭
                  RET
          MAIN    ENDP
          ;                 ᫮  ᫮:
          ; -----------------------------------------------
          E10XMUL PROC
                  MOV     AX,MULTCND+2    ; ࠢ ᫮
                  MUL     MULTPLR         ;   
                  MOV     PRODUCT+4,AX    ; ந
                  MOV     PRODUCT+2,DX
          
                  MOV     AX,MULTCND      ;  ᫮
                  MUL     MULTPLR         ;   
                  ADD     PRODUCT+2,AX    ;  祭 ࠭
                  ADC     PRODUCT,DX
                  RET
          E10XMUL ENDP
          ;               ६   ᫮:
          ; --------------------------------------------
          F10XMUL PROC
                  MOV     AX,MULTCND+2    ;-2 
                  MUL     MULTPLR+2       ;  * ᫮-2 ⥫
                  MOV     PRODUCT+6,AX    ;࠭ १
                  MOV     PRODUCT+4,DX
          
                  MOV     AX,MULTCND+2    ;-2 
                  MUL     MULTPLR         ;  * ᫮-1 ⥫
                  ADD     PRODUCT+4,AX    ;  ।騬
                  ADC     PRODUCT+6,DX
                  ADC     PRODUCT,00      ;ਡ ७
          
                  MOV     AX,MULTCND      ;-1 
                  MUL     MULTPLR+2       ;  * ᫮-2 ⥫
                  ADD     PRODUCT+4,AX    ;  ।騬

          
          ᥬ  IBM PC. ணࠬ.                          85


                  ADC     PRODUCT+6,DX
                  ADC     PRODUCT,00      ;ਡ ७
                  MOV     AX,MULTCND      ;-1 
                  MUL     MULTPLR         ;  * ᫮-1 ⥫
                  ADD     PRODUCT+2,AX    ;  ।騬
                  ADC     PRODUCT,DX
                  RET
          F10XMUL ENDP
          ;               ⪠  १:
          ; ----------------------------------------
          Z10XMUL PROC
                  MOV     PRODUCT,0000
                  MOV     PRODUCT+2,0000
                  MOV     PRODUCT+4,0000
                  MOV     PRODUCT+6,0000
                  RET
          Z10XMUL ENDP
          
          CODESG  ENDS
                  END     BEGIN


































          
          ᥬ  IBM PC. ணࠬ.                          86


          
                  page    60,132
          TITLE   EXDIV   (COM) ਬ 権 DIV  IDIV
          CODESG  SEGMENT PARA 'Code'
                  ORG     100H
          BEGIN:  JMP     SHORT MAIN
          ; ---------------------------------------------
          BYTE1   DB      80H           ;Data items
          BYTE2   DB      16H
          WORD1   DW      2000H
          WORD2   DW      0010H
          WORD3   DW      1000H
          ; ---------------------------------------------
          MAIN    PROC    NEAR          ;᭮ 楤
                  CALL    D10DIV        ;맮 ணࠬ DIV
                  CALL    E10IDIV       ;맮 ணࠬ IDIV
          MAIN    ENDP
          ;               ਬ   DIV:
          ; ---------------------------------------------
          D10DIV  PROC
                  MOV     AX,WORD1      ; / 
                  DIV     BYTE1         ;  ⮪:⭮  AH:AL
                  MOV     AL,BYTE1      ; / 
                  SUB     AH,AH         ;     AH
                  DIV     BYTE3         ;  ⮪:⭮  AH:AL
          
                  MOV     DX,WORD2      ; ᫮ / ᫮
                  MOV     AX,WORD3      ;    DX:AX
                  DIV     WORD1         ;  ⮪:⭮  DX:AX
                  MOV     AX,WORD1      ; / ᫮
                  SUB     DX,DX         ;     DX
                  DIV     WORD3         ;  ⮪:⭮  DX:AX
                  RET
          D10DIV  ENDP
          ;               ਬ   IDIV:
          ; ---------------------------------------------
          E10IDIV PROC
                  MOV     AX,WORD1      ; / 
                  IDIV    BYTE1         ;  ⮪:⭮  AH:AL
                  MOV     AL,BYTE1      ; / 
                  CBW                   ;     AH
                  IDIV    BYTE3         ;  ⮪:⭮  AH:AL
          
                  MOV     DX,WORD2      ; ᫮ / ᫮
                  MOV     AX,WORD3      ;    DX:AX
                  IDIV    WORD1         ;  ⮪:⭮  DX:AX
                  MOV     AX,WORD1      ; / ᫮
                  CWD                   ;     DX
                  IDIV    WORD3         ;  ⮪:⭮  DX:AX
                  RET
          E10DIV  ENDP
          
          CODESG  ENDS

          
          ᥬ  IBM PC. ணࠬ.                          87


                  END     BEGIN
          
          
          
          TITLE   ASCADD  (COM)  ᥫ  ASCII-ଠ
          CODESG  SEGMENT PARA 'Code'
                  ASSUME  CS:CODESG,DS:CODESG,SS:CODESG
                  ORG     100H
          BEGIN:  JMP     SHORT MAIN
          ; -----------------------------------------------
          ASC1    DB      '578'        ; 
          ASC2    DB      '694'
          ASC3    DB      '0000'
          ; -----------------------------------------------
          MAIN    PROC    NEAR
                  CLC
                  LEA     SI,AASC1+2   ; ASCII-ᥫ
                  LEA     DI,AASC2+2
                  LEA     BX,AASC1+3
                  MOV     CX,03        ;믮 3 横
          A20:
                  MOV     AH,00        ; ॣ AH
                  MOV     AL,[SI]      ;㧨 ASCII-
                  ADC     AL,[DI]      ; ( ७ᮬ)
                  AAA                  ;४  ASCII
                  MOV     [BX],AL      ;࠭ 㬬
                  DEC     SI
                  DEC     DI
                  DEC     BX
                  LOOP    A20          ; 3 ࠧ
                  MOV     [BX],AH      ;࠭ ७
                  RET
          MAIN    ENDP
          CODESG  ENDS
                  END     BEGIN



















          
          ᥬ  IBM PC. ணࠬ.                          88


          
          TITLE   ASCMUL  (COM)  ASCII-ᥫ
          CODESG  SEGMENT PARA 'Code'
                  ASSUME  CS:CODESG,DS:CODESG,SS:CODESG
                  ORG     100H
          BEGIN:  JMP     MAIN
          ; ---------------------------------------------
          MULTCND DB      '3783'          ; 
          MULTPLR DB      '5'
          PRODUCT DB      5 DUP(0)
          ; ---------------------------------------------
          MAIN    PROC    NEAR
                  MOV     CX,04           ;4 横
                  LEA     SI,MULTCND+3
                  LEA     DI,PRODUCT+4
                  AND     MULTPLR,0FH     ; ASCII-ன
          A20:
                  MOV     AL,[SI]         ;㧨 ASCII-ᨬ
                                          ;   ( LODSB)
                  AND     AL,OFH          ; ASCII-ன
                  MUL     MULTPLR         ;
                  AAM                     ;४  ASCII
                  ADD     AL,[DI]         ; 
                  AAA                     ;  ᠭ
                  MOV     [DI],AL         ;  ந
                  DEC     DI
                  MOV     [DI],AH         ; ७
                  DEC     SI
                  LOOP    A20             ; 4 ࠧ
                  RET
          MAIN    ENDP
          CODESG  ENDS
                  END     BEGIN
          
          
          
          TITLE   ASCDIV  (COM)  ASCII-ᥫ
          CODESG  SEGMENT PARA 'Code'
                  ASSUME  CS:CODESG,DS:CODESG,SS:CODESG
                  ORG     100H
          BEGIN:  JMP     SHORT MAIN
          ; ---------------------------------------------
          DIVDND  DB      '3698'          ; 
          DIVSOR  DB      '4'
          QUOTNT  DB      4 DUP(0)
          ; ---------------------------------------------
          MAIN    PROC    NEAR
                  MOV     CX,04           ;4 横
                  SUB     AH,AH           ;   
                  AND     DIVSOR,0FH      ; ASCII 3  ⥫
                  LEA     SI,DIVDND
                  LEA     DI,QUOTNT
          A20:

          
          ᥬ  IBM PC. ணࠬ.                          89


                  MOV     AL,[SI]         ;㧨 ASCII 
                                          ;  ( LODSB)
                  AND     AL,0FH          ; ASCII ன
                  AAD                     ;४  
                  DIV     DIVSOR          ;
                  MOV     [DI],AL         ;࠭ ⭮
                  INC     SI
                  INC     DI
                  LOOP    A20             ; 4 ࠧ
                  RET
          MAIN    ENDP
          CODEGS  ENDS
                  END     BEGIN









































          
          ᥬ  IBM PC. ணࠬ.                          90


          
          TITLE   SCREMP  (EXE)  ६  業,
                                ;뢮 稭 
          ; ----------------------------------------------------
          STACKSG SEGMENT PARA STACK 'Stack'
                  DW      32 DUP(?)
          STACKSG ENDS
          ; ----------------------------------------------------
          DATASG  SEGMENT PARA 'Data'
          HRSPAR  LABLE   BYTE            ;᮪ ࠬ஢ 
                                          ;    ६:
          MAXHLEN DB      6               ;---------------------
          ACTHLEN DB      ?
          HRSFLD  DB      6 DUP(?)
          
          RATEPAR LABLE   BYTE            ;᮪ ࠬ஢ 
                                          ;    業:
          MAXRLEN DB      6               ;---------------------
          ACTRLEN DB      ?
          RATEFLN DB      6 DUP(?)
          
          MESSG1  DB      'Hours worked? ','$'
          MESSG2  DB      'Rate of pay? ','$'
          MESSG3  DB      'Wage = '
          ASCWAGE DB      10 DUP(30H), 13, 10, '$'
          ADJUST  DW      ?
          ASCHRS  DB      0
          ASCRATE DB      0
          BINVAL  DW      00
          BINHRS  DW      00
          BINRATE DW      00
          COL     DB      00
          DECIND  DB      00
          MULT10  DW      01
          NODEC   DW      00
          ROW     DB      00
          SHIFT   DW      ?
          TENWD   DW      10
          DATASG  ENDS
          ; ----------------------------------------------------
          CODESG  SEGMENT PARA 'Code'
          BEGIN   PROC    FAR
                  ASSUME  CS:CODESG,DS:DATASG,SS:STACKSG,ES:DATASG
                  PUSH    DS
                  SUB     AX,AX
                  PUSH    AX
                  MOV     AX,DATASG
                  MOV     DS,AX
                  MOV     ES,AX
                  MOV     AX,0600H
                  CALL    Q10SCR          ; ࠭
                  CALL    Q20CURS         ;⠭ 
          A20LOOP:

          
          ᥬ  IBM PC. ணࠬ.                          91


                  CALL    B10INPT         ; ६  業
                  CMP     ACTHLEN,00      ; ࠡ?
                  JE      A30
                  CALL    D10HOUR         ; 筮 ६
                  CALL    E10RATE         ;  業
                  CALL    F10MULT         ; 
                  CALL    G10WAGE         ;८ࠧ  ASCII
                  CALL    K10DISP         ;뤠 १  ࠭
                  JMP     A20LOOP
          A30:
                  MOV     AX,0600H
                  CALL    Q10SCR          ; ࠭
                  RET                     ;  ணࠬ
          BEGIN   ENDP
          ;                ६  業
          ; ----------------------------------------------------
          B10INPT PROC
                  LEA     DX,MESSG1       ;   ६
                  MOV     AH,09
                  INT     21H
                  LEA     DX,HRSPAR       ; ६
                  MOV     AH,0AH
                  INT     21H
                  CMP     ACTHLEN,00      ;⮩ ?
                  JNE     B20
                  RET                     ;    -  A20LOOP
          B20:
                  MOV     COL,25          ;⠭ ⮫
                  CALL    Q20CURS
                  LEA     DX,MESSG2       ;   業
                  MOV     AH,09
                  INT     21H
                  LEA     DX,RATEPAR      ; 業
                  MOV     AH,0AH
                  INT     21H
                  RET
          B10INPT ENDP
          ;               ࠡ⪠ ६:
          ;               -----------------
          D10HOUR PROC
                  MOV     NODEC,00
                  MOV     CL,ACTHLEN
                  SUB     CH,CH
                  LEA     SI,HRSFLD-1     ;⠭ ࠢ 
                  ADD     SI,CX           ;  ६
                  CALL    M10ASBI         ;८ࠧ  筮
                  MOV     AX,BINVAL
                  MOV     BINHRS,AX
                  RET
          D10HOUR ENDP
          ;               ࠡ⪠ 業:
          ;               ------------------
          E10RATE PROC

          
          ᥬ  IBM PC. ணࠬ.                          92


                  MOV     CL,ACTRLEN
                  SUB     CH,CH
                  LEA     SI,RATEFLD-1    ;⠭ ࠢ 
                  ADD     SI.CX           ;  業
                  CALL    M10ASBI         ;८ࠧ  筮
                  MOV     AX,BINVAL
                  MOV     BINRATE,AX
                  RET
          E10RATE ENDP
          ;               , 㣫  ᤢ:
          ;               -----------------------------
          F10MULT PROC
                  MOV     CX,05
                  LEA     DI,ASCWAGE      ;⠭ ଠ 
                  MOV     AX,3030H        ;    ASCII (30)
                  CLD
                  REP STOSW
                  MOV     SHIFT,10
                  MOV     ADJUST,00
                  MOV     CX,NODEC
                  CMP     CL,06           ;᫨  6 
                  JA      F40             ;  ,  訡
                  DEC     CX
                  DEC     CX
                  JLE     F30             ;, ᫨  3 
                  MOV     NODEC,02
                  MOV     AX,01
          F20:
                  MUL     TENWD           ;᫨ 䠪 ᤢ
                  LOOP    F20
                  MOV     SHIFT,AX
                  SHR     AX,1            ;㣫 १
                  MOV     ADJUST,AX
          F30:
                  MOV     AX,BINHRS
                  MUL     BINRATE         ;᫨ 
                  ADD     AX,ADJUST       ;㣫 
                  ADC     DX,00
                  CMP     DX,SHIFT        ; ᫨誮 
                  JB      F50             ;    DIV?
          F40:
                  SUB     AX,AX
                  JMP     F70
          F50:
                  CMP     ADJUST,00       ;  ॡ?
                  JZ      F80
                  DIV     SHIFT           ; 
          F70:    SUB     DX,DX           ; ⮪
          F80:    RET
          F10MULT ENDP
          ;               ८ࠧ  ASCII ଠ:
          ;               -----------------------------
          G10WAGE PROC

          
          ᥬ  IBM PC. ணࠬ.                          93


                  LEA     SI,ASCWAGE+7    ;⠭ . 
                  MOV     BYTE PTR[SI],'.'
                  ADD     SI,NODEC        ;⠭ ࠢ 
          G30:
                  CMP     BYTE PTR[SI],'.'
                  JNE     G35             ;, ᫨ ..
                  DEC     SI
          G35:
                  CMP     DX,00           ;᫨ dx:ax < 10,
                  JNZ     G40
                  CMP     AX,0010         ;    襭
                  JB      G50
          G40:
                  DIV     TENWD           ;⮪ - ASCII-
                  OR      DL,30H
                  MOV     [SI],DL         ; ASCII ᨬ
                  DEC     SI
                  SUB     DX,DX           ; ⮪
                  JMP     G30
          G50:
                  OR      AL,30H          ; ᫥ ASCII
                  MOV     [SI],AL         ;  ᨬ
                  RET
          G10WAGE ENDP
          ;               뢮 稭 :
          ;               ---------------------
          K10DISP PROC
                  MOV     COL,50          ;⠭ ⮫
                  CALL    Q20CURS
                  MOV     CX,09
                  LEA     SI,ASCWAGE
          K20:                            ; 騥 㫨
                  CMP     BYTE PTR[SI],30H
                  JNE     K30             ;  ஡
                  MOV     BYTE PTR[SI],20H
                  INC     SI
                  LOOP    K20
          K30:
                  LEA     DX,MESSG3       ;뢮  ࠭
                  MOV     AH,09
                  INT     21H
                  CMP     ROW,20          ;᫥ ப ࠭?
                  JAE     K80
                  INC     ROW             ;   - 㢥 ப
                  JMP     K90
          K80:
                  MOV     AX,0601H        ;   --
                  CALL    Q10SCR          ;  ப 
                  MOV     COL,00          ;  ⠭ 
                  CALL    Q20CURS
          K90:    RET
          K10DISP ENDP
          ;               ८ࠧ ASCII-ᥫ

          
          ᥬ  IBM PC. ணࠬ.                          94


          ;                筮 ।⠢:
          ;               --------------------------
          M10ASBI PROC
                  MOV     MULT10,0001
                  MOV     BINVAL,00
                  MOV     DECIND,00
                  SUB     BX,BX
          M20:
                  MOV     AL,[SI]         ;ASCII-ᨬ
                  CMP     AL,'.'          ;, ᫨ .窠
                  JNE     M40
                  MOV     DECIND,01
                  JMP     M90
          M40:
                  AND     AX,000FH
                  MUL     MULT10          ;  䠪
                  ADD     BINVAL,AX       ;  .祭
                  MOV     AX,MULT10       ;᫨ ᫥騩
                  MUL     TENVD           ;  䠪 x 10
                  MOV     MULT10,AX
                  CMP     DECIND,00       ;筠 窠?
                  JNZ     M90
                  INC     BX              ;   -   
          M90:
                  DEC     SI
                  LOOP    M20
                                          ; 横
                  CMP     DECIND,00       ;뫠 .窠?
                  JZ      M100            ;   --
                  ADD     NODEC,BX        ;     ᫮  ⮣
          M100:   RET
          M10ASBI ENDP
          ;               ப⪠ ࠭:
          ;               ----------------
          Q10SCR  PROC    NEAR            ;AX ⠭  맮
                  MOV     BH,30           ; (07  /)
                  SUB     CX,CX
                  MOV     DX,184FH
                  INT     10H
                  RET
          Q10SCR  ENDP
          ;               ⠭ :
          ;               -----------------
          Q20CURS PROC    NEAR
                  MOV     AH,02
                  SUB     BH,BH
                  MOV     DH,ROW
                  MOV     DL,COL
                  INT     10H
                  RET
          Q20CURS ENDP
          
          CODESG  ENDS

          
          ᥬ  IBM PC. ணࠬ.                          95


                  END     BEGIN





















































          
          ᥬ  IBM PC. ணࠬ.                          96


          
                  page    60,132
          TITLE   DIRECT  (COM) אַ ⠡ 
          CODESG  SEGMENT PARA 'Code'
                  ASSUME  CS:CODESG,DS:CODESG,ES:CODESG
                  ORG     100H
          BEGIN:  JMP     SHORT MAIN
          ; ------------------------------------------------
          THREE   DB      3
          MONIN   DB      '11'
          ALFMON  DB      '???','$'
          MONTAB  DB      'JAN','FEB','MAR','APR','MAY','JUN'
                  DB      'JUL','AUG','SEP','OKT','NOV','DEC'
          ; ------------------------------------------------
          MAIN    PROC    NEAR            ;᭮ 楤
                  CALL    C10CONV         ; 筮 祭
                  CALL    D10LOC          ;뤥   ⠡
                  CALL    F10DISP         ;뤠   ࠭
                  RET
          MAIN    ENDP
          ;               ॢ ASCII  筮 ।⠢:
          ;               --------------------------------------
          C10CONV PROC
                  MOV     AH,MONIN        ;㧨  
                  MOV     AL,MONIN+1
                  XOR     AX,3030H        ; ASCII ன
                  CMP     AH,00           ; 01-09?
                  JZ      C20             ;   - 
                  SUB     AH,AH           ;   -  AH,
                  ADD     AL,10           ;   ॢ  筮
          C20     RET
          C10CONV ENDP
          ;               뤥   ⠡:
          ;               ---------------------------
          D10LOC  PROC
                  LEA     SI,MONTAB
                  DEC     AL              ;४  ⠡
                  MUL     THREE           ; AL  3
                  ADD     SI,AX
                  MOV     CX,03           ;ᨬ쭠 뫪
                  CLD
                  LEA     DI,ALFMON
                  REP MOVSB               ;᫠ 3 ᨬ
                  RET
          D10LOC  ENDP
          ;               뢮  ࠭ ᨬ.:
          ;               --------------------------
          F10DISP PROC
                  LEA     DX,ALFMON
                  MOV     AH,09
                  INT     21H
                  RET
          F10DISP ENDP

          
          ᥬ  IBM PC. ணࠬ.                          97


          
          CODESG  ENDS
                  END     BEGIN



















































          
          ᥬ  IBM PC. ணࠬ.                          98


          
                  page    60,132
          TITLE   TABSRCH (COM)  
          CODESG  SEGMENT PARA 'Code'
                  ASSUME  CS:CODESG,DS:CODESG,ES:CODESG
                  ORG     100H
          BEGIN:  JMP     SHORT MAIN
          ; -----------------------------------------------
          STOKNIN DW      '23'
          STOKTAB DB      '05','Excavators'
                  DB      '08','Lifters   '
                  DB      '09','Presses   '
                  DB      '12','Valves    '
                  DB      '23','Processors'
                  DB      '27','Pumps     '
          DESCRN  10      DUP(?)
          ; -----------------------------------------------
          MAIN    PROC    NEAR
                  MOV     AX,STOKNIN      ;㧨  
                  XCHG    AL,AH
                  MOV     CX,06           ;᫮ ⮢  ⠡
                  LEA     SI,STOKTAB      ;砫  ⠡
          A20:
                  CMP     AX,[SI]         ;ࠢ 
                  JE      A30             ;᫨ ࠢ - ,
                  ADD     SI,12           ;   - ᫥騩 
                  LOOP    A20
                  CALL    R10ERR          ;  ⠡  
                  RET
          A30:
                  MOV     CX,05           ; ᠭ 
                  LEA     DI,DESCRN       ; ᠭ 
                  INC     SI
                  INC     SI              ;뤥 ᠭ
                  REP MOVSW               ;   ⠡
                  RET
          MAIN    ENDP
          ;
          R10ERR  PROC
          ;               <뢮 ᮮ饭  訡>
                  RET
          R10ERR  ENDP
          
          CODESG  ENDS
                  END     BEGIN









          
          ᥬ  IBM PC. ணࠬ.                          99


          
                  page    60,132
          TITLE   TABSRCH (COM)  ,  ᯮ騩 CMPSB
          CODESG  SEGMENT PARA 'Code'
                  ASSUME  CS:CODESG,DS:CODESG,ES:CODESG
                  ORG     100H
          BEGIN:  JMP     SHORT MAIN
          ; ----------------------------------------------------
          STOKNIN DW      '123'
          STOKTAB DB      '035','Excavators'       ;砫 ⠡
                  DB      '038','Lifters   '
                  DB      '049','Presses   '
                  DB      '102','Valves    '
                  DB      '123','Processors'
                  DB      '127','Pumps     '
                  DB      '999', 10 DUP(' ')       ; ⠡
          DESCRN  10      DUP(?)
          ; ----------------------------------------------------
          MAIN    PROC    NEAR
                  CLD
                  LEA     SI,STOKTAB     ;砫  ⠡
          A20:
                  MOV     CX,03          ;ࠢ  3 
                  LEA     DI,STOKNIN     ; ᪮ 
                  REPE CMPSB             ;ࠢ
                  JE      A30            ;᫨ ࠢ - ,
                  JA      A40            ;᫨  -   ⠡
                  ADD     SI,CX          ;ਡ CX  
                  JMP     A20            ;騩  ⠡
          A30:
                  MOV     CX,05          ;뫠 5 ᫮
                  LEA     DI,DESCRN      ; ᠭ
                  REP MOVSV              ;᫠  ⠡
                  RET
          A40:
                  CALL    R10ERR         ;  ⠡  
                  RET
          MAIN    ENDP
          
          R10ERR  PROC
          ;               <뢮  ࠭ ᮮ饭  訡>
                  RET
          R10ERR  ENDP
          
          CODESG  ENDS
                  END     BEGIN








          
          ᥬ  IBM PC. ணࠬ.                         100


          
                  page    60,132
          TITLE   XLATE   (COM) ॢ  ASCII   EBCDIC
          CODESG  SEGMENT PARA 'Code'
                  ASSUME  CS:CODESG,DS:CODESG,ES:CODESG
                  ORG     100H
          BEGIN:  JMP     MAIN
          ; ----------------------------------------------------
          ASCNO   DB      '-31.5'
          EBCNO   DB      6 DUP(' ')
          XLTAB   DB      45 DUP(40H)
                  DB      60H, 2DH
                  DB      5CH
                  DB      0F0H,0F1H,0F2H,0F3H,0F4H
                  DB      0F5H,0F6H,0F7H,0F8H,0F9H
                  DB      199 DUP(40H)
          ; ----------------------------------------------------
          MAIN    PROC    NEAR           ;᭮ 楤
                  LEA     SI,ASCNO       ; ᨬ ASCNO
                  LEA     DI,EBCNO       ;  EBCNO
                  MOV     CX,06          ;
                  LEA     BX,XLTAB       ; ⠡
          A20:
                  MOV     AL,[SI]        ; ASCII ᨬ
                  XLAT                   ;४஢
                  MOV     [DI],AL        ;   EBCNO
                  INC     DI
                  INC     SI
                  LOOP    A20            ; 6 ࠧ
                  RET
          MAIN    ENDP
          CODESG  ENDS
                  END     BEGIN





















          
          ᥬ  IBM PC. ணࠬ.                         101


          
                  page    60,132
          TITLE   ASCHEX  (COM) ८ࠧ ASCII  .
          CODESG  SEGMENT PARA 'Code'
                  ASSUME  CS:CODESG,DS:CODESG,ES:CODESG
                  ORG     100H
          BEGIN:  JMP     MAIN
          ; -----------------------------------------------
          DISPROW DB      16 DUP('     '), 13
          HEXSTR  DB      00
          XLATAB  DB      30H,31H,32H,33H,34H,35H,36H,37H,38H,39H
                  DB      41H,42H,43H,44H,45H,46H
          ; -----------------------------------------------
          MAIN    PROC    NEAR            ;᭮ 楤
                  CALL    Q10CLR          ; ࠭
                  LEA     SI,DISPROW
          A20LOOP:
                  CALL    C10HEX          ;४஢
                  CALL    D10DISP         ;   뢥  ࠭
                  CMP     HEXCTR,0FFH     ;᫥ 祭 (FF)?
                  JE      A50             ;   - 
                  INC     HEXCTR          ;  - ३  ᫥饬
                  JMP     A20LOOP
          A50:    RET
          MAIN    ENDP
          
          C10HEX  PROC    NEAR            ;४஢  .
                  MOV     AH,00
                  MOV     AL,HEXCTR       ; .
                  SHR     AX,CL           ; ࠢ .
                  LEA     BX,XLATAB       ;⠭  ⠡
                  MOV     CL,04           ;⠭ 稭 ᤢ
                  XLAT                    ;४஢  .
                  MOV     [SI],AL         ;  ᨬ
          
                  MOV     AL,HEXCTR
                  SHL     AX,CL           ;  
                  XLAT
                  MOV     [SI]+1,AL       ;४஢  .
                  RET                     ; ࠢ ᨬ
          C10HEX  ENDP
          
          D10DISP PROC    NEAR            ;뢮  ࠭
                  MOV     AL,HEXCTR
                  MOV     [SI]+3,AL
                  CMP     AL,1AH          ; EOF?
                  JE      D20             ;   - 
                  CMP     AL,07H          ;/ࠢ 08?
                  JB      D30             ;   - OK
                  CMP     AL,10H          ;/ࠢ 0F?
                  JAE     D30             ;   - OK
          D20:
                  MOV     BYTE PTR [SI]+3,20H

          
          ᥬ  IBM PC. ணࠬ.                         102


          D30:
                  ADD     SI,05           ;騩   ப
                  LEA     DI,DISPROW+80
                  CMP     DI,SI
                  JNE     D40
                  MOV     AH,40H          ;㭪 뢮  ࠭
                  MOV     BX,01           ; ன⢠
                  MOV     CX,81           ; ப
                  LEA     DX,DISPROW
                  INT     21H
                  LEA     SI,DISPROW      ;砫  ப
          D40:    RET
          D10DISP ENDP
          
          Q10CLR  PROC    NEAR            ;⪠ ࠭
                  MOV     AX,0600H
                  MOV     BH,03           ; (07  /)
                  MOV     CX,0000
                  MOV     DX,184FH
                  INT     10H
                  RET
          Q10CLR  ENDP
          
          CODESG  ENDS
                  END     BEGIN





























          
          ᥬ  IBM PC. ணࠬ.                         103


          
                  page    60,132
          TITLE   NMSORT  (EXE)   ஢ 
          ; -----------------------------------------------
          STACK   SGMENT  PARA STACK 'Stack'
                  DW      32 DUP(?)
          STACK   ENDS
          ; -----------------------------------------------
          DATASG  SEGMENT PARA 'Data'
          NAMEPAR LABEL   BYTE            ; ᯨ᪠ ࠬ஢:
          MAXNLEN DB      21              ;  . 
          NAMELEN DB      ?               ;  ᫮  ᨬ
          NAMEFLD DB      21 DUP(' ')     ;  
          
          CRLF    DB      13, 10, '$'
          ENDADDR DW      ?
          MESSG1  DB      'Name?', '$'
          NAMECTR DB      00
          NAMETAB DB      30 DUP(20 DUP(' ')) ; 
          NAMESAV DB      20 DUP(?), 13, 10, '$'
          SWAPPED DB      00
          DATA    ENDS
          ; -----------------------------------------------
          CODESG  SEGMENT PARA 'Code'
          BEGIN   PROC    FAR
                  ASSUME CS:CODESG,DS:DATDSG,SS:STACK,ES:DATASG
                  PUSH    DS
                  SUB     AX,AX
                  PUSH    AX
                  MOV     AX,DATASG
                  MOV     DS,AX
                  MOV     ES,AX
                  CLD
                  LEA     DI,NAMETAB
                  CALL    Q10CLR          ; ࠭
                  CALL    Q20CURS         ;⠭ 
          A20LOOP:
                  CALL    B10READ         ;   
                  CMP     NAMELEN,00      ;   ?
                  JZ      A30             ;   -   ஢
                  CMP     NAMECTR,30      ; 30 ?
                  JE      A30             ;   -   ஢
                  CALL    D10STOR         ;   ⠡
                  JMP     A20LOOP
          A30:                            ;  
                  CALL    Q10CLR          ; ࠭
                  CALL    Q20CURS         ;   ⠭ 
                  CMP     NAMECTR,01      ;  2 ?
                  JBE     A40             ;   - 
                  CALL    G10SORT         ;஢ 
                  CALL    K10DISP         ;뢥 १  ࠭
          A40:    RET                     ; ணࠬ
          BEGIN   ENDP

          
          ᥬ  IBM PC. ணࠬ.                         104


          ;                  ?
          ;               ----------------------
          B10READ PROC
                  MOV     AH,09
                  LEA     DX,MESSG1       ;뢥 ⥪ 
                  INT     21H
                  MOV     AH,0AH
                  LEA     DX,NAMEPAR      ; 
                  INT     21H
                  MOV     AH,09
                  LEA     DX,CRLF         ;뢥 CRLF
                  INT     21H
          
                  MOV     BH,00           ;  ᫥ 
                  MOV     BL,NAMELEN      ; 稪 ᨬ
                  MOV     CX,21
                  SUB     CX,BX           ;᫨ ⠢ 
          B20:
                  MOV     NAMEFLD[BX],20H ;⠭ ᨬ ஡
                  INC     BX
                  LOOP    B20
                  RET
          B10READ ENDP
          ;                  ⠡:
          ;               ----------------------
          D10STOR PROC
                  INC     NAMECTR         ;᫮   ⠡
                  CLD
                  LES     SI,NAMEFLD
                  MOV     CX,10
                  REP MOVSV               ;᫠   ⠡
                  RET
          D10STOR ENDP
          ;               ஢   ⠡:
          ;               -------------------------
          G10SORT PROC
                  SUB     DI,40           ;⠭  ⠭
                  MOV     ENDADDR,DI
          G20:
                  MOV     SWAPPED,00      ;⠭ 砫
                  LEA     SI,NAMETAB      ;  ⠡
          G30:
                  MOV     CX,20           ; ࠢ
                  MOV     DI,SI
                  ADD     DI,20           ;饥   ࠢ
                  MOV     AX,DI
                  MOV     BX,SI
                  REPE CMPSB              ;ࠢ   ᫥騬
                  JBE     G40             ;   ⠭
                  CALL    H10XCHG         ;  ⠭
          G40:
                  MOV     SI,AX
                  CMP     SI,ENDADDR      ; ⠡?

          
          ᥬ  IBM PC. ணࠬ.                         105


                  JBE     G30             ;   - த
                  CMP     SWAPPED,00      ; ⠭?
                  JNZ     G20             ;   - த,
                  RET                     ;   -  ஢
          G10SORT ENDP
          ;               ⠭ ⮢ ⠡:
          ;               ------------------------------
          H10XCHG PROC
                  MOV     CX,10
                  LEA     DI,NAMESAV
                  MOV     SI,BX
                  REP MOVSW               ;࠭ 訩 
          
                  MOV     CX,10
                  MOV     DI,BX
                  REP MOVSW               ;᫠ 訩 
                                          ;    襣
                  MOV     CX,10
                  LEA     SI,NAMESAV
                  REP MOVSW               ;᫠ ࠭
                                          ;     襣
                  MOV     SWAPPED,01      ;ਧ ⠭
                  RET
          H10XCHG ENDP
          ;               뢮  ࠭ ஢ :
          ;               ------------------------------------
          K10DISP PROC
                  LEA     SI,NAMETAB
          K20:
                  LEA     DI,NAMESAV      ;砫  ⠡
                  MOV     CX,10
                  REP MOVSV
                  MOV     AH,09
                  LEA     DX,NAMESAV
                  INT     21H             ;뢥  ࠭
                  DEC     NAMECTR         ; ᫥ ?
                  JNZ     K20             ;   -  横,
                  RET                     ;   - 
          K10DISP ENDP
          ;               ⪠ ࠭:
          ;               --------------
          Q10CLR  PROC
                  MOV     AX,0600H
                  MOV     BH,61H          ; (07  /)
                  SUB     CX,CX
                  MOV     DX,184FH
                  INT     10H
                  RET
          Q10CLR  ENDP
          ;               ⠭ :
          ;               -----------------
          Q20CURS PROC
                  MOV     AH,02

          
          ᥬ  IBM PC. ணࠬ.                         106


                  SUB     BH,BH
                  SUB     DX,DX           ;⠭   00,00
                  INT     10H
                  RET
          Q20CURS ENDP
          
          CODESG  ENDS
                  END     BEGIN














































          
          ᥬ  IBM PC. ணࠬ.                         107


          
                  page    60,132
          TITLE   FCBCREAT (EXE) ᯮ짮 FCB  ᮧ 䠩
          ;----------------------------------------------------------
          STACKSG SEGMENT PARA STACK 'Stack'
                  DW      80 DUP(?)
          STACKSG ENDS
          ;----------------------------------------------------------
          DATASG  SEGMENT PARA 'Data'
          RECLEN  EQU     32
          NAMEPAR LABEL   BYTE            ;᮪ ࠬ஢:
          MAXLEN  DB      RECLEN          ;  . 
          NAMELEN DB      ?               ;  ᫮  ᨬ
          NAMEDTA DB      RECLEN DUP(' ') ;   । (DTA)
          
          FCBREC  LABEL   BYTE            ;FCB  ᪮ 䠩
          FCBDRIV DB      04              ;  ᪮ D
          FCBNAME DB      'NAMEFILE'      ;   䠩
          FCBEXT  DB      'DAT'           ;  ⨯ 䠩
          FCBBLK  DW      0000            ;   ⥪饣 
          FCBRCSZ DW      ?               ;  ࠧ ᪮ 
          FCBFLSZ DD      ?               ;  ࠧ 䠩 (DOS)
                  DW      ?               ;   (DOS)
                  DT      ?               ;  १ࢨ஢ (DOS)
          FCBSQRC DB      00              ;   ⥪饩 
                  DD      ?               ;  ⭮⥫ 
          
          CRLF    DB      13,10,'$'
          ERRCDE  DB      00
          PROMPT  DB      'Name? ','$'
          ROW     DB      01
          OPNMSG  DB      '*** Open error ***',  '$'
          WRTMSG  DB      '*** Write error ***', '$'
          DATASG  ENDS
          ; ---------------------------------------------------------
          CODESG  SEGMENT PARA 'Code'
          BEGIN   PROC    FAR
                  ASSUME CS:CODESG,DS:DATASG,SS:STACKSG,ES:DATASG
                  PUSH    DS
                  SUB     AX,AX
                  PUSH    AX
                  MOV     AX,DATASG
                  MOV     DS,AX
                  MOV     ES,AX
                  MOV     AX,0600H
                  CALL    Q10SCR          ; ࠭
                  CALL    Q20CURS         ;⠭ 
                  CALL    C10OPEN         ;, ⠭ DTA
                  CMP     ERRCDE,00       ;   ᪥?
                  JZ      A20LOOP         ;   - த,
                  RET                     ;   -   DOS
          A20LOOP:
                  CALL    D10PROC

          
          ᥬ  IBM PC. ணࠬ.                         108


                  CMP     NAMELEN,00      ; ?
                  JNE     A20LOOP         ;   - த,
                  CALL    G10CLSE         ;   -  䠩
                  RET                     ;     DOS
          BEGIN   ENDP
          ;               ⨥ ᪮ 䠩:
          ;               ------------------------
          C10OPEN PROC    NEAR
                  MOV     AH,16H          ;㭪 ᮧ 䠩
                  LEA     DX,FCBREC
                  INT     21H
                  CMP     AL,00           ;   ᪥?
                  JNZ     C20             ;   - 訡
          
                  MOV     FCBRCSZ,RECLEN  ;  (EQU)
                  LEA     DX,NAMEDTA      ;㧨  DTA
                  MOV     AH,1AH
                  INT     21AH
                  RET
          C20:
                  LEA     DX,OPNMSG       ;饭  訡
                  CALL    X10ERR
                  RET
          C10OPEN ENDP
          ;                 :
          ;               -----------------
          D10PROC PROC    NEAR
                  MOV     AH,09           ;㭪 뢮  ࠭
                  LEA     DX,PROMPT       ;뤠 
                  INT     21H
          
                  MOV     AH,0AH          ;㭪 
                  LEA     DX,NAMEPAR      ;  䠩
                  INT     21H
                  CALL    E10DISP         ;ப⪠  ࠭
          
                  CMP     NAMELEN,00      ; ?
                  JNE     D20             ;   - த,
                  RET                     ;   - 
          D20:
                  MOV     BH,00           ; ᨬ Return
                  MOV     BL,NAMELEN
                  MOV     NAMEDTA[BX],' ' ; ஡
                  CALL    F10WRIT         ;맢
                                          ;  ணࠬ 
                  CLD
                  LEA     DI,NAMEDTA      ;
                  MOV     CX,RECLEN / 2   ;  
                  MOV     AX,2020H        ;  
                  REP STOSW
                  RET                     ;
          D10PROC ENDP
          ;               ப⪠  ⠭ :

          
          ᥬ  IBM PC. ணࠬ.                         109


          ;               -----------------------------
          E10DISP PROC    NEAR
                  MOV     AH,09           ;㭪 뢮  ࠭
                  LEA     DX,CRLF         ;CR/LF
                  INT     21H             ;맮 DOS
                  CMP     ROW,18          ;᫥ ப ࠭?
                  JAE     E20             ;   - ,
                  INC     ROW             ;   - 㢥 ப
                  RET
          E20:
                  MOV     AX,0601H        ;ப⪠  1 ப
                  CALL    Q10SCR
                  CALL    Q20CURS         ;⠭ 
                  RET
          E10DISP ENDP
          ;                 :
          ;               --------------
          F10WRIT PROC    NEAR
                  MOV     AH,15H          ;㭪 
                  LEA     DX,FCBREC
                  INT     21H
                  CMP     AL,00           ;  訡?
                  JZ      F20             ;  
                  LEA     DX,WRTMSG       ;   -
                  CALL    X10ERR          ;  뤠 ᮮ饭
                  MOV     NAMELEN,00
          F20:    RET
          F10WRIT ENDP
          ;               ⨥ ᪮ 䠩:
          ;               ------------------------
          G10CLSE PROC    NEAR
                  MOV     NAMEDTA,1AH     ;⠭ EOF
                  CALL    F10WRIT
                  MOV     AH,10H          ;㭪 
                  LEA     DX,FCBREC
                  INT     21H
                  RET
          G10CLSE ENDP
          ;               ப⪠ ࠭:
          ;               ----------------
          Q10SCR  PROC    NEAR            ;AX 㦥 ⠭
                  MOV     BH,1EH          ;   ᨭ
                  MOV     CX,0000
                  MOV     DX,184FH
                  INT     10H             ;ப⪠
                  RET
          Q10SCR  ENDP
          ;               ⠭ :
          ;               -----------------
          Q20CURS PROC    NEAR
                  MOV     AH,02
                  MOV     BH,00
                  MOV     DL,00

          
          ᥬ  IBM PC. ணࠬ.                         110


                  MOV     DH,ROW          ;⠭ 
                  INT     10H
                  RET
          Q20CURS ENDP
          ;               뢮 ᮮ饭  訡  ᪥:
          ;               ----------------------------------
          X10ERR  PROC    NEAR
                  MOV     AH,09           ;DX ᮤন
                  INT     21H             ;   ᮮ饭
                  MOV     ERRCDE,01       ;⠭  訡
                  RET
          X10ERR  ENDP
          
          CODESG  ENDS
                  END     BEGIN







































          
          ᥬ  IBM PC. ணࠬ.                         111


          
          TITLE   FCBREAD (EXE) ⥭ ᥩ ᮧ  CREATDSK
          ; -------------------------------------------------------
          STACKSG SEGMENT PARA STACK 'Stack'
                  DW      80 DUP(?)
          STACKSG ENDS
          ;--------------------------------------------------------
          DATASG  SEGMENT PARA 'Data'
          FCBREC  LABEL   BYTE            ;FCB  䠩
          FCBDRIV DB      04              ;  ᪮ D
          FCBNAME DB      'NAMEFILE'      ;   䠩
          FCBEXT  DB      'DAT'           ;  ⨯ 䠩
          FCBBLK  DW      0000            ;   ⥪饣 
          FCBRCSZ DW      0000            ;   ᪮ 
                  DD      ?               ;  ࠧ 䠩 (DOS)
                  DW      ?               ;   (DOS)
                  DT      ?               ;  १ࢨ஢ (DOS)
          FCBSQRC DB      00              ;  ⥪騩  
                  DD      ?               ;  ⭮⥫ 
          
          RECLEN  EQU     32              ; 
          NAMEFLD DB      RECLEN DUP(' '), 13, 10, '$'
          
          ENDCDE  DB      00
          OPENMSG DB      '*** Open error ***', '$'
          READMSG DB      '*** Read error ***', '$'
          ROW     DB      00
          DATASG  ENDS
          ;--------------------------------------------------------
          CODESG  SEGMENT PARA 'Code'
          BEGIN   PROC    FAR
                  ASSUME  CS:CODESG,DS:DATASG,SS:STACKSG,ES:DATASG
                  PUSH    DS
                  SUB     AX,AX
                  PUSH    AX
                  MOV     AX,DATASG
                  MOV     DS,AX
                  MOV     ES,AX
                  MOV     AX,0600H
                  CALL    Q10SCR          ; ࠭
                  CALL    Q20CURS         ;⠭ 
                  CALL    E10OPEN         ; 䠩,
                                          ;  ⠭ DTA
                  CMP     ENDCDE,00       ;⨥  訡?
                  JNZ     A90             ;   - 
          A20LOOP:
                  CALL    F10READ         ; 
                  CMP     ENDCDE,00       ;⥭  訡?
                  JNZ     A90             ;   - 
                  CALL    G10DISP         ;뤠   ࠭
                  JMP     A20LOOP         ;த
          A90:    RET                     ;
          BEGIN   ENDP

          
          ᥬ  IBM PC. ணࠬ.                         112


          ;               ⨥ 䠩  ᪥:
          ;               -----------------------
          E10OPEN PROC    NEAR
                  LEA     X,FCBREC
                  MOV     AH,0FH          ;㭪 
                  INT     21H
                  CMP     AL,00           ; ?
                  JNZ     E20             ;   - 訡
          
                  MOV     FCBRCSZ,RECLEN  ;  (EQU)
                  MOV     AH,1AH
                  LEA     DX,NAMEFLD      ; DTA
                  INT     21H
                  RET
          E20:
                  MOV     ENDCDE,01       ;饭  訡
                  LEA     DX,OPENMSG
                  CALL    X10ERROR
                  RET
          E10OPEN ENDP
          ;               ⥭ ᪮ :
          ;               ----------------------
          F10READ PROC    NEAR
                  MOV     AH,14H          ;㭪 ⥭
                  LEA     DX,FCBREC
                  INT     21H
                  CMP     NAMEFLD,1AH     ;⠭ થ EOF?
                  JNE     F20             ;  
                  MOV     ENDCDE,01       ;  
                  JMP     F90
          F20:
                  CMP     AL,00           ;⥭  訡?
                  JZ      F90             ;   - 
                  MOV     ENDCDE,01       ;:
                  CMP     AL,01           ; 䠩?
                  JZ      F90             ;   - ,
                  LEA     DX,READMSG      ;   - 
                  CALL    X10ERR          ;        訡 ⥭
          F90:
                  RET
          F10READ ENDP
          ;               뢮   ࠭:
          ;               ---------------------
          G10DISP PROC    NEAR
                  MOV     AH,09           ;㭪 뢮  ࠭
                  LEA     DX,NAMEFLD
                  INT     21H
                  CMP     ROW,20          ;᫥ ப ࠭?
                  JAE     G30             ;   -
                  INC     ROW             ;   - 㢥 ப
                  JMP     G90
          G30:
                  MOV     AX,0601H

          
          ᥬ  IBM PC. ணࠬ.                         113


                  CALL    Q10SCR          ;  ப
                  CALL    Q20CURS         ;  ⠭ 
          G90:    RET
          G10DISP ENDP
          ;               ப⪠ (஫) ࠭:
          ;               ----------------------------
          Q10SCR  PROC    NEAR            ;AX 㦥 ⠭
                  MOV     BH,1EH          ;⠭ 梥
                  MOV     CX,0000
                  MOV     DX,184FH        ;㭪 ப⪨
                  INT     10H
                  RET
          Q1OSCR  ENDP
          ;               ⠭ :
          ;               -----------------
          Q20CURS PROC    NEAR
                  MOV     AH,02
                  MOV     BH,00
                  MOV     DH,ROW
                  MOV     DL,00
                  INT     10H
                  RET
          Q20CURS ENDP
          ;               뢮 ᮮ饭  訡  ᪥:
          ;               ----------------------------------
          X10ERR  PROC    NEAR
                  MOV     AH,09           ;DX ᮤন 
                  INT     21H             ;  ᮮ饭
                  RET
          X10ERR  ENDP
          
          CODESG  ENDS
                  END     BEGIN
          
          
          
                  page    60,132
          TITLE   RANREAD (COM) אַ ⥭ ᥩ,
          ;                        ᮧ  FCBCREAT
          CODESG  SEGMENT PARA 'Code'
                  ASSUME  CS:CODESG,DS:CODESG,SS:CODESG,ES:CODESG
                  ORG     100H
          BEGIN:  JMP     MAIN
          ;-----------------------------------------------------
          FCBREC  LABEL   BYTE            ;FCB  ᪮ 䠩
          FCBDRIV DB      04              ;  ᪮ D
          FCBNAME DB      'MAMEFILE'      ;   䠩
          FCBEXT  DB      'DAT'           ;  ⨯ 䠩
          FCBBLK  DW      0000            ;   ⥪饣 
          FCBRCSZ DW      0000            ;   ᪮ 
                  DD      ?               ;  ࠧ 䠩 (DOS)
                  DW      ?               ;   (DOS)
                  DT      ?               ;  १ࢨ஢ (DOS)

          
          ᥬ  IBM PC. ணࠬ.                         114


                  DB      00              ;   ⥪饩 
          FCBRNRC DD      000000000       ;  ⭮⥫ 
          
          RECLEN  EQU     32              ; 
          RECDPAR LABEL   BYTE            ;᮪ ࠬ஢:
          MAXLEN  DB      3               ;
          ACTLEN  DB      ?               ;
          RECDNO  DB      3 DUP(' ')      ;
          
          NAMEFLD DB      RECLEN DUP(' '),13,10,'$' ;DTA
          
          OPENMSG DB      '*** Open error ***',13,10,'$'
          READMSG DB      '*** Read error ***',13,10,'$'
          COL     DB      00
          PROMPT  DB      'Record number? $'
          ROW     DB      00
          ENDCDE  DB      00
          ;-----------------------------------------------------
          MAIN    PROC    NEAR
                  CALL    Q10CLR          ; ࠭
                  CALL    Q20CURS         ;⠭ 
                  CALL    C10OPEN         ; 䠩,
                                          ;  ⠭ DTA
                  CMP     ENDCDE,00       ;⨥  訡?
                  JZ      A20LOOP         ;   - த,
                  RET                     ;   - 
          A20LOOP:
                  CALL    D10RECN         ;  
                  CMP     ACTLEN,00       ; ?
                  JE      A40             ;   - 
                  CALL    F10READ         ;⥭ (אַ )
                  CMP     ENDCDE,00       ; 訡 ⥭?
                  JNZ     A30             ;   - 
                  CALL    G10DISP         ;뢥  ࠭
          A30:
                  JMP     A20LOOP
          A40:    RET                     ; ணࠬ
          MAIN    ENDP
          ;               ணࠬ  䠩  ᪥:
          ;               ------------------------------------
          C10OPEN PROC    NEAR
                  MOV     AH,0FH          ;㭪 
                  LEA     DX,FCBREC
                  INT     21H
                  CMP     AL,00           ;⨥ ଠ쭮?
                  JNZ     C20             ;   - 訡
                  MOV     FCBRCSZ,RECLEN  ;  (EQU)
                  MOV     AH,1AH
                  LEA     DX,NAMEFLD      ;⠭  DTA
                  INT     21H
                  RET
          C20:
                  LEA     DX,OPENMSG

          
          ᥬ  IBM PC. ணࠬ.                         115


                  CALL    X10ERR
                  RET
          C10OPEN ENDP
          ;                   :
          ;               -------------------------------
          D10RECN PROC    NEAR
                  MOV     AH,09H          ;㭪 뢮  ࠭
                  LEA     DX,PROMPT
                  INT     21H
                  MOV     AH,0AH          ;㭪   
                  LEA     DX,RECDPAR
                  INT     21H
                  CMP     ACTLEN,01       ;஢  (0,1,2)
                  JB      D40             ; 0, 
                  JA      D20
                  SUB     AH,AH           ; 1
                  MOV     AL,RECDNO
                  JMP     D30
          D20:
                  MOV     AH,RECDNO       ; 2
                  MOV     AL,RECDNO+1
          D30:
                  AND     AX,0F0FH        ; ASCII ன
                  AAD                     ८ࠧ  筮
                  MOV     WORD PTR FCBRNRC,AX
          D40:
                  MOV     COL,20
                  CALL    Q20CURS         ;⠭ 
                  RET
          D10RECN ENDP
          ;               ⥭ ᪮ :
          ;               ----------------------
          F10READ PROC    NEAR
                  MOV     ENDCDE,00       ;  襭
                  MOV     AH,21H          ;㭪 אַ ⥭
                  LEA     DX,FCBREC
                  INT     21H
                  CMP     AL,00           ;⥭  訡?
                  JZ      F20             ;   - 
                  LEA     DX,READMSG      ;   - 뤠
                  CALL    X10ERR          ;  ᮮ饭  訡
          F20:    RET
          F10READ ENDP
          ;               뢮   ࠭:
          ;               --------------------
          G10DISP PROC    NEAR
                  MOV     AH,09           ;㭪 뢮  ࠭
                  LEA     DX,NAMEFLD
                  INC     21H
                  INC     ROW
                  MOV     COL,00
                  RET
          G10DISP ENDP

          
          ᥬ  IBM PC. ணࠬ.                         116


          ;               ⪠ ࠭:
          ;               --------------
          Q10CLR  PROC    NEAR
                  MOV     AX,0600H        ;㭪 ப⪨
                  MOV     BH,41H          ; (07  /)
                  MOV     CX,0000
                  MOV     DX,184FH
                  INT     10H
                  RET
          Q10CLR  ENDP
          ;               ⠭ :
          ;               -----------------
          Q20CURS PROC    NEAR
                  MOV     AH,02           ;㭪 ⠭
                  MOV     BH,00           ;  
                  MOV     DH,ROW
                  MOV     DL,COL
                  INT     10H
                  RET
          Q20CURS ENDP
          ;               뢮 ᮮ饭  訡  ᪥:
          ;               ----------------------------------
          X10ERR  PROC    NEAR
                  MOV     AH,09           ;DX ᮤন 
                  INT     21H             ;  ᮮ饭
                  INC     ROW
                  MOV     ENDCDE,01
                  RET
          X10ERR  ENDP
                  CODESG  ENDS
                  END     BEGIN























          
          ᥬ  IBM PC. ணࠬ.                         117


          
          TITLE   RANBLOK (COM) אַ 筮 ⥭ 䠩
          CODESG  SEGMENT PARA 'Code'
                  ASSUME  CS:CODESG,DS:CODESG,SS:CODESG,ES:CODESG
                  ORG     100H
          BEGIN:  JMP     MAIN
          ;----------------------------------------------------
          FCBREC  LABEL   BYTE            ;FCB  ᪮ 䠩
          FCBDRIV DB      04              ;   ᪮ D
          FCBNAME DB      'NAMEFILE'      ;    䠩
          FCBEXT  DB      'DAT'           ;   ⨯ 䠩
          FCBBLK  DW      0000            ;    ⥪饣 
          FCBRCSZ DW      0000            ;   ᪠  
          FCBFLZ  DD      ?               ;   DOS ࠧ 䠩
                  DW      ?               ;   DOS 
                  DT      ?               ;   DOS १ࢨ஢
                  DB      00              ;    ⥪饩 
          FCBRNRC DD      00000000        ;   ⭮⥫ 
          
          DSKRECS DB      1024 DUP(?),'$' ;DTA   ᥩ
          
          ENDCODE DB      00
          NORECS  DW      25              ;᫮ ᥩ
          OPENMSG DB      '*** Open error ***',13,10,'$'
          READMSG DB      '*** Open error ***',13,10,'$'
          ROWCTR  DB      00
          ; ---------------------------------------------------
          MAIN    PROC    NEAR
                  CALL    Q10CLR          ; ࠭
                  CALL    Q20CURS         ;⠭ 
                  CALL    E10OPEN         ; 䠩,
                                          ;       ⠭ DTA
                  CMP     ENDCODE,00      ;ᯥ譮 ⨥?
                  JNZ     A30             ;        - 
                  CALL    F10READ         ; 
                  CALL    G10DISP         ;뢮   ࠭
          A30:    RET                     ; ணࠬ
          MAIN    ENDP
          ;                ᪮ 䠩:
          ;               ---------------------
          E10OPEN PROC    NEAR
                  MOV     AH,0FH          ;㭪  䠩
                  LEA     DX,FCBREC
                  INT     21H
                  CMP     AL,00           ;ᯥ譮 ⨥?
                  JNZ     A30             ;   - 訡
          
                  MOV     FCBRCSZ,0020H   ; 
                  MOV     AH,1AH
                  LEA     DX,DSKRECS      ;⠭  DTA
                  INT     21H
                  RET
          E20:

          
          ᥬ  IBM PC. ணࠬ.                         118


                  LEA     DX,OPENMSG      ;訡  䠩
                  CALL    X10ERR
                  RET
          E10OPEN ENDP
          ;               ⥭ :
          ;               ------------
          F10READ PROC    NEAR
                  MOV     AH,27H          ;אַ ⥭ 
                  MOV     CX,NORECS       ;᫮ ᥩ
                  LEA     DX,FCBREC
                  INT     21H
                  MOV     ENDCODE,AL      ;࠭  
                  RET
          F10READ ENDP
          ;               뢮   ࠭:
          ;               --------------------
          G10DISP PROC    NEAR
                  MOV     AH,09           ;㭪 뢮  ࠭
                  LEA     DX,DSKRECS
                  INT     21H
                  RET
          G10DISP ENDP
          ;               ணࠬ ⪨ ࠭:
          Q10CLR  PROC    NEAR
                  MOV     AX,0600H        ;㭪 ஫
                  MOV     BH,41H          ; (07  /)
                  MOV     CX,0000
                  MOV     DX,184FH
                  INT     10H
                  RET
          Q10CLR  ENDP
          ;               ணࠬ ⠭ :
          ;               ------------------------------
          Q20CURS PROC    NEAR
                  MOV     AH,02           ;㭪 ⠭ 
                  MOV     BH,00
                  MOV     DH,ROWCTR
                  MOV     DL,00
                  INT     10H
                  INC     ROWCTR
                  RET
          Q20CURS ENDP
          ;               ணࠬ ᮮ饭  訡 ᪠:
          ;               --------------------------------------
          X10ERR  PROC    NEAR
                  MOV     AH,09           ;DX ᮤন 
                  INT     21H             ;   ᮮ饭
                  MOV     ENDCODE,01
                  RET
          X10ERR  ENDP
          
          CODESG  ENDS
                  END     BEGIN

          
          ᥬ  IBM PC. ணࠬ.                         119


          
          TITLE   SELDEL (COM)      롮筮 㤠 䠩
          ;               । ⥪騩 ᪮;
          ;               ਬ ࠬ஢: *.*, *.BAK,  ..
          CODESG  SEGMENT PARA 'Code'
                  ASSUME  CS:CODESG,DS:CODESG,SS:CODESG
                  ORG     100H
          BEGIN   JMP     MAIN
          ; ----------------------------------------------------------
          TAB     EQU     09
          LF      EQU     10
          CR      EQU     13
          CRLF    DB      CR,LF,'$'
          DELMSG  DB      TAB,'Erase','$'
          ENDMSG  DB      CR,LF,'No more directory entries',CR,LF,'$'
          ERRMSG  DB      'Write protected disk','$'
          PROMPT  DB      'y = Erase, N = Keep, Ret = Exit',CR,LF,'$'
          ; ----------------------------------------------------------
          MAIN    PROC    NEAR            ; 楤
                  MOV     AH,11H          ;  
                  CALL    D10DISK
                  CMP     AL,0FFH         ;᫨  ⮢,
                  JE      A90             ;    
                  LEA     DX,PROMPT       ; 
                  CALL    B10DISP
          A20:
                  LEA     DX,DELMSG       ;뤠 ᮮ饭
                  CALL    B10DISP         ;    㤠 䠩
                  MOV     CX,11           ;11 ᨬ
                  MOV     SI,81H          ;砫  䠩
          A30:
                  MOV     DL,[SI]         ;騩 ᨬ
                  CALL    C10CHAR         ;    뢮  ࠭
                  INC     SI              ;騩 ᨬ
                  LOOP    A30
                  MOV     DL,'?'
                  CALL    C10CHAR
                  MOV     AH,01           ; ᨬ
                  INT     21H             ;   ⢥
                  CMP     AL,ODH          ; Return?
                  JE      A90             ;    - 
                  OR      AL,00100000B    ;४஢
                                          ;    ய 㪢
                  CMP     AL,'y'          ;襭 㤠?
                  JNE     A50             ;    - ,
                  MOV     AH,13H          ;    - 㤠 䠩
                  MOV     DX,80H
                  INT     21H
                  CMP     AL,0            ;ᯥ譮 㤠?
                  JZ      A50             ;    - 
                  LEA     DX,ERRMSG       ;    - 뤠
                  CALL    B10DISP         ;         ।०
                  JMP     A90

          
          ᥬ  IBM PC. ணࠬ.                         120


          A50:
                  LEA     DX,CRLF         ;ॢ ப  ࠭
                  CALL    B10DISP
                  MOV     AH,12H
                  CALL    B10DISK         ; ᫥騩 
                  CMP     AL,0FFH         ; ?
                  JNE     A20             ;    - 
          A90:
                  RET                     ;室  DOS
          MAIN    ENDP
          ;               뢮 ப  ࠭;
          ;               ---------------------
          B10DISP PROC    NEAR            ; DX 室 
                  MOV     AH,09           ;               ப
                  INT     21H
                  RET
          B10DISP ENDP
          ;               뢮 ᨬ  ࠭;
          ;               ----------------------
          C10CHAR PROC    NEAR            ; DL 室 ᨬ
                  MOV     AH,02
                  INT     21H
                  RET
          C10CHAR ENDP
          ;               ⥭  ⠫:
          ;               ------------------------
          D10DISK PROC    NEAR
                  MOV     DX,5CH          ;⠭ FCB
                  INT     21H
                  CMP     AL,0FFH         ;  ?
                  JNE     D90
                  PUSH    AX              ;࠭ AL
                  LEA     DX,ENDMSG
                  CALL    B10DISP
                  POP     AX              ;⠭ AL
          D90:    RET
          D10DISK ENDP
          
          CODESG  ENDS
                  END     BEGIN
          













          
          ᥬ  IBM PC. ணࠬ.                         121


          
                  page    60,132
          TTILE   HANCREAT (EXE)    䠩  ᪥
          ; -----------------------------------------------------
          STACKSG SEGMENT PARA STACK 'Stack'
                  DW      80 DUP(?)
          STACKSG ENDS
          ; -----------------------------------------------------
          DATASG  SEGMENT PARA 'Data'
          NAMEPAR LABEL   BYTE                    ;᮪ ࠬ஢:
          MAXLEN  DB      30                      ;
          NAMELEN DB      ?                       ;
          NAMEREC DB      30 DUP('  '), 0DH, 0AH  ;    ,
                                                  ;   CR/LF  
          ERRCDE  DB      00
          HANDLE  DW      ?
          PATHNAM DB      'D:\NAMEFILE.DAT',0
          PROMPT  DB      'Name? '
          ROW     DB      01
          OPNMSG  DB      '*** Open error ***', 0DH, 0AH
          WRTMSG  DB      '*** Write error ***', 0DH, 0AH
          DATASG  ENDS
          ; -------------------------------------------------------
          CODESG  SEGMENT PARA 'Code'
          BEGIN   PROC    FAR
                  ASSUME  CS:CODESG,DS:DATASG,SS:STACKSG,ES:DATASG
                  PUSH    DS
                  SUB     AX,AX
                  PUSH    AX
                  MOV     AX,DATASG
                  MOV     DS,AX
                  MOV     ES,AX
                  MOV     AX,0600H
                  CALL    Q10SCR          ;⪠ ࠭
                  CALL    Q20CURS         ;⠭ 
                  CALL    C10CREA         ; 䠩,
                                          ;   ⠭ DTA
                  CMP     ERRCDE,00       ;訡  ᮧ?
                  JZ      A20LOOP         ;     - த,
                  RET                     ;    -   DOS
          A20LOOP:
                  CALL    D10PROC
                  CMP     NAMELEN,00      ; ?
                  JNE     A20LOOP         ;    - த,
                  CALL    G10CLSE         ;     -  䠩
                  RET                     ;            DOS
          BEGIN   ENDP
          ;                䠩  ᪥:
          ;               -----------------------
          C10CREA PROC    NEAR
                  MOV     AH,3CH          ;㭪 ᮧ 䠩
                  MOV     CX,00           ;ଠ ਡ
                  LEA     CX,PATHNAM

          
          ᥬ  IBM PC. ணࠬ.                         122


                  INT     21H
                  JC      C20             ; 訡?
                  MOV     HANDLE,AX       ;    -  ,
                  RET
          C20:                            ;    -
                  LEA     DX,OPNMSG       ;      뤠 ᮮ饭
                  CALL    X10ERR          ;       訡
                  RET
          C10CREA ENDP
          ;                 :
          ;               -----------------
          D10PROC PROC    NEAR
                  MOV     AH,40H          ;㭪 뢮  ࠭
                  MOV     BX,01           ; (Handle)
                  MOV     CX,06           ; ⥪ 
                  LEA     DX,PROMPT       ;뤠 
                  INT     21H
          
                  MOV     AH,0AH          ;㭪   
                  LEA     DX,NAMEPAR      ;᮪ ࠬ஢
                  INT     21H
                  CMP     NAMELEN,00      ; ?
                  JNE     D20             ;     - 
                  RET                     ;    - 
          D20:
                  MOV     AL,20H          ;஡  
                  SUB     CH,CH
                  MOV     CL,NAMELEN      ;
                  LEA     DI,NAMEREC      ;
                  ADD     DI,CX           ; + 
                  NEG     CX              ;᫨
                  ADD     CX,30           ;   ⠢ 
                  REP     STOSB           ; ஡
          D90:
                  CALL    F10WRIT         ;  
                  CALL    E10SCRL         ;஢ઠ  ஫
                  RET
          D10PROC ENDP
          ;               ஢ઠ  ஫:
          ;               --------------------
          E10SCRL PROC    NEAR
                  CMP     ROW,18          ;᫥ ப ࠭
                  JAE     E10             ;     - ,
                  INC     ROW             ;    - 㢥 ப
                  JMP     E10
          E10:
                  MOV     AX,0601H        ;த   ப
                  CALL    Q10SCR
          E90:    CALL    Q20CURS         ;⠭ 
                  RET
          E10SCRL ENDP
          ;                 :
          ;               --------------

          
          ᥬ  IBM PC. ணࠬ.                         123


          F10WRIT PROC    NEAR
                  MOV     AH,40H          ;㭪   
                  MOV     BX,HANDLE
                  MOV     CX,32           ;30   + 2  CR/LF
                  LEA     DX,NAMEREC
                  INT     21H
                  JNC     F20             ;訡 ?
                  LEA     DX,WRTMSG       ;    -
                  CALL    X10ERR          ;   뤠 ।०
                  MOV     NAMELEN,00
          F20:
                  RET
          F10WRIT ENDP
          ;               ⨥ 䠩  ᪥:
          ;               -----------------------
          G10CLSE PROC    NEAR
                  MOV     NAMEREC,1AH     ;થ   (EOF)
                  CALL    F10WRIT
                  MOV     AH,3EH          ;㭪 
                  MOV     BX,HANDLE
                  INT     21H
                  RET
          G10CLSE ENDP
          ;               ப⪠ (஫) ࠭:
          ;               ----------------------------
          Q10SCR  PROC    NEAR            ; AX -  
                  MOV     BH,1EH          ; -   ᨭ
                  MOV     CX,0000
                  MOV     DX,184FH
                  INT     10H             ;஫
                  RET
          Q10SCR  ENDP
          ;               ⠭ :
          ;               -----------------
          Q20CURS PROC    NEAR
                  MOV     AH,02
                  MOV     BH,00
                  MOV     DH,ROW          ;⠭ 
                  MOV     DL,00
                  INT     10H
                  RET
          Q20CURS ENDP
          ;               뢮 ᮮ饭  訡:
          ;               -------------------------
          X10ERR  PROC    NEAR            ;DX ᮤন
                  MOV     AH,40H          ;    ᮮ饭
                  MOV     BX,01
                  MOV     CX,21           ; ᮮ饭
                  INT     21H
                  MOV     ERRCDE,01       ;⠭  訡 
                  RET
          X10ERR  ENDP
          

          
          ᥬ  IBM PC. ணࠬ.                         124


          CODESG  ENDS
                  END     BEGIN
          



















































          
          ᥬ  IBM PC. ணࠬ.                         125


          
                  page    60,132
          TITLE   HANREAD (EXE)   ⥭ ᥩ, ᮧ  HANCREAT
          ; -----------------------------------------------------
          STACKSG SEGMENT PARA STACK 'Stack'
                  DW      80 DUP(?)
          STACKSG ENDS
          ; -----------------------------------------------------
          DATASG  SEGMENT PARA 'Data'
          ENDCDE  DB      00
          HANDLE  DW      ?
          IOAREA  DB      32 DUP(' ')
          PATHNAM DB      'D:\NAMEFILE.SRT',0
          OPENMSG DB      '*** Open error ***', 0DH, 0AH
          READMSG DB      '*** Read error ***', 0DH, 0AH
          ROW     DB      00
          DATASG  ENDS
          ; ------------------------------------------------------
          CODESG  SEGMENT PARA 'Code'
          BEGIN   PROC    FAR
                  ASSUME  CS:CODESG,DS:DATASG,SS:STACKSG,ES:DATASG
                  PUSH    DS
                  SUB     AX,AX
                  PUSH    AX
                  MOV     AX,DATASG
                  MOV     DS,AX
                  MOV     ES,AX
                  MOV     AX,0600H
                  CALL    Q10SCR          ; ࠭
                  CALL    Q20CURS         ;⠭ 
                  CALL    E100PEN         ; 䠩,
          ;                               ;   ⠭ DTA
                  CMP     ENDCDE,00       ;訡 ?
                  JNZ     A90             ;    -  ணࠬ
          A20LOOP:
                  CALL    F10READ         ;⥭   ᪠
                  CMP     ENDCDE,00       ;訡 ⥭?
                  JNZ     A90             ;     - ,
                  CALL    G10DISP         ;    - 뤠 ,
                  JMP     A20LOOP         ;          த
          A90:    RET
          BEGIN   ENDP
          ;               ⨥ 䠩:
          ;               --------------
          E100PEN PROC    NEAR
                  MOV     AH,3DH          ;㭪 
                  MOV     CX,00           ;ଠ ਡ
                  LEA     DX,PATHNAM
                  INT     21H
                  JC      E20             ;訡 ?
                  MOV     HANDLE,AX       ;    - ࠭
                  RET                     ;         䠩 
          E20:

          
          ᥬ  IBM PC. ணࠬ.                         126


                  MOV     ENDCDE,01       ;    - 뤠
                  LEA     DX,OPENMSG      ;   ᮮ饭  訡
                  CALL    X10ERR
                  RET
          E100PEN ENDP
          ;               ⥭ ᪮ :
          ;               ----------------------
          F10READ PROC    NEAR
                  MOV     AX,3FH          ;㭪 ⥭
                  MOV     BX,HANDLE
                  MOV     CX,32           ;30  , 2  CR/LF
                  LEA     DX,IOAREA
                  INT     21H
                  JC      F20             ;訡  ⥭?
                  CMP     AX,00           ; 䠩?
                  JE      F30
                  CMP     IOAREA,1AH      ;થ  䠩 (EOF)?
                  JE      F30             ;    - 
                  RET
          F20:
                  LEA     DX,READMSG      ;    - 뤠
                  CALL    X10ERR          ;   ᮮ饭  訡
          F30:
                  MOV     ENDCDE,01       ; 襭
          F90:    RET
          F10READ ENDP
          ;               뢮   ࠭:
          ;               --------------------
          G10DISP PROC    NEAR
                  MOV     AH,40H          ;㭪 뢮  ࠭
                  MOV     BX,01           ;⠭ 
                  MOV     CX,32           ;    
                  LEA     DX,IOAREA
                  INT     21H
                  CMP     ROW,20          ;᫥ ப ࠭?
                  JEA     G90             ;    - 
                  INC     ROW
                  RET
          G90:
                  MOV     AX,0601H
                  CALL    Q10SCR          ;ப⪠ (஫)
                  CALL    Q20CURS         ;⠭ 
                  RET
          G10DISP ENDP
          ;               ப⪠ (஫) ࠭:
          ;               ----------------------------
          Q10SCR  PROC    NEAR            ; AX -  
                  MOV     BH,1EH          ;⠭ 梥
                  MOV     CX,0000
                  MOV     DXX,184FH       ;㭪 ப⪨
                  INT     10H
                  RET
          Q10SCR  ENDP

          
          ᥬ  IBM PC. ணࠬ.                         127


          ;               ⠭ :
          ;               -----------------
          Q20CURS PROC    NEAR
                  MOV     AH,02           ;㭪 ⠭ 
                  MOV     BH,00           ;   
                  MOV     DH,ROW          ;   ப
                  MOV     DL,00           ;   ⮫
                  INT     10H
                  RET
          Q20CURS ENDP
          ;               뢮 ᮮ饭  訡:
          ;               -------------------------
          X10ERR  PROC    NEAR
                  MOV     AH,40H          ; DX -  ᮮ饭
                  MOV     BX,01           ;
                  MOV     CX,20           ; ᮮ饭
                  INT     21H
                  RET
          X10ERR  ENDP
          
          CODESG  ENDS
                  END     BEGIN
          































          
          ᥬ  IBM PC. ணࠬ.                         128


          
                  page    60,132
          TITLE   ASCREAD (COM)   ⥭ ASCII 䠩
          CODESG  SEGMENT PARA 'Code'
                  ASSUME  CS:CODESG,DS:CODESG,SS:CODESG,ES:CODESG
                  ORG     100H
          BEGIN:  JMP     MAIN
          ; -------------------------------------------------
          SECTOR  DB      512 DUP(' ')    ; 
          DISAREA DB      120 DUP(' ')    ; 뢮  ࠭
          ENDCDE  DW      00
          HANDLE  DW      0
          OPENMSG DB      '*** Open error ***'
          PATHNAM DB      'D:\HANREAD.ASM', 0
          ROW     DB      00
          ; -------------------------------------------------
          MAIN    PROC    NEAR            ;᭮ ணࠬ
                  MOV     AX,0600H
                  CALL    Q10SCR          ; ࠭
                  CALL    Q20CURS         ;⠭ 
                  CALL    E10OPEN         ; 䠩,
                                          ;   ⠭ DTA
                  CMP     ENDCDE,00       ;訡  ⨨?
                  JNE     A90             ;     - ,
          A20LOOP:                        ;    - த
                  CALL    R10READ         ;⥭ ࢮ ᥪ
                  CMP     ENDCDE,00       ; 䠩,  ?
                  JE      A90             ;    - 
                  CALL    G10XPER         ;뤠  ࠭
          A90:    RET                     ; ணࠬ
          MAIN    ENDP
          ;                䠩  ᪥:
          ;               ---------------------
          E10OPEN PROC    NEAR
                  MOV     AH,3DH          ;㭪 
                  MOV     AL,00           ;쪮 ⥭
                  LEA     DX,PATHNAM
                  INT     21H
                  JNC     E20             ;஢ 䫠 CF
                  CALL    X10ERR          ;   訡, ᫨ ⠭
                  RET
          E20:
                  MOV     HANDLE,AX       ;  䠩
                  RET
          E10OPEN ENDP
          ;                뢮   ࠭:
          ;               --------------------------------
          G10XPER PROC    NEAR
                  CLD                     ;ࠢ ᫥-ࠢ
                  LEA     SI,SECTOR
          G20:
                 LEA     DI,DISAREA
          G30:

          
          ᥬ  IBM PC. ணࠬ.                         129


                  LEA     DX,SECTOR+512
                  CMP     SI,DX           ; ᥪ?
                  JNE     G40             ;    - ,
                  CALL    R10READ         ;     -  ᫥騩
                  CMP     ENDCDE,00       ; 䠩?
                  JE      G80             ;     - 
                  LEA     SI,SECTOR
          G40:
                  LEA     DX,DISAREA+80
                  CMP     DI,DX           ; DISAREA?
                  JB      G50             ;    - ,
                  MOV     [DI],0D0AH      ;     - ⠭ CR/LF
                  CALL    H10DISP         ;          뤠  ࠭
                  LEA     DI,DISAREA
          G50:
                  LODSB                   ;㧨 [SI]  AL
                                          ;    㢥 SI
                  STOSB                   ; AL  [DI]
                                          ;    㢥 DI
                  CMP     AL,1AH          ; 䠩?
                  JE      G80             ;    - 
                  CMP     AL,0AH          ; ப?
                  JNE     G30             ;    -  横,
                  CALL    H10DISP         ;     - 뢥  ࠭
                  JMP     G20
          G80:
                  CALL    H10DISP         ;뢥 ᫥ ப
          G90:    RET
          G10XPER ENDP
          ;               뢮 ப  ࠭:
          ;               ---------------------
          H10DISP PROC    NEAR
                  MOV     AH,40H          ;㭪 뢮  ࠭
                  MOV     BX,01           ; (Handle)
                  LEA     CX,DISAREA      ;᫨
                  NEG     CX              ;   
                  ADD     CX,DI           ;   ப
                  LEA     DX,DISAREA
                  INT     21H
                  CMP     ROW,22          ;᫥ ப ࠭?
                  JAE     H20             ;    - 
                  INC     ROW
                  JMP     H90
          H20:
                  MOV     AX,0601H        ;ப⪠ (஫)
                  CALL    Q10SCR
                  CALL    Q20CURS
          H90:    RET
          H10DISP ENDP
          ;               ⥭ ᪮ ᥪ:
          ;               -----------------------
          R10READ PROC    NEAR
                  MOV     AH,3FH          ;㭪 ⥭

          
          ᥬ  IBM PC. ணࠬ.                         130


                  MOV     BX,HANDLE       ;ன⢮
                  MOV     CX,512          ;
                  LEA     DX,SECTOR       ;
                  INT     21H
                  MOV     ENDCDE,AX
                  RET
          R10READ ENDP
          ;               ப⪠ (஫) ࠭:
          ;               ----------------------------
          Q10SCR  PROC    NEAR            ; AX  
                  MOV     BH,1EH          ;⠭ 梥
                  MOV     CX,0000         ;ப⪠
                  MOV     DX,184FH
                  INT     10H
                  RET
          Q10SCR  ENDP
          ;               ⠭ :
          ;               -----------------
          Q20CURS PROC    NEAR
                  MOV     AH,02           ;㭪
                  MOV     BH,00           ;   ⠭ 
                  MOV     DH,ROW
                  MOV     DL,00
                  INT     10H
                  RET
          Q20CURS ENDP
          ;               뢮 ᮮ饭  訡  ᪥:
          ;               ----------------------------------
          X10ERR  PROC    NEAR
                  MOV     AH,40H          ;㭪 뢮  ࠭
                  MOV     BX,01           ; ன⢠
                  MOV     CX,18           ;
                  LEA     DX,OPENMSG
                  INT     21H
                  MOV     ENDCDE,O1       ; 訡
                  RET
          X10ERR  ENDP
          
          CODESG  ENDS
                  END     BEGIN
          













          
          ᥬ  IBM PC. ணࠬ.                         131


          
          TITLE   GETPATH (COM)    ⥪騩 ⠫
          CODESG  SEGMENT PARA 'Code'
                  ASSUME  CS:CODESG,DS:CODESG,ES:CODESG
                  ORG     100H
          BEGIN:  JMP     SHORT MAIN
          ; -----------------------------------------------
          PATHNAM DB      65 DUP(' ')     ; ⥪饣  㯠
          ; -----------------------------------------------
          MAIN    PROC    NEAR
                  MOV     AH,19H          ;। ⥪騩 
                  INT     21H
                  ADD     AL,41H          ; .
                  MOV     DL,AL           ;    㪢: 0=A, 1=B ...
                  CAL     B10DISP         ;뤠  ᪮,
                  MOV     DL,':'
                  CAL     B10DISP         ;   稥,
                  MOV     DL,'\'
                  CAL     B10DISP         ;    
          
                  MOV     AH,47H          ; ⥪騩 ⠫
                  MOV     DL,00
                  LEA     SI,PATHNAM
                  INT     21H
          A10LOOP:
                  CMP     BYTE PTR [SI],0 ;   㯠
                  JE      A20             ;    - 
                  MOV     AL,[SI]         ;뤠  ࠭
                  MOV     DL,AL           ;     㯠
                  CALL    B10DISP         ;   ⭮
                  INC     SI
                  JMP     A10LOOP
          A20:    RET                     ;室  DOS
          MAIN    ENDP
          
          B10DISP PROC    NEAR
                  MOV     AH,02           ; DL -  
                  INT     21H             ;㭪 뢮  ࠭
                  RET
          B10DISP ENDP
          
          CODESG  ENDS
                  END     BEGIN
          










          
          ᥬ  IBM PC. ணࠬ.                         132


          
          TITLE   BIOREAD (COM)   ⥭ ᪮ ᥪ १ BIOS
          CODESG  SEGMENT PARA 'Code'
                  ASSUME  CS:CODESG,DS:CODESG,SS:CODESG,ES:CODESG
                  ORG     100H
          BEGIN   JMP     MAIN
          ; ---------------------------------------------------------
          RECDIN  DB      512 DUP(' ')    ; 
          ENDCDE  DB      00
          CURADR  DW      0304H           ;砫 (஦/ᥪ)
          ENDADR  DW      0501H           ; (஦/ᥪ)
          READMSG DB      '*** Read error ***$'
          SIDE    DB      00
          ; ---------------------------------------------------------
          MAIN    PROC    NEAR
                  MOV     AX,0600H        ;㭪 ப⪨ ࠭
          A20LOOP:
                  CALL    Q10SCR          ; ࠭
                  CALL    Q20CURS         ;⠭ 
                  CALL    C10ADDR         ;।   ᪥
                  MOV     CX,CURADR
                  MOV     DX,ENDADR
                  CMP     CX,DX           ;᫥ ᥪ?
                  JE      A90             ;    - 
                  CALL    F10READ         ; ᪮ 
                  CMP     ENDCDE,00       ;訡 ⥭?
                  JNZ     A90             ;    - 
                  CALL    G10DISP         ;뢥 ᥪ  ࠭
                  JMP     A20LOOP         ;
          A90     RET                     ; ணࠬ
          MAIN    ENDP
          ;               ᫨ ᫥騩   ᪥:
          ;               ----------------------------------
          C10ADDR PROC    NEAR
                  MOV     CX,CURADR       ;᫥ ஦/ᥪ
                  CMP     CL,10           ;᫥ ᥪ?
                  JNE     C90             ;    - 
                  CMP     SIDE,00         ;, ᫨ ஭ = 0
                  JE      C20
                  INC     CH              ;  ஦
          C20:
                  XOR     SIDE,01         ; ஭
                  MOV     CL,01           ;⠭ ᥪ = 1
                  MOV     CURADR,CX
          C90:    RET
          C10ADDR ENDP
          ;               ⥭ ᪮ ᥪ:
          ;               ------------------------
          F10READ PROC    NEAR
                  MOV     AL,01           ;᫮ ᥪ஢
                  MOV     AH,02           ;㭪 ⥭
                  LEA     BX,RECDIN       ; 
                  MOV     CX,CURADR       ;஦/ᥪ

          
          ᥬ  IBM PC. ணࠬ.                         133


                  MOV     DH,SIDE         ;஭
                  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 File: [NUL.MAP]: CON
          Libraries [.LIB]: <return>
          
           Start   Stop  Length  Name             Class
           00000H 00022H 0023H  CODESG            CODE  <-- ਬ砭: 1 ᥣ 
           00030H 00033H 0004H  DATASG            DATA
           00040H 000BFH 0080H  STACKSG           STACK
          
          Program entry point at 0000:0000


























          
          ᥬ  IBM PC. ணࠬ.                         156


          
                                          page    60,132
                                  TITLE   CALLMUL3 (EXE)  맮 ணࠬ
                                  ;                        㬭
                                          EXTRN   SUBMUL:FAR
                                          PUBLIC  QTY,PRICE
                                  ;-------------------------------------------------
          0000                    STACKSG         SEGMENT PARA STACK 'Stack'
          0000    40 [????]               DW      64 DUP(?)
          0080                    STACKSD         ENDS
                                  ;-------------------------------------------------
          0000                    DATASG  SEGMENT PARA PUBLIC '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    9A 0000 ---- E          CALL    SUBMUL    ;맢 ணࠬ
          000E    CB                      RET
          000F                    BEGIN   ENDP
          
          000F                    CODESG  ENDS
                                          END     BEGIN
          
          Segments and Groups:
                          N a m e         Size    Align   Combine Class
          CODESG . . . . . . . . . . . .  000F    PARA    PUBLIC  'CODE'
          DATASG . . . . . . . . . . . .  0004    PARA    PUBLIC  'DATA'
          STACKSG. . . . . . . . . . . .  0080    PARA    STACK   'STACK'
          
          Symbols:
                          N a m e         Type    Value   Attr
          BEGIN. . . . . . . . . . . . .  F PROC  0000    CODESG  Length=000F
          PRICE. . . . . . . . . . . . .  L WORD  0002    DATASG  Global
          QTY. . . . . . . . . . . . . .  L WORD  0000    DATASG  Global
          SUBMUL . . . . . . . . . . . .  L FAR   0000            External
          
          
                                          page    60,132
                                  TITLE   SUBMUL  ணࠬ  㬭
                                          EXTRN   QTY:WORD,PRICE:WORD
                                  ;-------------------------------------------------
          0000                    CODESG  SEGMENT PARA PUBLIC 'CODE'
          0000                    SUBMUL  PROC    FAR
                                          ASSUME  CS:CODESG
                                          PUBLIC  SUBMUL

          
          ᥬ  IBM PC. ணࠬ.                         157


          0000    A1 0000 E               MOV     AX,PRICE
          0003    8B 1E 0000 E            MOV     BX,QTY
          0007    F7 E3                   MUL     BX         ;ந  DX:AX
          0009    CB                      RET
          000A                    SUBMUL  ENDP
          000A                    CODESG  ENDS
                                          END     SUBMUL
          
          Segments and Groups:
                          N a m e         Size    Align   Combine Class
          CODESG . . . . . . . . . . . .  000A    PARA    PUBLIC  'CODE'
          
          Symbols:
                          N a m e         Type    Value   Attr
          PRICE. . . . . . . . . . . . .  V WORD  0000            External
          QTY. . . . . . . . . . . . . .  V WORD  0000            External
          SUBMUL . . . . . . . . . . . .  F PROC  0000    CODESG  Global  Length=000A
          
          
          LINK
          IBM Personal Computer Linker
          Version 2.30 (C) Copyright IBM Corp 1981, 1985
          Object Modules: B:CALLMUL3+B:SUBMUL3
          Run File: [B:CALLMUL3.EXE]: <return>
          List File: [NUL.MAP]: CON
          Libraries [.LIB]: <return>
          
           Start   Stop  Length  Name             Class
          
           00000H 00019H 001AH  CODESG            CODE
           00030H 00033H 0004H  DATASG            DATA
           00040H 000BFH 0080H  STACKSG           STACK
          
          PROGRAM entry point at 0000:0000




















          
          ᥬ  IBM PC. ணࠬ.                         158


          
                                          page    60,132
                                  TITLE   CALLMULL4 (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 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     A,DATASG
          0007  8E D8                     MOV     DS,AX
          0009  FF 36 0002 R              PUSH    PRICE
          000D  FF 36 0000 R              PUSH    QTY
          0011  9A 0000 ---- E            CALL    SUBMUL      ;맢 ணࠬ
          0016  CB                        RET
          0017                    BEGIN   ENDP
          0017                    CODESG  ENDS
                                          END     BEGIN
          
          Segments and Groups:
                          N a m e         Sise    Align   Combine Class
          CODESG . . . . . . . . . . . .  0017    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=0017
          PRICE. . . . . . . . . . . . .  L WORD  0002    DATASG
          QTY. . . . . . . . . . . . . .  L WORD  0000    DATASG
          SUBMUL . . . . . . . . . . . .  L FAR   0000            External
          
          
                                          page    60,132
                                  TITLE   SUBMUL  뢠 ணࠬ 㬭
          0000                    CODESG  SEGMENT PARA PUBLIC 'Code'
          0000                    SUBMUL  PROC    FAR
                                          ASSUME  CS:CODESG
                                          PUBLIC  SUMBUL
          0000    55                      PUSH    BP
          0001    8P EC                   MOV     BP,SP

          
          ᥬ  IBM PC. ணࠬ.                         159


          0003    8B 46 08                MOV     AX,[BP+8]     ;⮨
          0006    8B 5E 06                MOV     BX,[BP+6]     ;⢮
          0009    F7 E3                   MUL     BX            ;ந  DX:AX
          000B    5D                      POP     BP
          000F                    SUMBUL  ENDP
          000F                    CODESG  ENDS
                                          END
          
          Segments and Groups:
                          N a m e         Size    Align   Combine Class
          CODESG . . . . . . . . . . . .  000F    PARA    PUBLIC  'CODE'
          
          Symbols:
                          N a m e         Type    Value   Attr
          SUBMUL . . . . . . . . . . . .  F PROC  0000    CODESG  Global  Length=000F
          
          
          LINK
          IBM Personal Computer Linker
          Version 2.30 (C) Copyright IBM Corp 1981, 1985
          Object Modules: B:CALLMUL4+B:SUBMUL4
          Run File: [B:CALLMUL4.EXE]: <return>
          List File: [NUL.MAP]: CON
          Libraries [.LIB]: <return>
          
           Start   Stop  Length  Name             Class
          
           00000H 00019H 001AH  CODESG            CODE
           00030H 00033H 0004H  DATASG            DATA
           00040H 000BFH 0080H  STACKSG           STACK
          
          PROGRAM entry point at 0000:0000






















          
          ᥬ  IBM PC. ணࠬ.                         160


          
          LOAD"D:BASTEST.BAS
          
          LIST
          010     CLEAR ,32768!
          020     '  BLOAD
          030     '  DEFSEG
          040     '  窨 室  CALL
          050     '  맮 ASM-
          060     FOR N = 1 TO 5
          070     INPUT "Hours "; H
          080     INPUT "Rate "; R
          090     W = H * R
          100     PRINT "Wage = " W
          110     NEXT N
          120     END
          
          
          TITLE   LINKBAS ᥬୠ ணࠬ, 뢠  BASIC
          CODESG  SEGMENT PARA 'CODE'
                  ASSUME  CS:CODESG
          CLRSCRN PROC    FAR
                  PUSH    BP              ;࠭ BP
                  MOV     BP,SP           ; ᯨ᪠ ࠬ஢
                  MOV     AX,0600H        ;㭪 ப⪨
                  MOV     BH,07           ;  ᥣ
                  MOV     CX,0000         ;  ࠭
                  MOV     DX,184FH
                  INT     10H
                  POP     BP
                  RET                     ; ணࠬ
          CLRSCRN ENDP
          CODESG  ENDS
                  END




















          
          ᥬ  IBM PC. ணࠬ.                         161


          
          D>LINK
          
          IBM Personal Computer Linker
          Version 2.30 (C) Copyright IBM Corp. 1981, 1985
          
          Object Modules [.OBJ]: LINKBAS
          Run File [LINKBAS.EXE]: LINKBAS/HIGH
          List File [NUL.MAP]: CON
          Libraries [.LIB]:
          Warning: no stack segment
          
           Start  Stop   Length Name              Class
           00000H 00011H 00012H CODESG            CODE
          D>DEBUG BASIC.COM
          -R
          AX=0000  BX=0000  CX=0012  DX=0000  SP=FFFF  BP=0000  SI=0000  DI=0000
          DS=1410  ES=1410  SS=1410  CS=1410  IP=0100    NV  UP  EI  PL  NZ  NA  PO  NC
          1410:0100 E9E03E        JMP     3FE3
          -N D:LINKBAS.EXE
          -L
          -R
          AX=FFA3  BX=0000  CX=0012  DX=0000  SP=0000  BP=0000  SI=0000  DI=0000
          DS=1410  ES=1410  SS=9FE0  CS=9FE0  IP=0000    NV  UP  EI  PL  NZ  NA  PO  NC
          9FE0:0000  55
          -R SS
          SS 9FE0
          :1410
          -R CS
          CS 9FE0
          :1410
          -R IP
          IP 0000
          :0100
          -G
          Ok
          DEF SEG = &H9EF0
          Ok
          BSAVE "D:CLRSCREEN.MOD",0,&H12
          Ok
          SYSTEM
          Program terminated normally
          -Q
          D>BASIC
          IBM Personal Computer Basic
          Ver4sion D3.10 Copyright IBM Corp. 1981, 1985
          61310 Bytes free
          Ok
          LOAD"D:BASTEST.BAS
          Ok
          20      BLOAD "D:CLRSCREEN.MOD"
          30      DEF SEG = &H9FE0
          40      CLRSCRN = 0

          
          ᥬ  IBM PC. ணࠬ.                         162


          50      CALL CLRSCRN
          LIST
          
          10      CLEAR ,32768!
          20      BLOAD "D:CLRSCRN.MOD"
          30      DEF SEG = &H9FE0
          40      CLRSCRN = 0
          50      CALL CLRSCRN
          60      FOR N = 1 TO 5
          70      INPUT "HOURS"; H
          80      INPUT "rATE"; R
          90      W = H * R
          100     PRINT "WAGE = " W
          110     NEXT N
          120     END
          Ok
          
          
          
          program pascall ( input, output );
          
              procedure move_cursor( const row: integer;
                                     const col: integer ); extern;
              var
                  temp_row:       integer;
                  temp_col:       integer;
          
              begin
                  write( 'Enter cursor row: ' );
                  readln( temp_row );
          
                  write( 'Enter cursor column:' );
                  readln( temp_col );
          
                  move_cursor( temprow, temp_col );
                  write( 'New cursor location' );
                end.
          
          
          TITLE   MOVCUR  ணࠬ  ᥬ,
          ;               뢠  ணࠬ  ᪠
                  PUBLIC  MOVE_CURSOR
          ;----------------------------------------------------------
          ;    MOVE_CURSOR:       ⠭ 
          ;                        । ࠬࠬ
          ;    ࠬ: const row       ப  ⮫
          ;               const col        ⠭ 
          ;    頥 祭:     
          ;----------------------------------------------------------
          CODESEG SEGMENT PARA PUBLIC 'CODE'
          
          MOVE_CURSOR PROC FAR
                  ASSUME  CS:CODESEG

          
          ᥬ  IBM PC. ணࠬ.                         163


          ROWWPAR EQU     8               ;ࠬ "ப"
          COLPAR  EQU     6               ;ࠬ "⮫"
          
                  PUSH    BP              ;࠭ ॣ BP
                  MOV     BP,SP           ;⠭ BP  ࠬ
          
                  MOV     SI,[BP+ROWPAR]  ;SI 㪠뢠  ப
                  MOV     DH,[SI]         ; ⮫  DL
          
                  MOV     AH,02           ;㭪 ⠭ 
                  SUB     BH,BH           ;࠭ #0
                  INT     10H
          
                  POP     BP              ;
                  RET     4               ;   뢠 ணࠬ
          MOVE_CURSOR       ENDP
          CODESEG ENDS
                  END
          
          
          
          
          砫                  ணࠬ
          
          00000    ஢ 뢠 (. . 23)
          
          00400    裡  ﭭ  (ROM)
          
          00500    裡  樮 ⥬ (DOS)
          
          00600   IBMBIO.COM
                     ⠫
                    ᪮ 
                     ࠬ஢ ᪮/⠡ ।
                      䠩 (FAT,    ᪮)
          
          XXXX0   ⭠    COMMAND.COM
          
          XXXX0      ணࠬ (⨯ COM  EXE)
          
          XXXX0   짮⥫᪨ ⥪  COM-ணࠬ (256 ⮢)
          
          XXXX0   ࠭⭠    COMMAND.COM
                    (뢠  訥  ).
          
          
          
          TITLE   EXDOS   (EXE) 㭪 DOS 4BH  믮 DIR
          CSEG    GMENT   PARA 'Code'
                  ASSUME  CS:CSEG,DS:CSEG,ES:CSEG
          BEGIN:  JMP     SHORT MAIN
          ;----------------------------------------------------------
          PARAREA DW      ?               ; ப 맮

          
          ᥬ  IBM PC. ணࠬ.                         164


                  DW      OFFSET DIRCOM   ;⥫
                                          ;    ப
                  DW      CSEG
                  DW      OFFSET FCB1     ;⥫  FCB2
                  DW      CSEG
          
          DIRCOM  DB      17,'/C DIR D:',13,0
          FCB1    DB      16 DUP(0)
          FCB2    DB      16 DUP(0)
          PROGNAM DB      'D:COMMAND.COM',0
          ; ---------------------------------------------------------
          MAIN    PROC    FAR
                  MOV     AH,4AH          ; 64K 
                  MOV     BH,100H         ;   ࠣ
                  INT     21H
                  JC      E10ERR          ; ?
          
                  MOV     DI,2CH          ; ᥣ 
                  MOV     AX,[DI]         ;  ப 맮
                  LEA     SI,PARAREA      ;     
                  MOV     [SI],AX         ;  1 ᫮  ࠬ஢
                  MOV     AX,CS           ;㧨  DS  ES
                  MOV     DS,AX           ;   CSEG
                  MOV     ES,AX
          
                  MOV     AH,4BH          ;㭪 㧪
                  MOV     AL,00           ;   믮
                  LEA     BX,PARAREA      ;  COMMAND.COM
                  LEA     DX,PROGNAM
                  INT     21H             ;맢 DOS
                  JC      E20ERR          ;訡 믮?
                  MOV     AL,00           ;  訡
                  JMP     X10XIT
          0ERR:
                  MOV     AL,01           ; 訡 1
                  JMP     X10XIT
          0ERR:
                  MOV     AL,02           ; 訡 2
                  JMP     X10XIT
          0XIT:
                  MOV     AH,4CH          ;㭪 襭
                  INT     21H             ;맢 DOS
          IN      ENDP
          EG      ENDS
                  END
          
          
          
                             㭪 뢠
          (.)                 (.)
          
            0-3            0    
            4-7            1  蠣 ० (஢  DEBUG)

          
          ᥬ  IBM PC. ணࠬ.                         165


            8-B            2  ᪨㥬 뢠 (NMI)
            C-F            3  窠 ⠭  ⮪  ( DEBUG)
           10-13           4  ९ ॣ஢ 
           14-17           5   ࠭
           18-1F              १ࢨ஢
           20-23           8    ⠩
           24-27           9    
           28-37     A,B,C,D  ᯮ  AT
           38-3B           E    ᪮
           3C-3F           F  㦨 ਭ
           40-43          10  ࠢ ࠭ (. . 8,9,10)
           44-47          11   ᯨ᪠ 㤮 (. . 9)
           48-4B          12   ࠧ 䨧᪮  (. . 2)
           4C-4F          13  ࠢ ᪮ -뢮 (. 18)
           50-53          14  ࠢ 㭨樮 -뢮
           54-57          15  ࠢ 䮭  ᯥ.㭪樨  AT
           58-5B          16  ࠢ    (. 9)
           5C-5F          17  뢮  ਭ (. 19)
           60-63          18  饭  BASIC   (ROM)
           64-67          19  १㧪 ⥬
           68-6B          1A    ⠭ ६  
           6C-6F          1B  祭 ࠢ  뢠  
           70-73          1C  祭 ࠢ  뢠  ⠩
           74-77          1D   ⠡ ࠬ஢ 樠樨 ᯫ
           78-7B          1E   ⠡ ࠬ஢ ᪮
           7C-7F          1F   ⠡ ᪨ ᨬ
           80-83          20  DOS ଠ쭮 襭 ணࠬ
           84-87          21  DOS 饭  㭪 DOS
           88-8B          22  DOS  ணࠬ ࠡ⪨ 襭
           8C-8F          23  DOS  ணࠬ ॠ樨  Ctrl+Break
           90-93          24  DOS  ணࠬ ॠ樨  ⠫ 訡
           94-97          25  DOS ᮫⭮ ⥭ ᥪ஢ ᪠
           98-9B          26  DOS ᮫⭠   ᥪ ᪠
           9C-9F          27  DOS 襭 ணࠬ, ⠢饥  १⮬
           A0-FF       28-3F  DOS 樨 DOS
          100-1FF      40-7F  १ࢨ஢
          200-217      80-85  १ࢨ஢  BASIC
          218-3C3      86-F0  ᯮ BASIC-஬
          3C4-3FF      F1-FF  १ࢨ஢
          
          ਬ砭: 뢠 00-1F  BIOS, 20-FF  DOS  BASIC
          
          
          
          TITLE   RESIDENT (COM) ⭠ ணࠬ  ⪨
          ;                      ࠭  ⠭ 梥  ⨨
          ;                      Alt+Left Shift
          ;----------------------------------------------------------
          
          INTTAB  SEGMENT AT 0H         ; ஢ 뢠:
                  ORG     9H*4          ;    Int 9H,
          KBADDR  LABEL   DWORD         ;   ᫮
          INTTAB  ENDS

          
          ᥬ  IBM PC. ணࠬ.                         166


          ;----------------------------------------------------------
          
          ROMAREA SEGMENT AT 400H       ; ࠬ஢ BIOS:
                  ORG     17H           ;   䫠 ,
          KBFLAG  DB      ?             ;  ﭨ Alt + Shift
          ROMAREA ENDS
          ;----------------------------------------------------------
          
          CSEG    SEGMENT PARA          ; 
                  ASSUME  CS:CS
                  ORG     100H
          BEGIN:  JMP     INITZ         ;믮 ⮫쪮  ࠧ
          
          KBSAVE  DD      ?             ;  INT 9 BIOS
          ;               ⪠ ࠭  ⠭ 梥⮢:
          ;               ---------------------------------
          COLORS  PROC    NEAR          ;楤 믮
                  PUSH    AX            ;   ⨨ Alt+Left Shift
                  PUSH    BX
                  PUSH    CX            ;࠭ ॣ
                  PUSH    DX
                  PUSH    SI
                  PUSH    DI
                  PUSH    DS
                  PUSH    ES
                  PUSHF
                  CALL    KBSAV         ;ࠡ 뢠
                  ASSUME  DS:ROMAREA
                  MOV     AX,ROMAREA    ;⠭ DS 
                  MOV     DS,AX         ;  㯠  ﭨ
                  MOV     AL,KB  AG     ;  Alt+Left Shift
                  CMP     AL,00001010B  ;Alt+Left Shift ?
                  JNE     EXIT          ;   - 
                  MOV     AX,0600H      ;㭪 ப⪨
                  MOV     BH,61H        ;⠭ 梥
                  MOV     CX,00
                  MOV     DX,18 FH
                  INT     10H
          EXIT:
                  POP     ES            ;⠭ ॣ
                  POP     DS
                  POP     DI
                  POP     SI
                  POP     DX
                  POP     CX
                  POP     BX
                  POP     AX
                  IRET                  ;
          COLORS  ENDP
          
          ;               ணࠬ 樠樨:
          ;               --------------------------
          INITZE  PROC    NEAR            ;믮 ⮫쪮  ࠧ

          
          ᥬ  IBM PC. ணࠬ.                         167


                  ASSUME  DS:INTTAB
                  PUSH    DS              ;ᯥ   DOS
                  MOV     AX,INTTAB       ;⠭ ᥣ 
                  MOV     DS,AX
                  CLI                     ; 뢠
                                          ;  ࠡ稪:
                  MOV     AX,WORD PTR KBADDR      ;࠭ 
                  MOV     WORD PTR KBSAVE,AX      ;  BIOS
                  MOV     AX,WORD PTR BADDR+2
                  MOV     WORD PTR KBSAVE+2,AX
                  MOV     WORD PTR KBADDR,OFFSET COLORS ;
                  MOV     WORD PTR KBADDR+2,CS          ;   BIOS
                  STI                      ; 뢠
                  MOV     DX,OFFSET INITZE ; ணࠬ
                  INT     27H              ;  
          INITZE  ENDP                     ;  १⮬
          
          CSEG    ENDS
                  END     BEGIN
          
          
          
          TITLE   SOUND   (COM) 楤  樨 㪠
          SOUNSG  SEGMENT PARA 'Code'
                  ASSUME  CS:SOUNG,DS:SOUNG,SS:SOUNG
                  ORG     100H
          BEGIN:  JMP     SHORT MAIN
          ; -------------------------------------------------------
          DURTION DW      1000            ;६ 砭
          TONE    DW      256H            ; () 㪠
          ; -------------------------------------------------------
          MAIN    PROC    NEAR
                  IN      AL,61H          ;  ࠭
                  PUSH    AX              ;   
                  CLI                     ; 뢠
                  CALL    B10SPKR         ;ந 
                  POP     AX              ;⠭ 祭
                  OUT     61H,AL          ;  
                  STI                     ; 뢠
                  RET
          MAIN    ENDP
          
          B10SPKR PROC    NEAR
          B20:    MOV     DX,DURTION      ;⠭ ६ 砭
          B30:
                  AND     AL,11111100B    ;  0  1
                  OUT     61H,AL          ;।  
                  MOV     CX,TONE         ;⠭ 
          B40:
                  LOOP    B40             ;প ६
                  OR      AL,00000010B    ;⠭  1
                  OUT     61H,AL          ;।  
                  MOV     CX,TONE         ;⠭ 

          
          ᥬ  IBM PC. ணࠬ.                         168


          B50:
                  LOOP    B50             ;প ६
                  DEC     DX              ; ६ 砭
                  JNZ     B30             ;த?
                  SHL     DURTION,1       ;   - 㢥 ६,
                  SHR     TONE,1          ;  ᮪ 
                  JNZ     B20             ;㫥 ?
                  RET                     ;   - 
          B10SPKR ENDP
          
          SOUNSG  ENDS
                  END     BEGIN










































          
