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

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

?? mon.asm

?? 大量的匯編程序源代碼
?? ASM
字號:
	page	78,132
	title	Monitor for IBM PC by Tim Paterson

	include	dos.inc

;System equates

BreakVect	=	1BH
TermAddr	equ	word ptr 0AH
PROMPT		=	">"

ExecBlock	struc

Environment	dw	0		;Pass on parent's environment
CommandTail	dw	80H
CommandTailSeg	dw	0
FCB1		dw	5CH
FCB1Seg		dw	0
FCB2		dw	6CH
FCB2Seg		dw	0
InitSp		dw	0
InitSs		dw	0
InitIp		dw	0
InitCs		dw	0

ExecBlock	ends

	.model	small
	.code
	.data
Strings	segment	byte public
Strings	ends
InitSeg segment public
InitSeg ends
LastSeg	segment byte
	ret				;End of init code
LastSeg	ends

DGroup	group	_TEXT,_DATA,Strings,InitSeg,LastSeg

	.data

	public	AxSave,BxSave,SpSave,SsSave,DsSave,CsSave,IpSave,FlSave
	public	BpSave,SiSave,DiSave,TestPSP

	extrn	LineBuf:byte, TCount:word

ExecFile	ExecBlock<,DGroup:LineBuf>
TestPSP		dw	0
NextInt15	dd	0

	ALIGN	2
	dw	80H dup(?)		;Working stack area
STACK	label	word
;Register save area
AxSave	dw	?
BxSave	dw	?
CxSave	dw	?
DxSave	dw	?
SpSave	dw	?
BpSave	dw	?
SiSave	dw	?
DiSave	dw	?
DsSave	dw	?
EsSave	dw	?
SsSave	dw	?
CsSave	dw	?
IpSave	dw	?
FlSave	dw	?

;Start of Monitor code

	.code
	assume	cs:DGroup,ds:DGroup,es:DGroup,ss:DGroup

	public	Monitor, Command, Error, PrintAbort, PErr, ErrMes

	extrn	InBuf:near, OutCh:near, CrLf:near, PrintMes:near, ScanB:near
	extrn	Tab:near, ReEnter:near

	org	100H

Monitor:
     	cld

	IFDEF	DEBUG
;Copy psp
	xor	si,si
	mov	di,si
	push	cs
	pop	es
	mov	cx,100H/2
rep	movsw
	push	cs
	pop	ds
	push	cs
	pop	ss
	ENDIF	;DEBUG

	mov	sp,offset DGroup:Stack
	DOS	Version,0
	cmp	al,3			;Version OK?
	jae	VersionOK
;Bad version.  Terminate in a DOS 1.0-compatible way
	DOS	Print,,<offset DGroup:BadVersionMsg>
	int	20H

VersionOK:
	call	Init
	mov	si,offset DGroup:Header
	call	PrintMes
;Load file for debugging
	mov	ax,cs

	IFDEF	DEBUG
	sub	ax,10H			;Get to true PSP
	mov	es,ax
	ENDIF	;DEBUG

	mov	bx,[CsSave]		;First segment to free
	sub	bx,ax			;Compute paragraphs we're keeping
	DOS	ResizeMem

	IFDEF	DEBUG
	push	cs
	pop	es
	ENDIF	;DEBUG

	mov	si,80H			;Point to command line in PSP
	lodsb				;Get length byte
	cbw
	xchg	cx,ax			;Put length in cx
	call	ParseFile
	mov	si,dx
	cmp	byte ptr [si],0		;Was there a file name?
	jz	Command
	mov	[AxSave],ax
	mov	[ExecFile].CommandTailSeg,ds
	mov	[ExecFile].FCB1Seg,ds
	mov	[ExecFile].FCB2Seg,ds
	mov	bx,offset DGroup:ExecFile
	DOS	Exec,1			;Load, don't execute
	jc	NoFileLoad
	mov	ax,[ExecFile].InitIp
	mov	[IpSave],ax
	mov	ax,[ExecFile].InitCs
	mov	[CsSave],ax
	mov	ax,[ExecFile].InitSp
	mov	[SpSave],ax
	mov	ax,[ExecFile].InitSs
	mov	[SsSave],ax
	DOS	GetPSP
	mov	[DsSave],bx		;DS = ES = PSP
	mov	[EsSave],bx
	mov	es,bx
	mov	es:[TermAddr],offset DGroup:ProgTerminate
	mov	es:[TermAddr+2],cs	;Terminate address now set
	mov	[TestPSP],bx
	mov	bx,cs

	IFDEF	DEBUG
	sub	bx,10H			;True PSP
	ENDIF	;DEBUG

	DOS	SetPSP			;Change back to our own PSP
