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

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

?? fout.asm

?? [隨書類]Dos6.0源代碼
?? ASM
字號:
	TITLE	FOUT - Free-format numeric output
;***
; FOUT - Free-format numeric output
;
;	Copyright <C> 1986, Microsoft Corporation
;
;Purpose:
;	Floating Point versions of the routines in IFOUT.ASM
;
;	This file is dragged in by the label B$FloatCONASC
;
;
;******************************************************************************
	INCLUDE switch.inc	
	INCLUDE rmacros.inc	; Runtime Macro Defintions

	USESEG	_DATA		
	USESEG	_BSS		
	USESEG	_TEXT		
	USESEG	RT_TEXT 	
	USESEG	XIB		; XIB and XIE must bracket XI!
	USESEG	XI		;initializer segment
	USESEG	XIE		
	USESEG	INIT_CODE	

	INCLUDE seg.inc 	
	INCLUDE	baslibma.inc	
	INCLUDE rtps.inc	; constants shared with QBI
	INCLUDE idmac.inc	



sBegin	_DATA			

	externW B$AC		
	externW B$DAC		

sEnd	_DATA			

sBegin	_BSS			

	externB b$SIGN 		; defined in CONASC.ASM
	externB b$VTYP		; defined in GWDATA.ASM

sEnd	_BSS			




assumes CS,RT_TEXT		
sBegin	RT_TEXT 		

	externNP B$ASCRND	

;***
;B$FloatFOUTBX - Free-format numeric output for non-integers
;
;Purpose:
;	Format number for printing, using BASIC's formatting rules.
;
;Entry:
;	BX = ptr to Number to be formatted
;	[b$VTYP] = VT_R4, VT_R8 or VT_CY
;
;Exit:
;	BX = Address of ASCII string, terminated by 00
;	AX = Length of string (not including terminating 00)
;
;Uses:
;	Per convention.
;
;Exceptions:
;	None.
;****
PUBLIC	B$FloatFOUTBX		
cProc	B$FloatFOUTBX,<NEAR>,<ES,SI,DI>       
cBegin				
	PUSH	DS		
	POP	ES		
	MOV	AL,[b$VTYP]	
	AND	AX,0FH		;mask I4s to count of bytes to move
	MOV	SI,BX
	MOV	DI,OFFSET DGROUP:B$AC ;point to B$AC
	CMP	AX,4		;<= 4 byte quantity?
	JBE	FourByteVar	 ;brif so
	SUB	DI,4		;use DAC instead of AC
FourByteVar:
	XCHG	AX,CX
	SHR	CX,1		;Count of words
	REP	MOVSW

	CALL	B$FloatCONASC	;Most of the work's done here

;Number has been converted to ASCII and is sitting at buffer pointed to by DI.
;	SI = address of result buffer
;	CX = number of significant figures
;	DL has the base 10 exponent of the right end of the digit string.

	MOV	BX,7		; If SP, use 7 digits, but limit 7 to right
	CMP	[b$VTYP],VT_R8	; What type?
	JB	RNDDIG		; If I2 or R4, use R4 parameters
	MOV	BX,16		; For R8 or I4, 16 digits, limit 16 to right
RNDDIG:
	MOV	AL,BL
	CALL	B$ASCRND	;Round to AL digits
	MOV	AX,DX		; [AX] = exponent
	PUSH	DX		; save it also
	CWD			; sign extend
	XOR	AX,DX		; [AX] = ABS(exponent)
	SUB	AX,DX		; adjust
	POP	DX		; [DX] = exponent
	CMP	AX,BX		;Too many digits to right of decimal point?
	JG	SCINOT		;If so, use scientific notation
	MOV	AX,DX		
	ADD	AX,CX		; AL=number of digits to left of dec.pt.
	CMP	AX,BX		; Too many?
	JG	SCINOT		;If so, use scientific notation
	XCHG	AX,CX		;CX has digits needed to left of dec. pt.
	XCHG	AX,BX		;BX has digits available from buffer
	OR	CX,CX		;Any to left?
	JLE	LESS1		;If not, start with decimal point
