汇编源码系列之cobload

这个都是过去DOS时代的汇编源码,虽然已经过去了,但是对于学习汇编还是有帮助的,汇编语言只是程序员一门基础语言,大多人掌握即可,不一定要深入研究.......

;COBLOAD.ASM   07/09/84 - DKeels
;----------------------------------------------------------------------------
;This program provides COBOL programs with access to the program loader (LOAD)
;by passing parameters via the system parameter area (SYSPARM).
;
;Inputs:
;01 COBLOAD-PARMS
; 05 FILE-SPEC-1  PIC X(80).  Contains complete drive, path and filename.
; 05 PARAMETER-1  PIC X(80).  Contains command line parameters.
; 05 FILE-SPEC-2  PIC X(80).  Same as 1.
; 05 PARAMETER-2  PIC X(80).  Same as 1.
;
;Outputs:
; None.
;----------------------------------------------------------------------------
CL_CODE_SEG  SEGMENT PUBLIC 'CODE'
    ASSUME  CS:CL_CODE_SEG,DS:CL_CODE_SEG,ES:CL_CODE_SEG
STACK_PARM  STRUC
PUSHED_SI  DW  ?
PUSHED_DI  DW  ?
PUSHED_DS  DW  ?
PUSHED_ES  DW  ?
PUSHED_BP  DW  ?
RETURN_IP  DW  ?
RETURN_CS  DW  ?
PARM1_OFFSET  DW  ?
PARM1_DS  DW  ?
STACK_PARM  ENDS
    PUBLIC  COBLOAD    ;make known to COBOL at link time
COBLOAD    PROC  FAR
  ;prologue
    PUSH  BP
    PUSH  ES
    PUSH  DS
    PUSH  DI
    PUSH  SI
    MOV  BP,SP    ;set base for stack parm structure
  ;address caller's parameter block
    MOV  AX,[BP].PARM1_DS
    MOV  DS,AX      ;DS -> cobol data seg
    MOV  SI,[BP].PARM1_OFFSET  ;SI -> offset to parm block
  ;address load's parameter block in sysparm
    MOV  DX,'dk'    ;verification switch
    INT  77H    ;get seg addr in AX
    MOV  ES,AX    ;ES -> sysparm
    MOV  DI,0    ;DI -> offset to LOAD parms
  ;move cobol's parm block to load's parm block (in sysparm)
    CLD        ;set direction for moves
    MOV  CX,80      ;length of move
    REP  MOVSB      ;move file spec 1
ASCIIZ1:  MOV  BYTE PTR ES:[DI],0  ;make asciiz string
    DEC  DI
    MOV  AL,BYTE PTR ES:[DI]
    CMP  AL,' '      ;nullify trailing spaces
    JE  ASCIIZ1
    MOV  BX,81      ;point to parm length byte
    MOV  BYTE PTR ES:[BX],82  ;init length of parm, + 2
    MOV  DI,82      ;point to 1st parm position
    MOV  CX,80      ;length of move
    REP  MOVSB      ;move parm
ADD_CR_1:  MOV  BYTE PTR ES:[DI],13  ;add carriage return
    DEC  BYTE PTR ES:[BX]  ;sub 1 from length of parm
    DEC  DI
    MOV  AL,BYTE PTR ES:[DI]
    CMP  AL,' '      ;put cr in trailing spaces
    JE  ADD_CR_1
    MOV  DI,163
    MOV  CX,80      ;length of move
    REP  MOVSB      ;move file spec 2
ASCIIZ2:  MOV  BYTE PTR ES:[DI],0  ;make asciiz string
    DEC  DI
    MOV  AL,BYTE PTR ES:[DI]
    CMP  AL,' '      ;nullify trailing spaces
    JE  ASCIIZ2
    MOV  BX,244      ;point to parm length byte
    MOV  BYTE PTR ES:[BX],82  ;init length of parm, + 2
    MOV  DI,245      ;point to 1st parm position
    MOV  CX,80      ;length of move
    REP  MOVSB      ;move parm
ADD_CR_2:  MOV  BYTE PTR ES:[DI],13  ;add carriage return
    DEC  BYTE PTR ES:[BX]  ;sub 1 from length of parm
    DEC  DI
    MOV  AL,BYTE PTR ES:[DI]
    CMP  AL,' '      ;put cr in trailing spaces
    JE  ADD_CR_2
  ;return to caller
    POP  SI
    POP  DI
    POP  DS
    POP  ES
    POP  BP
    RET  4
