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

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

?? xcomppbm.asm

?? 視頻游戲開發C語言源程序
?? ASM
字號:
;-----------------------------------------------------------------------
; module XCOMPPBM
;
; This module contains only the compiler and sizeof routines --
; use the plotter from XCBITMAP.
;
;-----------------------------------------------------------------------

include xlib.inc
include xcomppbm.inc

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; _x_compile_pbm
;
; I only changed five instructions, instead of rewriting this
; for PBMs.  So it is amazingly inefficient.  But, what the hell,
; It's only a game :).
;

; accessory macros to save typing (what else?)
Emitb macro arg
	mov byte ptr es:[di],&arg&
	inc di
	endm

Emitw macro arg
	mov word ptr es:[di],&arg&
	add di,2
	endm

; opcodes emitted by _x_compile_pbm
ROL_AL          equ 0c0d0h              ; rol al
SHORT_STORE_8   equ 044c6h              ; mov [si]+disp8,  imm8
STORE_8         equ 084c6h              ; mov [si]+disp16, imm8
SHORT_STORE_16  equ 044c7h              ; mov [si]+disp8,  imm16
STORE_16        equ 084c7h              ; mov [si]+disp16, imm16
ADC_SI_IMMED    equ 0d683h              ; adc si,imm8
OUT_AL          equ 0eeh                ; out dx,al
RETURN          equ 0cbh                ; ret


.data

align 2
ColumnMask      db      011h,022h,044h,088h


.code

	align   2
_x_compile_pbm proc
ARG   logical_width:word,bitmap:dword,output:dword
LOCAL bwidth,scanx,scany,outputx,outputy,column,set_column,input_size:word=LocalStk
	push bp
	mov  bp, sp         ; caller's stack frame
	sub  sp,LocalStk    ; local space
	push si
	push di
	push ds

	mov word ptr [scanx],0
	mov word ptr [scany],0
	mov word ptr [outputx],0
	mov word ptr [outputy],0
	mov word ptr [column],0
	mov word ptr [set_column],0

	lds si,[bitmap]     ; 32-bit pointer to source bitmap

	les di,[output]     ; 32-bit pointer to destination stream

	lodsb               ; load width byte
	xor ah, ah          ; convert to word
	mov [bwidth], ax    ; save for future reference
	mov bl, al          ; copy width byte to bl
	lodsb               ; load height byte -- already a word since ah=0
	mul bl              ; mult height word by width byte
	mov [input_size], ax;  to get pixel total

@@MainLoop:
	mov bx, [scanx]     ; position in original bitmap
	add bx, [scany]

	mov al, [si+bx]     ; get pixel
	or  al, al          ; skip empty pixels
	jnz @@NoAdvance
	jmp @@Advance
@@NoAdvance:

	mov dx, [set_column]
	cmp dx, [column]
	je @@SameColumn
@@ColumnLoop:
	Emitw ROL_AL        ; emit code to move to new column
	Emitw ADC_SI_IMMED
	Emitb 0

	inc dx
	cmp dx, [column]
	jl @@ColumnLoop

	Emitb OUT_AL        ; emit code to set VGA mask for new column
	mov [set_column], dx
@@SameColumn:
	mov dx, [outputy]   ; calculate output position
	add dx, [outputx]
	sub dx, 128

	inc word ptr [scanx]
	mov cx, [scanx]     ; within four pixels of right edge?
	cmp cx, [bwidth]
	jge @@OnePixel

	inc word ptr [outputx]
	mov ah, [si+bx+1]   ; get second pixel
	or ah, ah
	jnz @@TwoPixels
@@OnePixel:
	cmp dx, 127         ; can we use shorter form?
	jg @@OnePixLarge
	cmp dx, -128
	jl @@OnePixLarge
	Emitw SHORT_STORE_8
	Emitb dl            ; 8-bit position in output
	jmp @@EmitOnePixel
@@OnePixLarge:
	Emitw STORE_8
	Emitw dx            ; position in output
@@EmitOnePixel:
	Emitb al
	jmp short @@Advance
