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

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

?? h_ldiv.asm

?? Wolf 3D official source code.
?? ASM
字號:
;[]-----------------------------------------------------------------[]
;|      H_LDIV.ASM -- long division routine                          |
;|                                                                   |
;|      C/C++ Run Time Library        Version 4.0                    |
;|                                                                   |
;|      Copyright (c) 1987, 1991 by Borland International Inc.       |
;|      All Rights Reserved.                                         |
;[]-----------------------------------------------------------------[]
.model medium
	INCLUDE RULES.ASI
.386C   ;JAB - we use 386 instructions

_TEXT   segment public byte 'CODE'
	assume  cs:_TEXT
	public  LDIV@
	public  F_LDIV@
	public  N_LDIV@
	public  LUDIV@
	public  F_LUDIV@
		public  N_LUDIV@
	public  LMOD@
	public  F_LMOD@
		public  N_LMOD@
	public  LUMOD@
	public  F_LUMOD@
		public  N_LUMOD@

N_LDIV@:
		pop     cx                      ;fix up far return
		push    cs
		push    cx
LDIV@:
F_LDIV@:
	xor     cx,cx                   ; signed divide
	jmp     short common

;       JAB
;
;       If we're using a 386 or better, the two instructions above get patched
;               to be NOP's (4 of them). So, instead of using the looping code,
;               we use the 386's long divide instruction.
;
;       The stack after setting up the stack frame:
;               12[bp]: divisor (high word)
;               10[bp]: divisor (low word)
;                8[bp]: dividend (high word)
;                6[bp]: dividend (low word)
;                4[bp]: return CS
;                2[bp]: return IP
;                0[bp]: previous BP
;
	IDEAL

	push bp
	mov     bp,sp   ;Save BP, and set it equal to stack

	mov     eax,[DWORD PTR bp+6]
	cdq
	idiv [DWORD PTR bp+10]
	mov     edx,eax
	shr     edx,16

	pop     bp              ;Restore BP
	retf    8       ;Return to original caller

	MASM

N_LUDIV@:
		pop     cx                      ;fix up far return
		push    cs
		push    cx
LUDIV@:
F_LUDIV@:
	mov     cx,1                    ; unsigned divide
	jmp     short common

N_LMOD@:
		pop     cx                      ;fix up far return
		push    cs
		push    cx
LMOD@:
F_LMOD@:
	mov     cx,2                    ; signed remainder
	jmp     short   common

N_LUMOD@:
		pop     cx                      ;fix up far return
		push    cs
		push    cx
LUMOD@:
F_LUMOD@:
	mov     cx,3                    ; unsigned remainder

;
;       di now contains a two bit control value.  The low order
;       bit (test mask of 1) is on if the operation is unsigned,
;       signed otherwise.  The next bit (test mask of 2) is on if
;       the operation returns the remainder, quotient otherwise.
;
common:
	push    bp
	push    si
	push    di
	mov     bp,sp                   ; set up frame
	mov     di,cx
;
;       dividend is pushed last, therefore the first in the args
;       divisor next.
;
	mov     ax,10[bp]               ; get the first low word
	mov     dx,12[bp]               ; get the first high word
	mov     bx,14[bp]               ; get the second low word
	mov     cx,16[bp]               ; get the second high word

	or      cx,cx
	jnz     slow@ldiv               ; both high words are zero

	or      dx,dx
	jz      quick@ldiv

	or      bx,bx
	jz      quick@ldiv              ; if cx:bx == 0 force a zero divide
					; we don't expect this to actually
					; work

slow@ldiv:

	test    di,1                    ; signed divide?
	jnz     positive                ; no: skip
;
;               Signed division should be done.  Convert negative
;               values to positive and do an unsigned division.
;               Store the sign value in the next higher bit of
;               di (test mask of 4).  Thus when we are done, testing
;               that bit will determine the sign of the result.
;
	or      dx,dx                   ; test sign of dividend
	jns     onepos
	neg     dx
	neg     ax
	sbb     dx,0                    ; negate dividend
	or      di,0Ch
onepos:
	or      cx,cx                   ; test sign of divisor
	jns     positive
	neg     cx
	neg     bx
	sbb     cx,0                    ; negate divisor
	xor     di,4
positive:
	mov     bp,cx
	mov     cx,32                   ; shift counter
	push    di                      ; save the flags