COBLOAD    ENDP
CL_CODE_SEG  ENDS
    END

时间: 2024-08-07 11:06:04

汇编源码系列之cobload的相关文章

汇编源码系列之clear

这个都是过去DOS时代的汇编源码,虽然已经过去了,但是对于学习汇编还是有帮助的,汇编语言只是程序员一门基础语言,大多人掌握即可,不一定要深入研究....... name clear page 55,132 title 'CLEAR --- control PC display';; CLEAR Utility to clear display; and set character attributes;; Ray Duncan, Uncopyright (u) August 1983; This

汇编源码系列之clock

这个都是过去DOS时代的汇编源码,虽然已经过去了,但是对于学习汇编还是有帮助的,汇编语言只是程序员一门基础语言,大多人掌握即可,不一定要深入研究....... CGROUP GROUP VECTOR,CODESEGVECTOR SEGMENT AT 0H DB 6CH DUP(?) ;FILLERTIME_LO DW ? ;DOS TIMETIME_HI DW ? ;DOS TIMEVEC_IP DW ;CLOCK UPDATE VECTOR IPVEC_CS DW ;CLOCK UPDATE

汇编源码系列之charop

这个都是过去DOS时代的汇编源码,虽然已经过去了,但是对于学习汇编还是有帮助的,汇编语言只是程序员一门基础语言,大多人掌握即可,不一定要深入研究....... title MSDOS 2.00 Function Library for Lattice Csubttl -;;;;FUNCTION: Sets and returns switch char-;; acter and device availability.;;;;;;CALL:;;;; ret= _charop(al,dl);; i

汇编源码系列之clean

这个都是过去DOS时代的汇编源码,虽然已经过去了,但是对于学习汇编还是有帮助的,汇编语言只是程序员一门基础语言,大多人掌握即可,不一定要深入研究....... name clean page 55,132 title 'CLEAN --- Filter text file';; CLEAN --- a utility to filter text files.; This program removes all control codes except; for line feeds, carr

汇编源码系列之cleanf

这个都是过去DOS时代的汇编源码,虽然已经过去了,但是对于学习汇编还是有帮助的,汇编语言只是程序员一门基础语言,大多人掌握即可,不一定要深入研究....... name cleanf page 55,132 title 'CLEANF - Filter text file';; CLEANF - a DOS 2.0 filter for word processing document files.;; CLEAN.ASM Originally written by Ray Duncan; Co

汇编源码系列之burnout

这个都是过去DOS时代的汇编源码,虽然已经过去了,但是对于学习汇编还是有帮助的,汇编语言只是程序员一门基础语言,大多人掌握即可,不一定要深入研究....... COMMENT * Demo (and semi-useful) program to read/set burnout device parameters. Usage: burnout [ticks] [C+-] [V+-] [H+-] Parameters can be separated by almost anything. W

汇编源码系列之calc

这个都是过去DOS时代的汇编源码,虽然已经过去了,但是对于学习汇编还是有帮助的,汇编语言只是程序员一门基础语言,大多人掌握即可,不一定要深入研究....... PAGE ,132 TITLE CALCCGROUP GROUP CODESEGCODESEG SEGMENT PARA PUBLIC 'CODE' ASSUME CS:CGROUP,DS:CGROUP,ES:CGROUP PUBLIC CALC ORG 100HCALC PROC FAR JMP START;--------------

汇编源码系列之char

这个都是过去DOS时代的汇编源码,虽然已经过去了,但是对于学习汇编还是有帮助的,汇编语言只是程序员一门基础语言,大多人掌握即可,不一定要深入研究....... ctable segment para public 'DATA db 9 dup(' ') db 9,10,' ',12,13 db 13 dup(' ') db 27 db 4 dup(' ') db ' !"#$%&',39,'()*+,-./0123456789:;<=>?@' db 'ABCDEFGHIJKL

汇编源码系列之brk

这个都是过去DOS时代的汇编源码,虽然已经过去了,但是对于学习汇编还是有帮助的,汇编语言只是程序员一门基础语言,大多人掌握即可,不一定要深入研究....... PGROUP Group PROGDGROUP Group DATADATA Segment Public 'DATA'public brkflagbrkflag DW 0DATA endsPROG Segment Para Public 'PROG'public TrapBreaassume cs:PGROUP,DS:DGROUPTra