亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? crt0.asm

?? Dos6.0
?? ASM
字號:
	page	,132
	title	crt0 - C start up routine
;***
;crt0.asm - C start up routine
;
;	Copyright (c) 1985-1988, Microsoft Corporation.  All rights reserved.
;
;Purpose:
;	How startup works in a few words -
;
;	The startup and termination is performed by a few modules
;
;		crt0.asm	DOS 2.x/3.x specific init/term
;		crt0msg.asm	DOS 2.x/3.x error messages
;		(winstart.asm)	Windows specific init/term (not included)
;
;		crt0dat.asm	remainder of shared DOS 3.x init/term
;
;	*************  IMPORTANT  *****************************************
;
;	The "DOSSEG" directive in this module must not be removed or else
;	the user will have to link with the "/DOSSEG" linker switch in
;	order to get proper segment ordering.
;
;	See the C documentation for more information about the /DOSSEG switch.
;
;	All assembler modules must be assembled with the /Mx switch, i.e.
;
;		masm -Mx crt0,;
;
;*******************************************************************************

;*******************************;*
	DOSSEG			;* specifies DOS SEGment ordering *
;*******************************;*

?DF=	1			; this is special for c startup

.xlist
include	version.inc
include	cmacros.inc
include	msdos.inc
include brkctl.inc

EI_QB = -1			;[12] interpreter version
EI_EB = 0			;[12] not EB
OM_DOS5 = 0			;[12] not an OS/2 version
include stack2.inc		;[12] STACK_SIZE constant

.list

CondEnd MACRO	entrypoint	;[12] generate END _astart
	END	entrypoint	;[12]
	ENDM			;[12]

assumesdata	macro	seg	;;[12] Newer versions of CMACROS reject
assumes seg,DGROUP		;;[12]
endm				;;[12]



	page
;===========================================================================
;
;	Segment definitions
;
;	The segment order is essentially the same as in XENIX.
;	This module is edited after assembly to contain a dosseg comment
;	record for the linker.
;
;===========================================================================

createSeg _TEXT, code,	word,	public, CODE,	<>
createSeg C_ETEXT,etext, word,	public, ENDCODE,<>

createSeg _DATA, data,	word,	public, DATA,	DGROUP
createSeg STACK, stack,	para,	stack,	STACK,	DGROUP

defGrp	DGROUP			; define DGROUP

codeOFFSET equ	offset _TEXT:
dataOFFSET equ	offset DGROUP:

page

public	__acrtused 		; trick to force in startup
	__acrtused = 9876h	; funny value not easily matched in SYMDEB

extrn	__acrtmsg:abs 		; trick to pull in startup messages


sBegin	stack
assumesdata	ds		;[12]
	db	STACK_SIZE dup (?) ;[12] default stack size
sEnd

page

externP	main			; C main program

externP	exit			; exit ( code )

extrn	__exit:far 		; _exit ( code) (cmacros name conflict)

extrn	__amsg_exit:FAR 	;[12]
extrn	B$terminate:FAR 	;[12]
extrn	B$Init:FAR		;[12]



sBegin	data

extrn	_edata:byte 		; end of data (start of bss)
extrn	_end:byte 		; end of bss (start of stack)