LEFTDP:
	MOVSB			;Move digits to final buffer
	DEC	BX		;Limit to available digits
	LOOPNZ	LEFTDP
	MOV	AL,"0"
	REP	STOSB		;Fill in with place-holding zeros if needed
	JZ	PUTEND		;If out of digits, were done(flags from DEC BX)
PUTDP:
	MOV	AL,"."
	STOSB			;Put in decimal point
	MOV	AL,"0"		;Used only if we came from LESS1
	REP	STOSB		;Add leading zeros if a small number
	MOV	CX,BX		;Number of digits left
	REP	MOVSB
PUTEND:
	MOV	BX,OFFSET DGROUP:b$SIGN ;Leave pointer to buffer
	MOV	AX,DI
	SUB	AX,BX		;Length of string
	MOV	BYTE PTR[DI],0	;Put in terminating zero
cEnd				

LESS1:
;Come here if number is less than one and therefore has no digits to
;left of the decimal point.
	NEG	CX		;Number of place-holding zeros needed
	JMP	PUTDP		;   after the decimal point

SCINOT:
	MOVSB			;Move first digit to final buffer
	DEC	CX		;Account for digit already moved
	JZ	EXP		;Skip decimal point if only one digit
	MOV	AL,"."
	STOSB
	ADD	DX,CX		; Correct exponent for decimal point position
	REP	MOVSB		;All other digits go after decimal point
EXP:
	MOV	AX,"+E" 	;Prepare "E+" if positive exponent
	OR	DX,DX		; Check exponent sign
	JNS	POSEXP
	NEG	DX		; Force exponent positive
	MOV	AH,"-"
POSEXP:
	CMP	[b$VTYP],VT_R8	; Is type double precision?
	JNZ	SCISNGL
	DEC	AX		;Convert the "E" to "D"
SCISNGL:
	STOSW
	MOV	AX,DX		; [AX] = exponent
	MOV	BL,100		
	DIV	BL		; [AL] = hundreds count
	OR	AL,AL		; See if any
	JZ	SCISMALL	; jump if not
	OR	AL,"0"		; turn into hundreds digit
	STOSB			; add leading digit
SCISMALL:			
	XCHG	AL,AH		; get remainder here
	AAM			;Convert binary to unpacked BCD
	XCHG	AL,AH
	OR	AX,"00" 	;Add ASCII bias
	STOSW
	JMP	PUTEND

;
; Rewritten and moved here from CONASC.ASM
;
;***
;B$FloatCONASC - Convert number to ASCII
;
;Purpose:
;	Convert number to a string of ASCII digits with no leading or
;	trailing zeros. Return base 10 exponent and count of digits.
;	No integer values will be passed to this routine.
;
;Entry:
;	B$AC has SP number OR B$DAC has DP or CY number
;
;Exit:
;	CX = number of significant figures (decimal point to right)
;	DL = base 10 exponent
;	SI = Address of first digit (non-zero unless number is zero)
;	[b$SIGN] has sign - blank if positive, "-" if negative
;
;Uses:
;	Uses all.
;****

cProc	B$FloatCONASC,<NEAR,PUBLIC>
cBegin
	MOV	SI,OFFSET DGROUP:B$DAC ;address of location to put final R8
	CMP	b$VTYP,VT_R8	;Is it an R8
	JE	CONASC2 	;brif so, we are ready to convert

GOT_R4: 			
DbAssertRelB  b$VTYP,E,VT_R4,RT_TEXT,<Unknown value for b$VTYP in CONASC>

	MOV	BX,OFFSET DGROUP:B$AC ;point to AC for R4s
	fld	dword ptr [bx]	;Load the R4
	fstp	qword ptr [si]	;And store it as an R8
	FWAIT			;ensure stored


CONASC2:
	Call   FAR PTR B$I8_OUTPUTHack ;math coversion from R8 to ascii string

;	At this point $i8_output returns the following conditions
;		DS:SI	- pointer to converted string (first byte is length)
;		AX	- 1 if number was ok, 0 if indefinite
;		BL	- sign character: either ' ' or '-'
;		DX	- base 10 exponent (left of digits)
;		CX,BH	- smashed

