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

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

?? ex16_1a.asm

?? 匯編編程藝術
?? ASM
字號:
; EX16_1a.asm
;
; A simple floating point calculator that demonstrates the use of the
; UCR Standard Library pattern matching routines.  Note that this
; program requires an FPU.

		.xlist
		.386
		.387
		option		segment:use16
		include 	stdlib.a
		includelib	stdlib.lib
		matchfuncs
		.list


dseg		segment	para public 'data'

; The following is a temporary used when converting a floating point
; string to a 64 bit real value.

CurValue	real8	0.0


; A Test String:

TestStr		byte	"5+2-(3-1)",0


; If the symbol "DEBUG" is defined, then call the MatchSP routine
; to do stack overflow checking.  If "DEBUG" is not defined, just
; call the sl_Match2 routine directly.

DEBUG		=	0		;Define for debugging.

		ifdef	DEBUG
MatchPat	textequ	<MatchSP>
		else
MatchPat	textequ	<sl_Match2>
		endif


; Grammar for simple infix -> postfix translation operation:
; Semantic rules appear in braces.
;
; NOTE: This code has a serious problem.  The first production
; is left recursive and will generate an infinite loop.
;
; E -> E+T {print result} | T {print result}
; T -> <constant> {fld constant} | (E)
;
;
;
; UCR Standard Library Pattern that handles the grammar above:

; An expression consists of an "E" item followed by the end of the string:

Expression      pattern {MatchPat,E,,EndOfString}
EndOfString	pattern	{EOS}


; An "E" item consists of an "E" item optionally followed by "+" or "-"
; and a "T" item (E -> E+T | T):

E               pattern {MatchPat, E,T,Eplus}
Eplus		pattern	{MatchChar, '+', T, epPlus}
epPlus		pattern	{DoFadd}


; A "T" item is either a floating point constant or "(" followed by
; an "E" item followed by ")".
;
; The regular expression for a floating point constant is
;
;	[0-9]+ ( "." [0-9]* | ) ( ((e|E) (+|-| ) [0-9]+) | )
;
; Note: the pattern "Const" matches exactly the characters specified
;	by the above regular expression.  It is the pattern the calc-
;	ulator grabs when converting a string to a floating point number.


Const           pattern {MatchPat, ConstStr, 0, FLDConst}
ConstStr        pattern {MatchPat, DoDigits, 0, Const2}
Const2		pattern	{matchchar, '.', Const4, Const3}
Const3          pattern {MatchPat, DoDigits, Const4, Const4}
Const4		pattern	{matchchar, 'e', const5, const6}
Const5		pattern	{matchchar, 'E', Succeed, const6}
Const6		pattern	{matchchar, '+', const7, const8}
Const7		pattern	{matchchar, '-', const8, const8}
Const8          pattern {MatchPat, DoDigits}

FldConst	pattern	{PushValue}

; DoDigits handles the regular expression [0-9]+

DoDigits	pattern	{Anycset, Digits, 0, SpanDigits}
SpanDigits	pattern	{Spancset, Digits}

; The S production handles constants or an expression in parentheses.

T		pattern	{MatchChar, '(', Const, IntE}
IntE            pattern {MatchPat, E, 0, CloseParen}
CloseParen	pattern	{MatchChar, ')'}


; The Succeed pattern always succeeds.

Succeed		pattern	{DoSucceed}


; We use digits from the UCR Standard Library cset standard sets.

		include	stdsets.a

dseg		ends



cseg		segment	para public 'code'
		assume	cs:cseg, ds:dseg

; Debugging feature #1:
; This is a special version of sl_Match2 that checks for
; stack overflow.  Stack overflow occurs whenever there
; is an infinite loop (i.e., left recursion) in a pattern.

MatchSP		proc    far
		cmp	sp, offset StkOvrfl
		jbe	AbortPgm
		jmp	sl_Match2

AbortPgm:	print
                byte    cr,lf,lf
		byte	"Error: Stack overflow in MatchSP routine.",cr,lf,0
		ExitPgm
MatchSP          endp


; DoSucceed matches the empty string.  In other words, it matches anything
; and always returns success without eating any characters from the input
; string.

DoSucceed	proc	far
		mov	ax, di
		stc
		ret
