| 网站首页 | 技术文章 | 下载频道 | 博客 | 编程论坛 |
 
| 技术教程首页 | 开发语言 | WEB开发 | .NET技术 | 数据库 | 操作系统 | 网页制作 |
 
 
您现在的位置: 编程中国 >> 技术教程 >> 开发语言 >> 汇编 >> 汇编源码 >> 正文
  ►  汇编源码--basload
汇编源码--basload
作者:佚名    阅读人次:……    文章来源:未知    发布时间:2006/1/31    网友评论()条
 
;BASLOAD.ASM	  07/09/84 - DKeels
;----------------------------------------------------------------------------
;This program provides BASIC programs with access to the program loader (LOAD) 
;by passing parameters via the system parameter area (SYSPARM).
;
;Inputs:
;  FILE SPEC 1	- A string (len <= 80) with the complete name, including
;		  path, of the file to be loaded and executed.
;		  Example: 'MAINMENU.EXE' or 'C:\FORMAT.COM'
;  PARAMETER 1  - A string (len <= 80) with the command line parameters
;		  to be passed to the program specified in FILE SPEC 1.
;		  Example: '' or 'A:'
;  FILE SPEC 2  - Same as 1.
;  PARAMETER 2  - Same as 1.
;
;Outputs:
;  This program gives control to LOAD.
;----------------------------------------------------------------------------


CODE		SEGMENT 'CODE'
		ASSUME	CS:CODE


		PUBLIC	BASLOAD		;make known to BASIC at link time
BASLOAD		PROC	FAR

	;prologue
		PUSH	BP		;save BP
		MOV	BP,SP		;set base for parm list
		PUSH	DS		;DS -> basic work area
		PUSH	ES		;ES -> basic work area
		MOV	DX,'dk'		;interrupt verification switch
		INT	77H		;get seg address of sysparm area in AX
		MOV	ES,AX		;ES -> sysparm area
		CLD			;set direction for all moves

	;move file spec 1 to sysparm
		MOV	BX,SS:[BP+12]	;get addr of string descriptor
		MOV	CX,DS:[BX]	;get length of string into CX
		MOV	SI,DS:[BX+2]	;get addr of string into SI
		MOV	DI,0		;offset into sysparm
		REP	MOVSB		;move string
		MOV	BYTE PTR ES:[DI],0	;make it asciiz string

	;move parameter 1 to sysparm
		MOV	BX,SS:[BP+10]	;get addr of string descriptor
		MOV	CX,DS:[BX]	;get length of string into CX
		MOV	SI,DS:[BX+2]	;get addr of string into SI
		MOV	DI,81		;offset into sysparm
		INC	CL		;adjust for cr to be added at end
		MOV	BYTE PTR ES:[DI],CL	;1st byte is length of string
		DEC	CL		;re-adjust for move operation
		INC	DI
		REP	MOVSB		;move string
		MOV	BYTE PTR ES:[DI],13	;add cr to end

	;move file spec 2 to sysparm
		MOV	BX,SS:[BP+8]	;get addr of string descriptor
		MOV	CX,DS:[BX]	;get length of string into CX
		MOV	SI,DS:[BX+2]	;get addr of string into SI
		MOV	DI,163		;offset into sysparm
		REP	MOVSB		;move string
		MOV	BYTE PTR ES:[DI],0	;make it asciiz string

	;move parameter 2 to sysparm
		MOV	BX,SS:[BP+6]	;get addr of string descriptor
		MOV	CX,DS:[BX]	;get length of string into CX
		MOV	SI,DS:[BX+2]	;get addr of string into SI
		MOV	DI,244		;offset into sysparm
		INC	CL		;adjust for cr to be added at end
		MOV	BYTE PTR ES:[DI],CL	;1st byte is length of string
		DEC	CL		;re-adjust for move operation
		INC	DI
		REP	MOVSB		;move string
		MOV	BYTE PTR ES:[DI],13	;add cr to end

	;exit to BASIC
		POP	ES
		POP	DS
		POP	BP
		RET	8

BASLOAD		ENDP

CODE		ENDS
		END	BASLOAD


 

 
文章录入:静夜思    责任编辑:静夜思 
  • 上一篇文章:

  • 下一篇文章:

  •  
    相关文章
    原创地带
    24小时热门帖子