externW	_psp			; psp:0 (paragraph #)


;	these are used by DOS C memory management (not used in Windows)


externW _asizds 		;[12] moved these to CDATA.INC
externW _atopsp 		;[12]
externW _aexit_rtn		;[12]
externW _abrktb 		;[12]
externW _abrktbe		;[12]
externW _abrkp			;[12]

extrn	b$nmalloc_start:word	;[12] start of BASIC near malloc buffer
externW _aenvseg		;[12]
externW _acmdseg		;[12]
externW _acmdln 		;[12]


sEnd

	page


externP	_cinit			; run-time initializers


sBegin	code
assumes	cs,code

assumes	ds,nothing

page
;***
;_astart - start of all C programs
;
;Purpose:
;	Startup routine to initialize C run-time environment
;
;Entry:
;
;Exit:
;	Exits to DOS via exit().
;
;Uses:
;
;Exceptions:
;
;*******************************************************************************

labelNP	<PUBLIC,_astart> 	; start address of all "C" programs


;	check MS-DOS version for 2.0 or later

	callos	VERSION		; AX must be preserved until later
	cmp	al,2		; check for version 2 or later
	jae	setup		;   yes - continue with setup
	int	20h		; DOS 1.0 exit program

setup:

	mov	di,DGROUP
	mov	si,ds:[DOS_MAXPARA] ; get max. paragraph

	sub	si,di		; si = # para in data area
	cmp	si,1000h	; if more than 64K
	jb	setSP

	mov	si,1000H	; use full 64K (-16)

setSP:

	cli			; turn off interrupts
	mov	ss,di		; SS = DGROUP
 	add	sp,dataoffset _end-2 ; 2 for _asizds limit
	sti			; turn interrupts back on
	jnc	SPok

	assumes ss,DGROUP	;[12] assume it points somewhere
StackOverflow:			;[12]
	xor	ax,ax		;[12] stack overflow error message (0)
	mov	SS:[_aexit_rtn],codeoffset B$terminate ;[12] jmp to INT 21, fn 4C
	jmp	short jmp_amsg_exit ;[12] print message and exit

SPok:
assumesdata	ss		;[12]

	and	sp,not 1	; make even (if not)
	mov	[_atopsp],sp	; save top of stack


	mov	ax,si		; si = # paragraphs
	mov	cl,4
	shl	ax,cl
	dec	ax
	mov	[_asizds],ax	; save DS size - 1 (in bytes)


;	release extra space to DOS

	add	si,di		; si = DGROUP + # para in DGROUP
	mov	ds:[DOS_MAXPARA],si ; fix psp:2
	mov	bx,es		; bx = PSP base
	sub	bx,si		; bx = - # para used
	neg	bx
	callos	setmem		; set memory block size
	mov	[_psp],ds	; save psp:0

	MOV	AX,DS:[2CH]		;[12] AX = Handle of Environ Segment
	MOV	SS:[_aenvseg],AX	;[12]
	mov	SS:[_acmdseg],DS	;[12] Handle of Command Line Segment
	mov	SS:[_acmdln],081H	;[12] Offset of Command Line String

;	zero data areas (_BSS and c_common)

	push	ss
	pop	es
assumesdata	es		;[12]

	cld			; set direction flag (up)
	mov	di,dataOFFSET _edata ; beginning of bss area
	mov	cx,dataOFFSET _end ; end of bss area
	sub	cx,di
	xor	ax,ax
	rep	stosb		; zero bss

;	C segmentation conventions set up here	(DS=SS and CLD)

	push	ss		; set up initial DS=ES=SS, CLD
	pop	ds
assumesdata	ds		;[12]

;[12]	 Initialize C near heap to BASIC near malloc buffer

	mov [_aexit_rtn],codeoffset _exit ;[12] call high-level exit()
	mov	ax,[b$nmalloc_start]	;[12] get top of nmalloc buffer
	mov	_abrktb.sz,ax		;[12] set near brk end of heap marker
	call	B$Init		;[12]Do necessary BASIC init Prior to XI
				;[12] processing.


;	do necessary initialization BEFORE command line processing!

	call	_cinit		; shared by DOS and Windows

	push	ss
	pop	ds		; ds = DGROUP

	push	ss		;[12]
	pop	es		;[12]set es=ds
assumesdata	ds		;[12]


;	call main and exit

	xor	bp,bp		; mark top stack frame for SYMDEB


	call	main		; main ( argc , argv , envp )

; use whatever is in ax after returning here from the main program

	push	ax
	call	exit		; exit (AX)
				;   _exit will call terminators

page

;***
;_amsg_exit, _cintDIV - Fast exit fatal errors
;
;Purpose:
;	Exit the program with error code of 255 and appropriate error
;	message.  cintDIV is used for integer divide by zero, amsg_exit
;	is for other run time errors.
;
;Entry:
;	AX	= error message number (amsg_exit only).
;
;Exit:
;	calls exit() [cintDIV] or indirect through _aexit_rtn [amg_exit].
;
;Uses:
;
;Exceptions:
;
;*******************************************************************************

labelNP	<PUBLIC,_cintDIV>

	assumes ds,nothing
	assumesdata	ss		;[12]

;	_cintDIV establishes ds = DGROUP


	mov	ax,3		; Integer divide by zero interrupt
	mov	[_aexit_rtn],codeoffset _exit ; call high-level exit()
				; to cause file buffer flushing

jmp_amsg_exit:			;[12]
	jmp	__amsg_exit	;[12] branch to __amsg_exit in BASIC code


sEnd

	CondEnd _astart 		;[12] start address if NOT FO_RTM

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品三级在线看| 51久久夜色精品国产麻豆| 丝袜亚洲另类欧美综合| 亚洲女与黑人做爰| 亚洲人成亚洲人成在线观看图片| 一区在线观看视频| 亚洲丝袜自拍清纯另类| 亚洲天堂中文字幕| 午夜精品久久久久久久99水蜜桃| 亚洲最大的成人av| 日韩黄色在线观看| 精品在线一区二区三区| 国产精品 欧美精品| 粉嫩aⅴ一区二区三区四区 | 亚洲精品视频自拍| 亚洲综合激情另类小说区| 亚洲综合色成人| 日本成人在线不卡视频| 国产乱人伦偷精品视频不卡| 成人黄色大片在线观看| 色综合久久久久综合体桃花网| 91黄色免费网站| 欧美一二区视频| 中文字幕精品在线不卡| 一二三四社区欧美黄| 秋霞午夜av一区二区三区| 极品美女销魂一区二区三区免费| 成人一区二区视频| 欧美日韩一级大片网址| 欧美哺乳videos| 亚洲人午夜精品天堂一二香蕉| 日韩成人免费电影| 91在线视频观看| 欧美一区二区二区| 1000部国产精品成人观看| 天堂成人国产精品一区| 国产成人99久久亚洲综合精品| 日本韩国欧美一区二区三区| 精品国产亚洲在线| 亚洲一级片在线观看| 狠狠色丁香久久婷婷综| 欧美亚洲综合网| 国产欧美一区二区三区网站 | 欧洲人成人精品| 日韩美一区二区三区| 久久国产麻豆精品| 粗大黑人巨茎大战欧美成人| 欧美色电影在线| 国产精品情趣视频| 国内一区二区在线| 欧美精品精品一区| 亚洲午夜视频在线观看| 成人免费av网站| 久久女同精品一区二区| 免费观看日韩av| 欧美美女一区二区在线观看| 亚洲日本一区二区| 成人av在线资源网站| 精品国产髙清在线看国产毛片| 亚洲第一二三四区| 在线免费观看日韩欧美| 亚洲私人黄色宅男| 99久久精品免费看| 国产日韩欧美综合一区| 国产一区二区电影| 欧美大片免费久久精品三p| 午夜成人免费视频| 欧美精品成人一区二区三区四区| 亚洲日本欧美天堂| 96av麻豆蜜桃一区二区| 国产精品福利一区| 99久久国产综合色|国产精品| 久久综合九色综合欧美亚洲| 久草精品在线观看| 精品粉嫩超白一线天av| 国产麻豆视频一区| 久久精品男人的天堂| 国产传媒欧美日韩成人| 国产日韩精品一区二区浪潮av | 久久午夜色播影院免费高清| 免费高清成人在线| 精品三级av在线| 激情综合色丁香一区二区| 日韩精品一区二区三区老鸭窝| 蜜桃在线一区二区三区| 日韩一卡二卡三卡四卡| 国内精品国产三级国产a久久| 欧美精品一区二| 粉嫩aⅴ一区二区三区四区| 中文字幕一区二区三区精华液| 99久精品国产| 偷偷要91色婷婷| 欧美va日韩va| 99久久精品免费看| 婷婷久久综合九色综合绿巨人| 日韩欧美电影一二三| 黄色小说综合网站| 中文字幕一区二区不卡| 91高清在线观看| 日本美女一区二区| 中文字幕+乱码+中文字幕一区| 91在线视频网址| 蜜臀va亚洲va欧美va天堂| 国产亚洲一区字幕| 色婷婷久久99综合精品jk白丝| 日韩二区三区在线观看| 国产欧美一区二区在线观看| 色菇凉天天综合网| 国内精品视频666| 亚洲制服丝袜一区| 国产欧美一区二区三区在线老狼| 欧美成人a∨高清免费观看| 99久久婷婷国产综合精品电影| 亚洲二区在线观看| 国产精品女主播在线观看| 欧美色视频在线观看| 国产99久久久久| 亚洲狠狠爱一区二区三区| 国产亚洲成av人在线观看导航| 欧美三级乱人伦电影| 国产aⅴ综合色| 麻豆精品国产91久久久久久| 中文字幕亚洲精品在线观看| 日韩免费一区二区| 欧美视频一区二区三区| www.日韩av| 国产乱码精品一区二区三区五月婷| 亚洲一区二区欧美日韩| 日本一区二区三区视频视频| 日韩一卡二卡三卡国产欧美| 在线视频你懂得一区二区三区| 国内精品免费**视频| 免费一区二区视频| 午夜天堂影视香蕉久久| 亚洲激情中文1区| 国产精品对白交换视频| 国产欧美日韩综合精品一区二区| 6080国产精品一区二区| 在线观看不卡一区| 97se亚洲国产综合自在线| 成人理论电影网| 成人免费视频一区| 国产美女一区二区三区| 紧缚捆绑精品一区二区| 青青青伊人色综合久久| 亚洲成av人片在线| 亚洲高清视频的网址| 一区二区三区日韩精品视频| 国产精品久久久久影院老司| 中文字幕乱码久久午夜不卡 | 国产精品不卡在线观看| 中文字幕av不卡| 国产精品久久久久久久久快鸭| 久久精品综合网| 国产精品久久久久久久裸模| 国产精品欧美久久久久无广告| 国产精品高潮呻吟久久| 亚洲丝袜自拍清纯另类| 成人美女在线观看| 99v久久综合狠狠综合久久| 不卡在线视频中文字幕| 色八戒一区二区三区| 在线一区二区三区| 欧美久久久影院| 精品久久久久久久久久久久久久久久久| 日韩三级精品电影久久久 | 懂色av一区二区在线播放| 成人一级黄色片| 91视频xxxx| 欧美日韩精品一区二区在线播放| 欧美日本在线播放| 精品国产一区二区三区不卡| 国产视频一区在线观看| 国产精品进线69影院| 亚洲国产精品一区二区www在线 | 欧美亚洲国产怡红院影院| 欧美日韩中文字幕一区| 日韩欧美国产午夜精品| 欧美国产视频在线| 亚洲.国产.中文慕字在线| 久久99国内精品| 91免费看片在线观看| 欧美一区二区三区四区视频| 久久麻豆一区二区| 亚洲免费成人av| 精品在线免费视频| 日本精品免费观看高清观看| 91麻豆精品国产自产在线 | 99久久婷婷国产综合精品| 欧美羞羞免费网站| 国产三级久久久| 不卡视频免费播放| 4438成人网| 中文字幕一区二区视频| 久久精品国产精品亚洲综合| 97aⅴ精品视频一二三区| 日韩你懂的电影在线观看| 夜夜嗨av一区二区三区四季av | 91小视频免费观看| 欧美一区二区大片|