Command:
;Re-establish initial conditions
	cld
	mov	ax,cs
	mov	ds,ax
	mov	es,ax
	mov	ss,ax
	mov	sp,offset DGroup:STACK
	sti
	MOV	AL,PROMPT
	CALL	OutCh
	CALL	INBUF		;Get command line
;From now and throughout command line processing, SI points
;to next character in command line to be processed.
	CALL	SCANB		;Scan off leading blanks
	JZ	COMMAND		;Null command?
	LODSB			;AL=first non-blank character
;Prepare command letter for table lookup
	SUB	AL,"B"		;Low end range check
	JC	ERR1
	CMP	AL,"U"+1-"B"	;Upper end range check
	JNC	ERR1
	SHL	AL,1		;Times two
	CBW			;Now a 16-bit quantity
	XCHG	BX,AX		;In BX we can address with it
	CALL	[BX+COMTAB]	;Execute command
	jmp	Command		;Get next command

NoFileLoad:
	mov	si,offset DGroup:FileErrMsg
	jmp	PrintAbort

ERR1:	JMP	PERR

BadVersionMsg	db	"Invalid DOS--version 3 or later required$"
Header		db	13,10,"IBM-PC Monitor 1.0",13,10+80H
SYNERR		db	'^'
ERRMES		db	" Error",13,10+80H
ProgEndMsg	db	13,10,"Program terminated",13,10+80H
FileErrMsg	db	"Error loading file",13,10+80H

;Ctrl-BREAK handler.  Allows program abort.
Interrupt:
	MOV	AL,20H		;End of interrupt command
	OUT	20H,al		;Send to 8259A
	mov	al,0AEH		;Enable keyboard
	out	64H,al		;Send to keyboard
	MOV	AL,"^"
	CALL	OutCh
	MOV	AL,"C"
	CALL	OutCh
	call	CRLF
	jmp	Command

SysReq:
	cmp	ax,8500H		;Sys Req key pressed?
	jnz	ChainInt15
	mov	cs:[TCount],1		;Stop step mode
	jmp	ReEnter

ChainInt15:
	jmp	cs:[NextInt15]

;Command Table. Command letter indexes into table to get
;address of command. PERR prints error for no such command.

DwExt	Macro	lab
	extrn	lab:near
	dw	offset DGroup:lab
	EndM

COMTAB	label	word
	DW	PERR		;B
	DwExt	COMPARE		;C
	DwExt	DUMP		;D
	DwExt	ENTER		;E
	DwExt	FILL		;F
	DwExt	GO		;G
	DW	PERR		;H
	DwExt	INPUT		;I
	DW	PERR		;J
	DW	PERR		;K
	DW	PERR		;L
	DwExt	MOVE		;M
	DW	PERR		;N
	DwExt	OUTPUT		;O
	DW	PERR		;P
	DW	Quit		;Q
	DwExt	REG		;R
	DwExt	SEARCH		;S
	DwExt	TRACE		;T
	DwExt	UnAssemble	;U