;
;       Now the stack looks something like this:
;
;               16[bp]: divisor (high word)
;               14[bp]: divisor (low word)
;               12[bp]: dividend (high word)
;               10[bp]: dividend (low word)
;                8[bp]: return CS
;                6[bp]: return IP
;                4[bp]: previous BP
;                2[bp]: previous SI
;                 [bp]: previous DI
;               -2[bp]: control bits
;                       01 - Unsigned divide
;                       02 - Remainder wanted
;                       04 - Negative quotient
;                       08 - Negative remainder
;
	xor     di,di                   ; fake a 64 bit dividend
	xor     si,si                   ;
xloop:
	shl     ax,1                    ; shift dividend left one bit
	rcl     dx,1
	rcl     si,1
	rcl     di,1
	cmp     di,bp                   ; dividend larger?
	jb      nosub
	ja      subtract
	cmp     si,bx                   ; maybe
	jb      nosub
subtract:
	sub     si,bx
	sbb     di,bp                   ; subtract the divisor
	inc     ax                      ; build quotient
nosub:
	loop    xloop
;
;       When done with the loop the four register value look like:
;
;       |     di     |     si     |     dx     |     ax     |
;       |        remainder        |         quotient        |
;
	pop     bx                      ; get control bits
	test    bx,2                    ; remainder?
	jz      usequo
	mov     ax,si
	mov     dx,di                   ; use remainder
	shr     bx,1                    ; shift in the remainder sign bit
usequo:
	test    bx,4                    ; needs negative
	jz      finish
	neg     dx
	neg     ax
	sbb     dx,0                    ; negate
finish:
	pop     di
	pop     si
	pop     bp
	retf    8

quick@ldiv:
	div     bx                      ; unsigned divide
					; DX = remainder AX = quotient
	test    di,2                    ; want remainder?
	jz      quick@quo
		xchg    ax,dx

quick@quo:

	xor     dx,dx
		jmp     short finish

