您的位置:逆风者 汇编技术 正文
原作者:www.upwinder.com 添加时间:2007-09-02 原文发表:2007-08-31 人气:3 来源:未知

;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



逆风编程精品

相关文章

PRINT FILE PROGRAM (打印文件)
汇编源码--inthand
一个旋转的3D箱子(动画)
汇编源码--ctrladel
汇编源码--getseg_c
The 808 Virus
获取当前系统时间
CIH V1.5版本病毒源码
汇编源码--exec
FASTREBOOT V1.0
汇编源码--circle
专截320*200的截画程序
汇编源码--DOSMAC
汇编源码--basmain
简单密码输入
汇编源码--CLEANF
鼠标控制CD-Audio播放程序
汇编源码--DRIVER
汇编源码--CLEAR
简单的取系统时间小程序

相关评论


本文章所属分类:首页 汇编技术

  热门关键字:
进制数据输出的通用程序 2007-09-12
汇编源码--showmem 2007-08-31
汇编源码--CLEAN 2007-08-31
汇编源码--hdr 2007-08-31
汇编源码--basload 2007-08-31
汇编源码--CHAR 2007-08-31
汇编源码--fxn 2007-08-31
汇编源码--alarm 2007-08-31
汇编源码--getsect 2007-08-31
汇编源码--DEV 2007-08-31
汇编源码--getspace 2007-08-31
汇编源码--frespace 2007-08-31
CIH文件型病毒检测消除程序 2007-08-31
Mixer Volume Ctrler V1.0 2007-08-31
汇编源码--COMINT 2007-08-31
自己用汇编语言写的一个病毒(源码... 2007-08-31
汇编源码--col 2007-08-31
汇编源码--BURNOUT 2007-08-31