@@TwoPixels:
	cmp dx, 127
	jg @@TwoPixLarge
	cmp dx, -128
	jl @@TwoPixLarge
	Emitw SHORT_STORE_16
	Emitb dl            ; 8-bit position in output
	jmp @@EmitTwoPixels
@@TwoPixLarge:
	Emitw STORE_16
	Emitw dx            ; position in output
@@EmitTwoPixels:
	Emitw ax

@@Advance:
	inc word ptr [outputx]
	mov ax, [scanx]
	inc ax
	cmp ax, [bwidth]
	jl @@AdvanceDone
	mov dx, [outputy]
	add dx, [logical_width]
	mov cx, [scany]
	add cx, [bwidth]
	cmp cx, [input_size]
	jl @@NoNewColumn
	inc word ptr [column]
	mov cx, [column]
	cmp cx, 4
	je @@Exit           ; Column 4: there is no column 4.
	xor cx, cx          ; scany and outputy are 0 again for
	mov dx, cx          ; the new column
	add si, [input_size]
@@NoNewColumn:
	mov [outputy], dx
	mov [scany], cx
	xor ax, ax
	mov word ptr [outputx], 0
@@AdvanceDone:
	mov [scanx], ax
	jmp @@MainLoop

@@Exit:
	Emitb RETURN
	mov ax,di
	sub ax,word ptr [output] ; size of generated code

	pop ds
	pop di
	pop si
	mov sp, bp
	pop bp

	ret
_x_compile_pbm endp


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; _x_sizeof_cpbm
;


	align   2
_x_sizeof_cpbm proc
ARG   logical_width:word,bitmap:dword
LOCAL bwidth,scanx,scany,outputx,outputy,column,set_column,input_size:word=LocalStk
	push bp
	mov  bp, sp         ; caller's stack frame
	sub  sp,LocalStk    ; local space
	push si
	push di
	push ds

	mov word ptr [scanx], 0
	mov word ptr [scany], 0
	mov word ptr [outputx], 0
	mov word ptr [outputy], 0
	mov word ptr [column], 0
	mov word ptr [set_column], 0

	lds si,[bitmap]     ; 32-bit pointer to source bitmap

	mov di, 1           ; initial size is just the size of the far RET

	lodsb               ; load width byte
	xor ah, ah          ; convert to word
	mov [bwidth], ax    ; save for future reference
	mov bl, al          ; copy width byte to bl
	lodsb               ; load height byte -- already a word since ah=0
	mul bl              ; mult height word by width byte
	mov [input_size], ax;  to get pixel total

@@MainLoop:
	mov bx, [scanx]     ; position in original bitmap
	add bx, [scany]

	mov al, [si+bx]     ; get pixel
	or  al, al          ; skip empty pixels
	jnz @@NoAdvance
	jmp @@Advance
@@NoAdvance:

	mov dx, [set_column]
	cmp dx, [column]
	je @@SameColumn
@@ColumnLoop:
	add di, 5           ; size of code to move to new column
	inc dx
	cmp dx,[column]
	jl @@ColumnLoop

	inc di              ; size of code to set VGA mask
	mov [set_column], dx
@@SameColumn:
	mov dx, [outputy]   ; calculate output position
	add dx, [outputx]
	sub dx, 128

	inc word ptr [scanx]
	mov cx, [scanx]     ; within four pixels of right edge?
	cmp cx, [bwidth]
	jge @@OnePixel

	inc word ptr [outputx]
	mov ah,[si+bx+1]    ; get second pixel
	or ah, ah
	jnz @@TwoPixels
@@OnePixel:
	cmp dx, 127         ; can we use shorter form?
	jg @@OnePixLarge
	cmp dx, -128
	jl @@OnePixLarge
	add di, 4           ; size of 8-bit position in output plus one pixel
	jmp @@EmitOnePixel
@@OnePixLarge:
	add di, 5           ; size of position in output plus one pixels
@@EmitOnePixel:
	jmp short @@Advance