DoSucceed	endp


; DoFadd - Adds the two items on the top of the FPU stack.

DoFadd		proc	far
		faddp	st(1), st
		mov	ax, di			;Required by sl_Match
		stc				;Always succeed.
		ret
DoFadd		endp


; PushValue-	We've just matched a string that corresponds to a
;		floating point constant.  Convert it to a floating
;		point value and push that value onto the FPU stack.

PushValue	proc	far
		push	ds
		push	es
		pusha
		mov	ax, dseg
		mov	ds, ax

		lesi	Const		;FP val matched by this pat.
		patgrab			;Get a copy of the string.
		atof			;Convert to real.
		free			;Return mem used by patgrab.
		lesi	CurValue	;Copy floating point accumulator
		sdfpa			; to a local variable and then
		fld	CurValue	; copy that value to the FPU stk.

		popa
		mov	ax, di
		pop	es
		pop	ds
		stc
		ret
PushValue	endp



; The main program tests the expression evaluator.

Main		proc
		mov	ax, dseg
		mov	ds, ax
		mov	es, ax
		meminit

		finit			;Be sure to do this!
		fwait

		lesi	TestStr
		puts			;Print the expression

		ldxi	Expression
		xor	cx, cx
		match
		jc	GoodVal
		printff
		byte	" is an illegal expression",cr,lf,0
		ret

GoodVal:	fstp	CurValue
		printff
		byte	" = %12.6ge\n",0
		dword	CurValue

Quit:		ExitPgm
Main		endp
cseg		ends

sseg		segment	para stack 'stack'
		word	64 dup (?)		;Buffer for stack overflow
StkOvrfl	word	?			;Stack overflow if drops
stk		db	1024 dup ("stack   ")	; below StkOvrfl.
sseg		ends