ParseFile:
;Find start and end of file name
;Inputs:
;	ds:si = pointer to input string
;	cx = length of string
;Outputs:
;	ax = Starting value for ax (drive validity flags)
;	dx = File name to execute, zero-terminated

	mov	bx,si			;Save initial pointer
	call	ScanB
	mov	dx,si			;Save starting address
	call	FindNameEnd
	sub	bx,si
	neg	bx			;Amount scanned so far
	sub	cx,bx			;Amount remaining in string
	mov	bx,si			;Save end of name--start of args
	mov	di,offset DGroup:LineBuf+1
	mov	[di-1],cl		;Put length in first byte
	inc	cx			;Copy terminating CR
rep	movsb				;Copy to argument buffer
	mov	si,bx			;Restore start of args
	mov	di,5CH			;First FCB
	DOS	ParseName,1		;Parse file name, scan off blanks
	cbw				;0FFH if invalid drive
	and	al,ah			;Make sure al is zero or one
	xchg	cx,ax			;Save return value in cl
	call	FindNameEnd		;Skip over any "\" chars
	mov	di,6CH			;Second FCB
	DOS	ParseName,1		;Parse file name, scan off blanks
	cbw				;0FFH if invalid drive
	and	ah,al			;Make sure ah is zero or one
	mov	al,cl
	mov	byte ptr [bx],0		;Zero terminate file name
	ret

FindNameEnd:
	lodsb
	cmp	al," "			;Check for blank or control char
	jbe	NameEnd
	cmp	al,","
	jz	NameEnd
	cmp	al,";"
	jz	NameEnd
	cmp	al,"/"
	jnz	FindNameEnd
NameEnd:
	dec	si			;Point back at terminator
	ret


;Command error. SI has been incremented beyond the
;command letter so it must decremented for the
;error pointer to work.

PERR:
	DEC	SI

;Syntax error. SI points to character in the input buffer
;which caused error. By subtracting from start of buffer,
;we will know how far to tab over to appear directly below
;it on the terminal. Then print "^ Error".

ERROR:
	SUB	SI,offset DGroup:LINEBUF-1	;How many char processed so far?
	MOV	CX,SI		;Parameter for TAB in CX
	CALL	TAB		;Directly below bad char
	MOV	SI,offset DGroup:SYNERR	;Error message

;Print error message and abort to command level

PrintAbort:
	CALL	PRINTMES
	JMP	COMMAND

;************************************************************
; "Q" - Quit

ProgTerminate:
;TestPSP = our own PSP if we are terminating the child in order to quit
;Monitor (suppress "program terminated" message).
	push	cs
	pop	ds
	mov	bx,cs

	IFDEF	DEBUG
	sub	bx,10H			;True PSP
	ENDIF	;DEBUG

	mov	ax,bx
	xchg	bx,[TestPSP]		;Set to our own PSP to show no child
	cmp	ax,bx			;Do we have a child?
	jz	JustExit
	mov	si,offset DGroup:ProgEndMsg
	jmp	PrintAbort		;Print message, get next command line

Quit:
;We must end child first.  If no child, TestPSP = our own PSP, so we'll
;just terminate directly.  If there is a child, set TestPSP to our own PSP
;as a flag to ProgTerminate to suppress "program terminated" message.
	mov	bx,cs

	IFDEF	DEBUG
	sub	bx,10H			;True PSP
	ENDIF	;DEBUG

	xchg	bx,[TestPSP]
	DOS	SetPSP
JustExit:
	lds	dx,[NextInt15]
	DOS	SetVect,15H
	mov	ax,76*100H + 0		;Terminate, no error
	int	21H

;************************************************************
;
;Initialization code
;
;Each module can have its own initialization code.  The module simply
;puts the code in InitSeg.  All InitSegs are combined end-to-end,
;thus executing the init code for each module.  The RET instruction in
;LastSeg, immediately following InitSeg, returns program flow back to
;the caller of Init.
;
;All this code is thrown away when memory is resized.

InitSeg	segment
	assume	cs:DGroup,ds:Dgroup