@@TwoPixels:
	cmp dx, 127
	jg @@TwoPixLarge
	cmp dx, -128
	jl @@TwoPixLarge
	add di, 5           ; size of 8-bit position in output plus two pixels
	jmp @@EmitTwoPixels
@@TwoPixLarge:
	add di, 6           ; size of 16-bit position in output plus two pixels
@@EmitTwoPixels:

@@Advance:
	inc word ptr [outputx]
	mov ax, [scanx]
	inc ax
	cmp ax, [bwidth]
	jl @@AdvanceDone
	mov dx, [outputy]
	add dx, [logical_width]
	mov cx, [scany]
	add cx, [bwidth]
	cmp cx, [input_size]
	jl @@NoNewColumn
	inc word ptr [column]
	mov cx, [column]
	cmp cx, 4
	je @@Exit           ; Column 4: there is no column 4.
	xor cx,cx           ; scany and outputy are 0 again for
	mov dx,cx           ; the new column
	add si, [input_size]
@@NoNewColumn:
	mov [outputy], dx
	mov [scany], cx
	xor ax, ax
	mov word ptr [outputx], ax
@@AdvanceDone:
	mov [scanx], ax
	jmp @@MainLoop

@@Exit:
	mov ax, di          ; size of generated code

	pop ds
	pop di
	pop si
	mov sp,bp
	pop bp

	ret
_x_sizeof_cpbm endp