zzzzzzseg	segment	para public 'zzzzzz'
LastBytes	db	16 dup (?)
zzzzzzseg	ends
		end	Main

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产欧美在线| 亚洲成人在线免费| 91精品综合久久久久久| 粉嫩嫩av羞羞动漫久久久| 亚洲在线观看免费视频| 国产亚洲一二三区| 这里只有精品免费| 色婷婷亚洲婷婷| 国产成人精品免费| 奇米影视7777精品一区二区| 一区二区视频在线| 国产欧美日韩精品一区| 日韩免费高清av| 欧美另类一区二区三区| 色哟哟一区二区| 成人一区二区三区中文字幕| 久久激情五月婷婷| 视频一区二区三区入口| 亚洲男人电影天堂| 亚洲欧美综合在线精品| 国产视频一区在线观看| 欧美精品一区二区在线播放| 91精品国产91久久久久久一区二区 | 麻豆国产欧美一区二区三区| 一区二区三区不卡视频| 中文字幕+乱码+中文字幕一区| 欧美tk丨vk视频| 日韩欧美不卡一区| 日韩一区二区在线看片| 欧美日韩精品三区| 欧美日韩国产在线观看| 在线亚洲免费视频| 92精品国产成人观看免费| 成人小视频免费在线观看| 国内精品在线播放| 韩国精品免费视频| 国产老肥熟一区二区三区| 激情综合五月婷婷| 国产一区二区三区高清播放| 免播放器亚洲一区| 免费观看91视频大全| 天天免费综合色| 美女脱光内衣内裤视频久久网站 | 一区二区国产盗摄色噜噜| 1024成人网| 亚洲另类在线制服丝袜| 亚洲欧美国产77777| 亚洲一区在线播放| 午夜影院久久久| 日本美女一区二区三区视频| 热久久一区二区| 精品一区二区免费在线观看| 美女网站一区二区| 国产成人av电影在线播放| 国产 日韩 欧美大片| 不卡av电影在线播放| 91免费版在线看| 欧美久久久久免费| 精品国一区二区三区| 久久精品人人爽人人爽| 国产精品美女久久久久久| 中文字幕一区二区在线播放| 一区二区三区在线观看欧美 | 久久成人免费日本黄色| 国产一区二区影院| 色综合一区二区三区| 欧美电影在线免费观看| 亚洲精品一区二区三区99| 亚洲欧洲国产日韩| 午夜成人免费电影| 国产一区二区三区在线观看精品 | 国产福利一区二区三区视频在线| 成人avav在线| 欧美美女喷水视频| 欧美精品一区二区三区四区| 国产精品国产a| 男男成人高潮片免费网站| 国产精品99久久久久久宅男| 99re8在线精品视频免费播放| 欧美日韩二区三区| 亚洲国产精品黑人久久久| 一区二区三区日本| 精品无码三级在线观看视频| 91在线观看免费视频| 日韩久久精品一区| 1024成人网色www| 久久精品99国产精品| 91麻豆国产精品久久| 欧美岛国在线观看| 一区二区在线免费| 国产99精品视频| 91精品国产91热久久久做人人| 一区免费观看视频| 久久99久久久久久久久久久| 在线日韩av片| 国产日韩三级在线| 美女视频一区二区三区| 91丨九色porny丨蝌蚪| 久久精品视频免费| 麻豆久久久久久| 欧美日韩一区二区欧美激情| 中文字幕不卡的av| 久久福利资源站| 欧美久久婷婷综合色| 一区二区三区在线观看动漫| 国产精品亚洲一区二区三区在线| 在线播放欧美女士性生活| 国产精品成人在线观看| 国产一区二区精品久久| 91.com视频| 亚洲第四色夜色| 在线一区二区三区四区五区| 国产精品麻豆视频| 国产一区不卡在线| 日韩欧美激情在线| 日韩中文字幕91| 欧美亚州韩日在线看免费版国语版| 久久久久久久久久久久久女国产乱| 日韩国产欧美一区二区三区| 欧美日韩视频第一区| 亚洲欧美日韩中文字幕一区二区三区| 国产成人精品三级| 国产亚洲欧美色| 国产精品综合av一区二区国产馆| 欧美一级高清片| 日韩电影一区二区三区| 欧美日韩性生活| 亚洲国产精品一区二区久久 | 日韩精品自拍偷拍| 日日噜噜夜夜狠狠视频欧美人| 欧美日韩视频在线第一区| 亚洲国产精品自拍| 777午夜精品免费视频| 亚洲va欧美va人人爽| 欧美日韩一区三区| 天堂成人国产精品一区| 在线成人免费视频| 青草av.久久免费一区| 日韩欧美在线123| 九色综合狠狠综合久久| 精品国产乱码久久久久久浪潮| 紧缚奴在线一区二区三区| 欧美成人官网二区| 国产在线播放一区三区四| 久久一留热品黄| 国产a区久久久| 成人免费一区二区三区视频| 91麻豆蜜桃一区二区三区| 亚洲成人免费观看| 日韩一级免费一区| 精品午夜久久福利影院| 日本一二三四高清不卡| 91免费观看在线| 视频一区国产视频| 精品91自产拍在线观看一区| 国产成人av一区二区三区在线 | 一区二区高清免费观看影视大全| 欧亚洲嫩模精品一区三区| 亚洲国产精品久久久久婷婷884| 欧美精品久久一区二区三区 | 在线观看亚洲a| 视频一区二区三区在线| 精品久久国产字幕高潮| 床上的激情91.| 一区二区三区国产精华| 日韩视频一区在线观看| 国产精品69毛片高清亚洲| 亚洲三级视频在线观看| 欧美一区二区三区在线| 国产精品 欧美精品| 亚洲精品videosex极品| 日韩视频国产视频| av中文一区二区三区| 午夜av电影一区| 亚洲国产成人一区二区三区| 在线免费一区三区| 韩国av一区二区三区在线观看| 国产精品久久久久婷婷| 欧美人xxxx| av中文字幕在线不卡| 日韩不卡一区二区三区| 国产精品久久久久一区 | 欧美一级黄色大片| 不卡在线观看av| 奇米综合一区二区三区精品视频| 国产精品午夜在线| 欧美一区二区美女| av在线播放不卡| 麻豆国产精品一区二区三区| 樱桃国产成人精品视频| 久久久久久影视| 3atv一区二区三区| 91在线免费看| 国产一区二区精品久久99| 天使萌一区二区三区免费观看| 国产精品天天看| 精品国产一二三| 欧美日本高清视频在线观看| 99视频精品在线| 国产精品66部|