Init:
;one-time register initialization
	DOS	SetVect,BreakVect,<offset DGroup:Interrupt>
	DOS	GetVect,15H
	mov	word ptr [NextInt15],bx
	mov	word ptr [NextInt15+2],es
	push	ds
	pop	es
	DOS	SetVect,15H,<offset DGroup:SysReq>
	mov	[TestPSP],cs		;Use our own PSP until program loads
	xor	ax,ax
	mov	di,offset DGroup:AxSave
	mov	cx,8			;Init all general registers
rep	stosw
	mov	ax,cs
	mov	bx,offset DGroup:InitSeg
	mov	cl,4
	shr	bx,cl
	add	ax,bx
rep	stosw				;Fill 4 segment registers
	mov	ax,100H
	stosw				;Set IP
	mov	ah,2
	stosw				;Enable user interrupts
	mov	byte ptr [SpSave+1],1	;Set user SP to 100H
;Will now fall into next module's init code
InitSeg	ends

	END	Monitor

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久影院午夜论| 精品欧美一区二区三区精品久久| 韩国av一区二区三区| 麻豆精品在线看| 日韩电影免费在线| 蜜桃av一区二区在线观看 | 国产精品欧美综合在线| 久久综合色8888| 精品国产髙清在线看国产毛片| 日韩欧美国产精品一区| 欧美精品一区二区三区四区| 精品福利一区二区三区 | 亚洲精品国产一区二区精华液| 亚洲欧洲在线观看av| 亚洲另类中文字| 一区二区三区中文字幕精品精品 | 亚洲成人777| 久久精品国产免费| 风流少妇一区二区| 91美女视频网站| 9191久久久久久久久久久| 日韩情涩欧美日韩视频| 欧美国产日韩a欧美在线观看| 亚洲欧美日韩电影| 日韩极品在线观看| 国产白丝网站精品污在线入口| 99国产欧美另类久久久精品 | 久久国产视频网| 国产成人鲁色资源国产91色综 | 国产精品久久久久久户外露出 | 欧美日韩中文字幕精品| 91精品国产综合久久久蜜臀粉嫩| 亚洲精品在线观| 日韩理论片在线| 蜜桃视频免费观看一区| 99精品偷自拍| 日韩欧美国产精品一区| 亚洲人成影院在线观看| 蜜臀91精品一区二区三区| 91亚洲精品久久久蜜桃网站| 日韩一级片网站| 亚洲色图清纯唯美| 国产综合久久久久影院| 欧美三级日韩三级| 国产欧美久久久精品影院| 日韩精品乱码av一区二区| 99久久国产免费看| 精品国产成人在线影院| 亚洲图片一区二区| 成人福利视频网站| 精品999在线播放| 亚洲1区2区3区4区| 91福利视频在线| 中文字幕一区日韩精品欧美| 国产一区999| 日韩亚洲欧美高清| 亚洲成a人片综合在线| 91视频在线看| 中文字幕二三区不卡| 天天av天天翘天天综合网| 成人黄色a**站在线观看| 精品国产凹凸成av人导航| 午夜精品久久久| 色天天综合久久久久综合片| 亚洲国产成人自拍| 国内久久婷婷综合| 亚洲精品一线二线三线| 日本伊人午夜精品| 日韩一二在线观看| 老司机一区二区| 日韩你懂的电影在线观看| 亚洲chinese男男1069| 欧美伊人久久久久久午夜久久久久| 国产精品久久三| 91老师片黄在线观看| 亚洲色图丝袜美腿| 91免费版在线| 夜夜亚洲天天久久| 欧美中文字幕一区二区三区| 亚洲精品久久久蜜桃| 欧美系列亚洲系列| 天堂成人免费av电影一区| 欧美一级国产精品| 国产乱淫av一区二区三区| 久久男人中文字幕资源站| 国产一区二区在线看| 日本一区二区电影| 96av麻豆蜜桃一区二区| 一区二区三区不卡在线观看| 欧美日韩国产精品自在自线| 日韩黄色免费网站| 国产一区不卡在线| 欧美日韩不卡一区| 欧美一级一级性生活免费录像| 视频一区中文字幕国产| 欧美一区二区在线观看| 国产在线视频精品一区| 欧美国产成人在线| 色999日韩国产欧美一区二区| 亚洲毛片av在线| 欧美一区二区人人喊爽| 国产一区二区三区高清播放| 成人免费一区二区三区在线观看| 在线影视一区二区三区| 久久国产精品一区二区| 亚洲国产精品成人久久综合一区| 色偷偷成人一区二区三区91| 日本中文一区二区三区| 久久精品亚洲乱码伦伦中文| 色视频成人在线观看免| 日本vs亚洲vs韩国一区三区二区| 国产视频在线观看一区二区三区| 91精品福利视频| 黄色资源网久久资源365| 亚洲欧洲日韩一区二区三区| 538prom精品视频线放| 成人av在线播放网址| 日产国产高清一区二区三区| 亚洲欧洲日本在线| 精品国产成人在线影院| 91福利视频久久久久| 国产激情视频一区二区在线观看| 亚洲一级二级在线| 国产精品久久久久永久免费观看 | 樱花影视一区二区| 久久免费视频一区| 88在线观看91蜜桃国自产| av色综合久久天堂av综合| 蜜臀av在线播放一区二区三区| 亚洲精品视频自拍| 亚洲欧洲av色图| 久久久久久久久久久久久久久99| 91福利视频在线| 95精品视频在线| 成人福利视频在线| 国产精品一区二区久激情瑜伽 | 国产精品色哟哟| 欧美一级xxx| 欧美日韩一区二区欧美激情| 91在线国产观看| 丁香婷婷综合激情五月色| 激情国产一区二区| 日本免费在线视频不卡一不卡二| 亚洲妇熟xx妇色黄| 亚洲一区二区三区四区在线观看| 亚洲色图.com| 亚洲日本中文字幕区| 亚洲欧美欧美一区二区三区| 中文字幕一区二区三中文字幕| 久久精品视频在线看| 精品国产一区二区三区忘忧草| 日韩欧美中文字幕公布| 日韩视频一区二区三区| 日韩一级完整毛片| 欧美精品一区二区三区一线天视频 | 午夜精品久久久久久久久| 亚洲制服丝袜av| 亚洲成人久久影院| 天天综合天天做天天综合| 午夜精品福利在线| 日韩国产一区二| 美国欧美日韩国产在线播放| 久久99蜜桃精品| 国产一区二区三区四区五区美女| 国产一区91精品张津瑜| 国内精品国产三级国产a久久| 678五月天丁香亚洲综合网| 亚洲综合丝袜美腿| 亚洲综合免费观看高清完整版在线| 亚洲丝袜另类动漫二区| 亚洲精品国久久99热| 午夜一区二区三区视频| 日韩高清不卡在线| 国产一区二区久久| 97久久精品人人做人人爽50路| 欧美在线制服丝袜| 欧美电影免费提供在线观看| 国产亚洲综合在线| 一区二区三区在线视频播放| 丝袜美腿高跟呻吟高潮一区| 毛片av一区二区| 99r国产精品| 91精品国产91综合久久蜜臀| 久久你懂得1024| 亚洲综合区在线| 国产又粗又猛又爽又黄91精品| 91麻豆成人久久精品二区三区| 欧美老肥妇做.爰bbww视频| 精品国产乱码久久久久久夜甘婷婷 | 成人午夜激情在线| av高清久久久| 欧美日本韩国一区| 国产拍揄自揄精品视频麻豆| 亚洲自拍偷拍av| 国产福利一区二区三区视频| 色欧美日韩亚洲| 久久久一区二区三区捆绑**| 一区二区三区在线视频免费观看| 精品无人码麻豆乱码1区2区| 色av一区二区|