end

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区视频在线播放| 欧美精品一区二区三| 欧美aⅴ一区二区三区视频| 亚洲国产成人午夜在线一区| 精品视频免费在线| 国产99精品在线观看| 日韩国产欧美视频| 一区二区三区欧美日| 国产欧美日本一区二区三区| 日韩视频一区二区| 欧美视频中文字幕| www.久久久久久久久| 狠狠色丁香九九婷婷综合五月| 亚洲主播在线播放| 日韩毛片视频在线看| 久久久久久久久久美女| 91精品国产高清一区二区三区蜜臀 | 成人精品免费视频| 久久精品国产77777蜜臀| 亚洲777理论| 精品一区二区三区在线播放| 日本一区二区三级电影在线观看| 欧美日韩免费一区二区三区视频 | 一区二区三区在线观看视频| 91精品国产高清一区二区三区 | 亚洲va欧美va人人爽午夜| 国产精品久久久久久久第一福利| 久久综合网色—综合色88| 欧美精品在线观看播放| 欧洲精品中文字幕| av在线不卡电影| 成人激情免费网站| 成人av网在线| aaa亚洲精品一二三区| 成人av先锋影音| 国v精品久久久网| 成人激情图片网| av高清不卡在线| eeuss鲁片一区二区三区在线观看| 国产91在线看| 不卡一区中文字幕| 99精品国产视频| 色婷婷一区二区三区四区| 日本韩国欧美在线| 欧美亚洲国产怡红院影院| 97久久精品人人爽人人爽蜜臀| 高清视频一区二区| 91在线视频官网| 色久综合一二码| 欧美日韩国产一区二区三区地区| 69久久夜色精品国产69蝌蚪网| 678五月天丁香亚洲综合网| 日韩精品一区二区三区在线| xnxx国产精品| 人人狠狠综合久久亚洲| 蜜桃视频第一区免费观看| 九九热在线视频观看这里只有精品| 精东粉嫩av免费一区二区三区| 狠狠色丁香久久婷婷综合丁香| 国产精品1区2区3区在线观看| 大美女一区二区三区| 色综合婷婷久久| 欧美日韩高清一区二区三区| 欧美一区二区视频免费观看| 国产亚洲欧美日韩在线一区| 国产精品短视频| 亚洲二区在线视频| 精品一区二区免费| youjizz久久| 欧美人伦禁忌dvd放荡欲情| 精品久久久三级丝袜| 国产精品久久久久永久免费观看| 亚洲女女做受ⅹxx高潮| 日日噜噜夜夜狠狠视频欧美人| 韩国精品一区二区| 91色婷婷久久久久合中文| 欧美日韩国产小视频| 久久久高清一区二区三区| 一区二区三区在线观看网站| 久久草av在线| 91激情五月电影| 日韩欧美区一区二| 亚洲欧美另类小说| 蜜臀久久99精品久久久画质超高清 | 全国精品久久少妇| 北岛玲一区二区三区四区| 欧美精品在线观看播放| 国产精品免费视频观看| 日韩国产高清影视| www.视频一区| 欧美mv日韩mv| 亚洲一二三区在线观看| 国产精品一区不卡| 欧美乱妇一区二区三区不卡视频| 欧美激情一区二区三区全黄| 日韩高清欧美激情| 99国产精品国产精品毛片| 日韩精品一区二区三区老鸭窝| 亚洲精品国产无天堂网2021 | 欧美96一区二区免费视频| 91亚洲午夜精品久久久久久| 精品国产人成亚洲区| 亚洲女子a中天字幕| 国产成人亚洲精品青草天美| 欧美高清性hdvideosex| 亚洲日本欧美天堂| 国产91高潮流白浆在线麻豆| 欧美一区三区二区| 一区二区日韩av| 91在线免费看| 国产女同性恋一区二区| 国内成人精品2018免费看| 欧美精品日韩精品| 亚洲国产视频一区| 在线精品观看国产| 亚洲免费观看在线观看| av在线一区二区三区| 欧美国产精品一区二区三区| 极品瑜伽女神91| 欧美大片在线观看| 狂野欧美性猛交blacked| 欧美日韩精品欧美日韩精品一 | 久久er99热精品一区二区| 亚洲一区二区av电影| 麻豆精品一二三| 欧美成人精品福利| 男女视频一区二区| 制服丝袜一区二区三区| 亚洲永久免费av| 成人精品免费视频| 欧美精品黑人性xxxx| 日韩高清不卡在线| 在线免费一区三区| 日韩一区日韩二区| 日本视频免费一区| 欧美岛国在线观看| 免费的成人av| 91精品国产欧美日韩| 五月天激情综合| 日韩一区二区三区三四区视频在线观看| 亚洲精品国产a| 色综合av在线| 亚洲精品伦理在线| 成人午夜免费视频| 日本一区二区三区电影| 国产成人鲁色资源国产91色综| 精品国产自在久精品国产| 亚洲精品国产a久久久久久| 欧美日韩在线播放一区| 亚洲一区二区三区四区在线免费观看| yourporn久久国产精品| 中文乱码免费一区二区| 国产69精品久久777的优势| 久久精品一区二区三区四区| 国产伦精品一区二区三区在线观看| 欧美大片在线观看一区| 黄色精品一二区| 中文字幕日本乱码精品影院| av亚洲精华国产精华| 亚洲色图清纯唯美| 91成人国产精品| 久久99精品国产91久久来源| 2020国产精品久久精品美国| 国产精品1区2区3区| 国产精品美女久久久久久久久久久| 大尺度一区二区| 亚洲欧美一区二区不卡| 欧美在线一区二区三区| 亚洲大片精品永久免费| 99精品久久99久久久久| 天天亚洲美女在线视频| 欧美午夜电影在线播放| 午夜视频在线观看一区| 91精品国产品国语在线不卡| 日韩电影一区二区三区| 精品毛片乱码1区2区3区| 97久久人人超碰| 亚洲国产日韩a在线播放| 日韩一级精品视频在线观看| 九色|91porny| 亚洲精品成人悠悠色影视| 911精品国产一区二区在线| 久久99精品视频| 国产精品视频线看| 欧美精品v日韩精品v韩国精品v| 婷婷成人激情在线网| 精品国产伦一区二区三区观看方式 | 精品三级av在线| 成人av网站在线观看| 一区二区日韩电影| 国产拍欧美日韩视频二区| 色久优优欧美色久优优| 蜜臀91精品一区二区三区 | 亚洲人成亚洲人成在线观看图片| 日本精品裸体写真集在线观看| 奇米影视一区二区三区小说| 精品成人在线观看| 欧美精品777| av爱爱亚洲一区| 蜜臀a∨国产成人精品|