CONASC3:
	MOV	b$SIGN,BL	;save sign char
	LODSB			;AL = length of strings
	CBW
	CMP	AX,1		;See if single digit
	JNZ	ModExp		;If not, go modify exponent
	CMP	BYTE PTR [SI],"0" ;Else see if number is zero
	JZ	NoModExp	;If so, leave exponent alone
ModExp:
	SUB	DX,AX		;DX = base 10 exponent (right of digits)
NoModExp:
	XCHG	AX,CX		;return num digits in CX
cEnd


sEnd	RT_TEXT

assumes CS,_TEXT
sBegin	_TEXT

	externNP $i8_output	;math pack string conversion

;***
;B$I8_OUTPUTHack  - Hack to call B$I8_OUTPUT near from _TEXT.
;
;Purpose:
;	Hack to call B$I8_OUTPUT near from _TEXT.
;	Convert number to a string of ASCII digits.
;
;Entry:
;	DS:SI	- ptr to 8 byte double precision number.
;
;Exit:
;	DS:SI	- pointer to converted string (first byte is length)
;	AX	- 1 if number was ok, 0 if indefinite
;	BL	- sign character: either ' ' or '-'
;	DX	- base 10 exponent
;	CX,BH - smashed
;
;Uses:
;	Uses all but BP,DI.
;****

cProc	B$I8_OUTPUTHack,<FAR>,<BP,DI>
cBegin
	cCall	$i8_output	;math coversion from R8 to ascii string

;	At this point $i8_output returns the following conditions
;		DS:SI	- pointer to converted string (first byte is length)
;		AX	- 1 if number was ok, 0 if indefinite
;		BL	- sign character: either ' ' or '-'
;		DX	- base 10 exponent
;		DI,CX,BH - smashed

cEnd