_TEXT   ends
	end

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品精品欲导航| 久久综合久久久久88| 蜜臀va亚洲va欧美va天堂| 国产欧美一区二区在线观看| 欧美优质美女网站| 国产乱码一区二区三区| 天天做天天摸天天爽国产一区| 久久女同精品一区二区| 欧美日韩在线免费视频| 成人激情免费网站| 狂野欧美性猛交blacked| 一区二区三区成人在线视频| 中文一区二区在线观看| 欧美不卡视频一区| 欧美日韩国产片| 91免费观看国产| 国产精品69毛片高清亚洲| 日韩精品国产欧美| 亚洲午夜久久久久久久久电影院 | 精品国产髙清在线看国产毛片 | 亚洲精品一线二线三线| 欧美精品久久久久久久多人混战| 波多野结衣一区二区三区| 久久爱另类一区二区小说| 亚洲伊人伊色伊影伊综合网| 国产色一区二区| 亚州成人在线电影| 国产三级精品视频| 国产无遮挡一区二区三区毛片日本| 日韩欧美中文一区二区| 在线电影一区二区三区| 欧美亚洲国产一区二区三区| 在线视频亚洲一区| 欧美在线观看视频在线| 精品视频一区二区不卡| 欧美午夜免费电影| 欧美日韩精品综合在线| 精品视频全国免费看| 欧美夫妻性生活| 欧美一区二区视频在线观看2022| 8x8x8国产精品| 欧美一区二区三区在线视频| 日韩欧美你懂的| 精品入口麻豆88视频| 欧美va亚洲va在线观看蝴蝶网| 欧美一级淫片007| 精品国产sm最大网站免费看| 亚洲精品一区二区三区精华液| 久久久久国产免费免费| 国产精品视频线看| 中文字幕一区二区三区不卡在线 | 欧美一级久久久久久久大片| 欧美大片在线观看| 国产拍揄自揄精品视频麻豆| 中文字幕日韩av资源站| 亚洲一区免费在线观看| 午夜久久久久久电影| 免费成人性网站| 国产一区二区三区精品视频| 福利电影一区二区三区| 色综合久久久网| 色综合天天狠狠| 国产精一品亚洲二区在线视频| 成人性生交大片| 色偷偷久久一区二区三区| 欧美午夜在线观看| 精品国产亚洲在线| 日韩一区在线看| 日韩精品一区第一页| 国产电影一区二区三区| 色av成人天堂桃色av| 日韩一卡二卡三卡| 中文字幕不卡一区| 三级一区在线视频先锋| 国产精品资源站在线| 在线观看一区二区精品视频| 精品国产欧美一区二区| 自拍偷拍亚洲激情| 麻豆精品精品国产自在97香蕉| 国产精品亚洲一区二区三区在线| 91最新地址在线播放| 欧美一级久久久| 亚洲精品一二三四区| 美女精品自拍一二三四| 色悠悠久久综合| 2014亚洲片线观看视频免费| 亚洲欧美日韩国产综合在线| 麻豆中文一区二区| a级精品国产片在线观看| 91精品欧美福利在线观看| 日韩久久一区二区| 久久精品99国产精品| 欧美日韩在线一区二区| 国产精品入口麻豆九色| 免费一级片91| 在线视频综合导航| 国产午夜精品一区二区三区四区| 午夜精品久久久久久久久久久| 成人中文字幕电影| 日韩午夜在线观看视频| 亚洲综合激情网| 成人高清免费观看| 精品国产麻豆免费人成网站| 亚洲一区在线观看免费观看电影高清 | 五月激情六月综合| av电影天堂一区二区在线| 精品91自产拍在线观看一区| 亚洲国产精品久久久久秋霞影院 | 一区二区三区高清| jiyouzz国产精品久久| 欧美大片一区二区| 日本不卡在线视频| 在线观看日韩高清av| 亚洲欧洲另类国产综合| 国产美女精品人人做人人爽| 欧美一区二区三区日韩| 亚洲高清视频在线| 欧洲一区二区三区免费视频| 亚洲男同性恋视频| 成人aaaa免费全部观看| 欧美激情一区二区在线| 国产一区二区三区精品欧美日韩一区二区三区 | 五月激情综合婷婷| 在线一区二区观看| 亚洲另类一区二区| av电影在线观看不卡| 亚洲欧洲日韩av| 99国产精品久久久| 亚洲同性gay激情无套| 成人av在线资源网站| 久久久久综合网| 粉嫩久久99精品久久久久久夜| 久久久噜噜噜久久中文字幕色伊伊| 日本不卡免费在线视频| 欧美一二三区在线观看| 日本不卡一区二区三区高清视频| 欧美日韩国产一区| 日韩精品高清不卡| 精品日产卡一卡二卡麻豆| 久久精品久久99精品久久| 91精品国产欧美日韩| 捆绑调教一区二区三区| 久久综合网色—综合色88| 国产不卡在线一区| 亚洲私人黄色宅男| 欧美日韩免费在线视频| 婷婷中文字幕一区三区| 日韩欧美久久久| 国产专区欧美精品| 国产视频亚洲色图| jiyouzz国产精品久久| 一级精品视频在线观看宜春院| 91国内精品野花午夜精品| 亚洲va欧美va国产va天堂影院| 欧美精品成人一区二区三区四区| 日本欧美一区二区| 久久亚洲精品国产精品紫薇| 成人久久视频在线观看| 亚洲精品少妇30p| 欧美一区二区三区人| 国产精品亚洲专一区二区三区| 中文字幕一区三区| 欧美肥妇free| 国产白丝精品91爽爽久久| 亚洲精品欧美二区三区中文字幕| 精品视频一区二区三区免费| 精品一区二区三区在线观看国产| 欧美激情一区在线| 欧美乱妇15p| 国产精品888| 亚洲h在线观看| 国产午夜精品一区二区| 91在线视频免费91| 麻豆精品视频在线| 《视频一区视频二区| 69精品人人人人| 成人一区在线观看| 国产成人免费在线观看| 韩国欧美国产1区| 亚洲色图制服丝袜| 4438x亚洲最大成人网| 久久99热这里只有精品| 亚洲精品视频免费看| 精品99999| 欧美日韩激情一区| 成人做爰69片免费看网站| 偷窥国产亚洲免费视频| 国产精品国产精品国产专区不蜜 | 成人精品小蝌蚪| 亚洲一二三区在线观看| 2021国产精品久久精品| 精品视频免费看| 99re成人精品视频| 久久精品72免费观看| 亚洲精品久久嫩草网站秘色| 久久久91精品国产一区二区精品| 欧美精品九九99久久| 日本韩国欧美一区| 成人网男人的天堂| 国产一区二区看久久|