sEnd	_TEXT


	END

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜电影一区二区| 久久精品夜色噜噜亚洲a∨| 成人av在线电影| 麻豆国产欧美一区二区三区| 婷婷综合久久一区二区三区| 亚洲成人福利片| 亚洲午夜久久久久久久久电影院| 一区二区三区中文字幕| 亚洲精品国产第一综合99久久 | 久久久精品黄色| 国产欧美日韩不卡免费| 欧美国产一区视频在线观看| 中文字幕va一区二区三区| 国产精品二三区| 一区二区三区毛片| 亚洲成人在线观看视频| 美腿丝袜亚洲三区| 99久久精品免费看国产| 99热在这里有精品免费| 欧美性感一区二区三区| 在线不卡a资源高清| 91精品福利在线一区二区三区| 日韩精品一区二区三区老鸭窝 | 99视频国产精品| 欧美综合色免费| 欧美一二三四区在线| 欧美国产一区视频在线观看| 亚洲免费观看高清完整版在线观看| 亚洲午夜久久久久久久久久久 | 欧美网站一区二区| 日韩亚洲国产中文字幕欧美| 国产网站一区二区三区| 亚洲在线中文字幕| 韩国女主播一区二区三区| 91视频com| 日韩欧美国产成人一区二区| 亚洲欧美在线另类| 日本不卡不码高清免费观看| 波多野结衣中文字幕一区| 欧美另类videos死尸| 国产女人18水真多18精品一级做 | 日韩免费看网站| 中文字幕在线不卡一区二区三区| 亚洲成人av一区二区| 国产成人激情av| 欧美亚州韩日在线看免费版国语版| 欧美一区二区三区四区视频| 亚洲欧洲色图综合| 久久99久国产精品黄毛片色诱| 99久久精品国产网站| 日韩一区二区三区在线| 夜夜操天天操亚洲| 波多野结衣中文一区| 精品精品国产高清a毛片牛牛 | 欧美三区在线观看| 国产免费观看久久| 捆绑紧缚一区二区三区视频| 欧美性色欧美a在线播放| 国产精品午夜春色av| 免费看黄色91| 欧美日韩国产区一| 亚洲午夜精品网| 91久久人澡人人添人人爽欧美 | 免费在线视频一区| 色综合久久久久久久久久久| 亚洲国产精品v| 国产乱码精品一区二区三| 日韩亚洲电影在线| 蜜臀久久久久久久| 欧美日产在线观看| 五月综合激情日本mⅴ| 欧美日韩和欧美的一区二区| 亚洲精品一二三区| 一本大道av伊人久久综合| 国产精品你懂的| eeuss鲁片一区二区三区在线观看| 久久免费午夜影院| 精品一区二区三区在线播放视频| 日韩欧美一级二级| 国产一区二区三区综合| 久久一区二区视频| 成人免费的视频| 国产精品天天摸av网| 成人av集中营| 亚洲欧美区自拍先锋| 日本道免费精品一区二区三区| 亚洲在线视频一区| 欧美精品一级二级三级| 日本在线播放一区二区三区| 日韩欧美国产三级电影视频| 国内精品免费**视频| 国产日本一区二区| 成人av在线影院| 亚洲黄色免费网站| 欧美久久久一区| 国产毛片精品国产一区二区三区| 久久久五月婷婷| www.亚洲色图.com| 亚洲国产精品久久不卡毛片| 91精品国产欧美一区二区| 国产麻豆午夜三级精品| 亚洲视频免费看| 欧美一区二区在线视频| 国产黄色91视频| 亚洲国产精品一区二区久久 | 九色|91porny| 国产精品国产a级| 9191精品国产综合久久久久久| 精品中文av资源站在线观看| 国产精品成人免费在线| 欧美一卡2卡3卡4卡| 成人h动漫精品| 日韩国产欧美在线播放| 国产精品色在线| 日韩一区二区在线免费观看| 成人a级免费电影| 日韩福利电影在线观看| 中文字幕五月欧美| 26uuu亚洲| 欧美三级在线看| av电影在线不卡| 国内成人精品2018免费看| 亚洲精品一二三四区| 国产精品麻豆一区二区 | 美腿丝袜亚洲综合| 有码一区二区三区| 国产女人18水真多18精品一级做 | 国产大片一区二区| 蜜臀a∨国产成人精品| 亚洲男女一区二区三区| 久久久影院官网| 欧美一区二区成人6969| 色婷婷久久久久swag精品 | 91成人免费电影| 国产精品123区| 免费在线观看成人| 亚州成人在线电影| 亚洲精品日韩一| 国产精品色哟哟| 国产欧美日韩在线| 久久影院午夜片一区| 91精品在线麻豆| 欧美高清www午色夜在线视频| 91麻豆国产在线观看| 成人性生交大片免费看在线播放| 日本不卡视频在线| 热久久国产精品| 肉肉av福利一精品导航| 视频一区视频二区中文| 午夜一区二区三区视频| 亚洲在线视频网站| 亚洲愉拍自拍另类高清精品| 亚洲三级电影全部在线观看高清| 国产精品家庭影院| 亚洲图片激情小说| 亚洲欧美色一区| 亚洲已满18点击进入久久| 亚洲美女视频一区| 亚洲小少妇裸体bbw| 亚洲国产人成综合网站| 亚洲图片自拍偷拍| 日韩精品欧美精品| 久久精品国产亚洲高清剧情介绍| 久久精品国产亚洲aⅴ| 国产精品一二三四| 91视频观看视频| 欧美性生活影院| 欧美大片拔萝卜| 欧美激情一区二区三区四区| 国产精品久久久一区麻豆最新章节| 国产精品污污网站在线观看| 亚洲欧美日韩国产综合| 三级精品在线观看| 国产精品亚洲人在线观看| 成人av网站大全| 欧美日韩国产乱码电影| 日韩精品一区二区在线| 欧美激情资源网| 亚洲成人av在线电影| 寂寞少妇一区二区三区| 丁香一区二区三区| 欧美性高清videossexo| 精品国产乱子伦一区| 亚洲人成网站在线| av在线综合网| 欧美三级视频在线观看| 2023国产精华国产精品| 亚洲欧美欧美一区二区三区| 蜜臀久久久99精品久久久久久| 岛国av在线一区| 欧美高清激情brazzers| 国产精品丝袜一区| 日本 国产 欧美色综合| jizzjizzjizz欧美| 欧美一级在线免费| 一二三区精品视频| 成人一级黄色片| 日韩欧美国产综合一区 | 精品久久久久久久久久久久久久久久久| 中文字幕乱码日本亚洲一区二区|