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

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

?? blocks.inc

?? 一個用純匯編 寫的操作系統 源代碼 是用 TASM 編譯器寫的
?? INC
字號:

; Assembly Editor core
; Copyright (c) 2001-2006, Tomasz Grysztar.
; All rights reserved.

insert_block:
	test	[editor_mode],AEMODE_VERTICALSEL
	jz	block_to_insert_ok
	push	esi
	or	edx,-1
	xor	ecx,ecx
    count_line_characters:
	lodsb
	cmp	al,9
	je	cannot_insert
	cmp	al,0Dh
	je	count_next_line
	or	al,al
	jz	end_of_line
	inc	ecx
	jmp	count_line_characters
    end_of_line:
	dec	esi
	jmp	check_block_width
    count_next_line:
	lodsb
	cmp	al,0Ah
	je	check_block_width
	dec	esi
    check_block_width:
	cmp	edx,-1
	je	line_to_insert_ok
	cmp	edx,ecx
	je	line_to_insert_ok
    cannot_insert:
	pop	esi
	stc
	retn
    line_to_insert_ok:
	mov	edx,ecx
	xor	ecx,ecx
	cmp	byte [esi],0
	jne	count_line_characters
	pop	esi
    block_to_insert_ok:
	mov	eax,[caret_line]
	mov	ecx,[caret_line_number]
	mov	edx,[caret_position]
	mov	[selection_line],eax
	mov	[selection_line_number],ecx
	mov	[selection_position],edx
	mov	ebx,esi
    get_line_to_insert:
	lodsb
	or	al,al
	jz	insert_full_line
	cmp	al,0Dh
	je	insert_full_line
	cmp	al,0Ah
	je	insert_full_line
	cmp	al,9
	jne	get_line_to_insert
	push	esi
	dec	esi
	mov	ecx,esi
	sub	ecx,ebx
	mov	esi,ebx
	push	ecx
	call	insert_into_line
	pop	ecx
	add	[caret_position],ecx
	mov	ecx,[caret_position]
	and	ecx,not 111b
	sub	ecx,[caret_position]
	add	ecx,8
	xor	esi,esi
	push	ecx
	call	insert_into_line
	pop	ecx
	add	[caret_position],ecx
	pop	esi
	mov	ebx,esi
	jmp	get_line_to_insert
    insert_full_line:
	dec	esi
	push	esi
	mov	ecx,esi
	sub	ecx,ebx
	mov	esi,ebx
	push	ecx
	call	insert_into_line
	pop	ecx
	add	[caret_position],ecx
	pop	esi
	lodsb
	or	al,al
	jz	last_line_inserted
	cmp	al,0Ah
	je	lf_first
	lodsb
	cmp	al,0Ah
	je	next_line_to_insert
	dec	esi
	jmp	next_line_to_insert
    lf_first:
	lodsb
	cmp	al,0Dh
	je	next_line_to_insert
	dec	esi
    next_line_to_insert:
	mov	ebx,[selection_position]
	test	[editor_mode],AEMODE_VERTICALSEL
	jnz	insert_in_next_line
	test	[editor_mode],AEMODE_OVERWRITE
	jz	insert_new_line
	push	esi
	call	clear_rest_of_line
	pop	esi
	xor	ebx,ebx
    insert_in_next_line:
	push	esi ebx
	mov	esi,[caret_line]
	call	check_line_length
	pop	ebx
	call	go_to_next_line
	pop	esi
	mov	ebx,esi
	jmp	get_line_to_insert
    last_line_inserted:
	mov	esi,[caret_line]
	call	check_line_length
	clc
	retn
    insert_new_line:
	push	esi
	push	[caret_line]
	push	[caret_line_number]
	xor	ebx,ebx
	call	break_line
	pop	[caret_line_number] ebx esi
	push	[caret_line]
	mov	[caret_line],ebx
    go_to_end_of_first_line:
	test	byte [ebx],1
	jz	insert_full_lines
	mov	ebx,[ebx]
	dec	ebx
	jmp	go_to_end_of_first_line
    insert_full_lines:
	call	allocate_segment
	jc	memory_shortage
	call	store_free_segment_for_undo
	mov	[ebx],eax
	mov	ebx,eax
	mov	eax,[caret_line]
	mov	[ebx+4],eax
	mov	[caret_line],ebx
	inc	[caret_line_number]
	inc	[lines_count]
	call	set_line
	jnc	insert_full_lines
	pop	edi
	mov	eax,[caret_line]
	mov	[edi+4],eax
	mov	[ebx],edi
	call	cut_line_break
	mov	esi,[caret_line]
	call	check_line_length
	clc
	retn
  set_line:
	mov	edi,ebx
	add	edi,SEGMENT_HEADER_LENGTH
	mov	ecx,SEGMENT_DATA_LENGTH
	mov	[caret_position],0
	push	ebx
    copy_line:
	lodsb
	or	al,al
	jz	last_line_set
	cmp	al,0Ah
	je	copy_lf
	cmp	al,0Dh
	je	copy_cr
	cmp	al,9
	je	copy_tab
    set_character:
	stosb
	loop	copy_line
    extra_segment:
	call	allocate_segment
	jc	memory_shortage
	call	store_free_segment_for_undo
	mov	edi,eax
	or	eax,1
	mov	[ebx],eax
	or	ebx,1
	mov	[edi+4],ebx
	mov	ebx,edi
	add	edi,SEGMENT_HEADER_LENGTH
	mov	ecx,SEGMENT_DATA_LENGTH
	add	[caret_position],ecx
	jmp	copy_line
    copy_tab:
	mov	al,20h
	mov	edx,SEGMENT_DATA_LENGTH
	sub	edx,ecx
	add	edx,[caret_position]
	and	edx,111b
	cmp	edx,111b
	je	set_character
	dec	esi
	jmp	set_character
    copy_lf:
	cmp	byte [esi],0Dh
	jne	copy_new_line
	inc	esi
	jmp	copy_new_line
    copy_cr:
	cmp	byte [esi],0Ah
	jne	copy_new_line
	inc	esi
    copy_new_line:
	pop	edx
	call	finish_line
	clc
	retn
    last_line_set:
	pop	edx
	call	finish_line
	stc
	retn
    finish_line:
	mov	eax,SEGMENT_DATA_LENGTH
	sub	eax,ecx
	add	eax,[caret_position]
	mov	[caret_position],eax
	mov	[edx+8],eax
	call	register_length
	mov	al,20h
	rep	stosb
	retn

delete_block:
	test	[editor_mode],AEMODE_VERTICALSEL
	jnz	delete_vertical_block
	mov	eax,[caret_line_number]
	cmp	eax,[selection_line_number]
	je	delete_vertical_block
	mov	esi,[caret_line]
	mov	ecx,[caret_line_number]
	mov	edx,[caret_position]
	cmp	ecx,[selection_line_number]
	jbe	position_for_deleting_ok
	xchg	esi,[selection_line]
	xchg	ecx,[selection_line_number]
	xchg	edx,[selection_position]
	mov	[caret_line],esi
	mov	[caret_line_number],ecx
	mov	[caret_position],edx
    position_for_deleting_ok:
	test	[editor_mode],AEMODE_OVERWRITE
	jnz	clear_block
	call	get_caret_segment
	cmp	edx,SEGMENT_DATA_LENGTH
	jb	first_line_of_block
	call	attach_empty_segments
    first_line_of_block:
	mov	ecx,[caret_position]
	sub	ecx,edx
    skip_rest_of_first_line:
	add	ecx,SEGMENT_DATA_LENGTH
	mov	eax,[esi]
	btr	eax,0
	jnc	end_of_first_line
	mov	esi,eax
	jmp	skip_rest_of_first_line
    end_of_first_line:
	call	store_segment_for_undo
	mov	edi,esi
	mov	esi,eax
    remove_middle_lines:
	cmp	esi,[selection_line]
	je	middle_lines_removed
	call	store_segment_for_undo
	or	ebx,-1
	xchg	[esi],ebx
	inc	[released_segments]
	call	cancel_line
	mov	esi,ebx
	btr	esi,0
	jnc	remove_middle_lines
    remove_middle_line_segments:
	call	store_segment_for_undo
	or	eax,-1
	xchg	[esi],eax
	inc	[released_segments]
	mov	esi,eax
	btr	esi,0
	jc	remove_middle_line_segments
	jmp	remove_middle_lines
    middle_lines_removed:
	call	store_segment_for_undo
	mov	eax,esi
	or	eax,1
	mov	[edi],eax
	mov	eax,edi
	or	eax,1
	mov	[esi+4],eax
	call	cancel_line
	add	ecx,[selection_position]
	sub	ecx,[caret_position]
	call	delete_from_line
	mov	esi,[caret_line]
	call	check_line_length
	mov	esi,[esi]
	or	esi,esi
	jz	block_deleted
	call	store_segment_for_undo
	mov	eax,[caret_line]
	mov	[esi+4],eax
    block_deleted:
	retn
    clear_block:
	push	[caret_line] [caret_position]
    clear_lines:
	call	clear_rest_of_line
	mov	[caret_line],esi
	mov	[caret_position],0
	cmp	esi,[selection_line]
	jne	clear_lines
	mov	ecx,[selection_position]
	call	clear_in_line
	pop	[caret_position] [caret_line]
	retn
    delete_vertical_block:
	push	[caret_line]
	push	[caret_line_number]
	mov	eax,[caret_position]
	cmp	eax,[selection_position]
	jbe	delete_vertical_block_line
	xchg	eax,[selection_position]
	mov	[caret_position],eax
    delete_vertical_block_line:
	mov	ecx,[selection_position]
	sub	ecx,[caret_position]
	call	delete_from_line
	mov	esi,[caret_line]
	call	check_line_length
	mov	esi,[caret_line]
	mov	eax,[caret_line_number]
	cmp	eax,[selection_line_number]
	je	vertical_block_deleted
	ja	delete_in_previous_line
    delete_in_next_line:
	mov	esi,[esi]
	btr	esi,0
	jc	delete_in_next_line
	mov	[caret_line],esi
	inc	[caret_line_number]
	jmp	delete_vertical_block_line
    delete_in_previous_line:
	mov	esi,[esi+4]
	mov	[caret_line],esi
	dec	[caret_line_number]
	jmp	delete_vertical_block_line
    vertical_block_deleted:
	pop	[caret_line_number]
	pop	[caret_line]
	mov	[selection_line],0
	retn

get_block_length:
	test	[editor_mode],AEMODE_VERTICALSEL
	jnz	get_length_of_vertical_block
	mov	esi,[caret_line]
	mov	edx,[caret_position]
	mov	ebx,[selection_line]
	mov	ecx,[selection_position]
	mov	eax,[caret_line_number]
	cmp	eax,[selection_line_number]
	je	get_length_of_vertical_block
	jb	get_length_of_standard_block
	xchg	esi,ebx
	xchg	ecx,edx
    get_length_of_standard_block:
	push	ecx
	mov	ecx,[esi+8]
	sub	ecx,edx
	jae	add_length_of_line
	xor	ecx,ecx
    add_length_of_line:
	add	ecx,2
	add	[esp],ecx
    skip_standard_block_line:
	mov	esi,[esi]
	btr	esi,0
	jc	skip_standard_block_line
	cmp	esi,ebx
	je	length_of_block_ok
	mov	ecx,[esi+8]
	jmp	add_length_of_line
    length_of_block_ok:
	pop	ecx
	retn
    get_length_of_vertical_block:
	mov	edx,[caret_line_number]
	sub	edx,[selection_line_number]
	jae	vertical_dimension_ok
	neg	edx
    vertical_dimension_ok:
	mov	eax,[caret_position]
	sub	eax,[selection_position]
	jae	horizontal_dimension_ok
	neg	eax
    horizontal_dimension_ok:
	mov	ecx,eax
	add	eax,2
	mul	edx
	add	ecx,eax
	retn

copy_block:
	test	[editor_mode],AEMODE_VERTICALSEL
	jnz	copy_vertical_block
	mov	esi,[caret_line]
	mov	edx,[caret_position]
	mov	ebx,[selection_line]
	mov	ecx,[selection_position]
	mov	eax,[caret_line_number]
	cmp	eax,[selection_line_number]
	je	copy_vertical_block
	jb	copy_standard_block
	xchg	esi,ebx
	xchg	ecx,edx
    copy_standard_block:
	push	ecx
	push	ebx
	mov	ecx,[esi+8]
	sub	ecx,edx
	jb	block_line_copied
	call	copy_from_line
    block_line_copied:
	pop	ebx
    copy_next_line:
	mov	ax,0A0Dh
	stosw
	cmp	esi,ebx
	je	copy_from_last_line
	push	ebx
	mov	ecx,[esi+8]
	xor	edx,edx
	call	copy_from_line
	pop	ebx
	jmp	copy_next_line
    copy_from_last_line:
	pop	ecx
	xor	edx,edx
	call	copy_from_line
	xor	al,al
	stosb
	retn
    copy_vertical_block:
	mov	esi,[caret_line]
	mov	ebx,[selection_line]
	mov	edx,[caret_position]
	mov	ecx,[selection_position]
	mov	eax,[caret_line_number]
	cmp	eax,[selection_line_number]
	jbe	vertical_block_starting_line_ok
	xchg	esi,ebx
    vertical_block_starting_line_ok:
	cmp	edx,ecx
	jbe	vertical_block_starting_position_ok
	xchg	edx,ecx
    vertical_block_starting_position_ok:
	sub	ecx,edx
    copy_line_from_vertical_block:
	mov	eax,ebx
	sub	eax,esi
	push	eax ebx ecx edx
	call	copy_from_line
	pop	edx ecx ebx eax
	or	eax,eax
	jz	vertical_block_copied
	mov	ax,0A0Dh
	stosw
	jmp	copy_line_from_vertical_block
    vertical_block_copied:
	xor	al,al
	stosb
	retn
  copy_from_line:
	mov	ebx,ecx
    find_copying_origin:
	cmp	edx,SEGMENT_DATA_LENGTH
	jb	copy_line_segment
	mov	esi,[esi]
	btr	esi,0
	jnc	line_data_ended
	sub	edx,SEGMENT_DATA_LENGTH
	jmp	find_copying_origin
    copy_line_segment:
	mov	ecx,SEGMENT_DATA_LENGTH
	sub	ecx,edx
	cmp	ebx,ecx
	jae	line_segment_length_ok
	mov	ecx,ebx
    line_segment_length_ok:
	sub	ebx,ecx
	mov	eax,[esi]
	lea	esi,[esi+SEGMENT_HEADER_LENGTH+edx]
	rep	movsb
	mov	esi,eax
	btr	esi,0
	jnc	line_data_ended
	xor	edx,edx
	jmp	copy_line_segment
    line_data_ended:
	or	ebx,ebx
	jz	line_copy_done
	mov	ecx,ebx
	mov	al,20h
	rep	stosb
    line_copy_done:
	retn

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久91精品久久久久久秒播| 一区二区三区在线视频观看58| 91色综合久久久久婷婷| 国产露脸91国语对白| 麻豆91免费看| 狠狠狠色丁香婷婷综合久久五月| 久久精品久久99精品久久| 免费人成精品欧美精品| 老司机午夜精品| 狠狠色丁香婷综合久久| 国产91丝袜在线播放九色| 不卡av在线免费观看| 91同城在线观看| 欧美丝袜丝nylons| 91精品国产综合久久福利 | 91精品国产综合久久蜜臀| 欧美三级日韩三级| 日韩三级视频在线看| 2019国产精品| ㊣最新国产の精品bt伙计久久| 综合久久给合久久狠狠狠97色| 亚洲精品日韩综合观看成人91| 五月天中文字幕一区二区| 久久不见久久见免费视频7| 成人性视频网站| 欧美日韩一区二区在线视频| 2024国产精品| 亚洲婷婷在线视频| 免费看日韩a级影片| 国产成人在线看| 欧美久久久久久久久中文字幕| 日韩欧美国产一区二区三区 | 日韩欧美成人午夜| 国产精品免费免费| 亚洲一卡二卡三卡四卡五卡| 国模娜娜一区二区三区| 色综合天天综合网天天看片| 日韩精品影音先锋| 中文字幕视频一区二区三区久| 水蜜桃久久夜色精品一区的特点| 国产精品亚洲午夜一区二区三区| 欧美主播一区二区三区美女| 久久色视频免费观看| 一区二区成人在线视频| 国产精品一区二区无线| 欧美放荡的少妇| 亚洲欧美一区二区三区极速播放| 久久av中文字幕片| 在线观看91精品国产麻豆| 国产精品你懂的在线欣赏| 精品一区二区三区的国产在线播放 | 日韩精品一区二区三区老鸭窝 | 欧美日韩视频在线一区二区| 国产偷国产偷精品高清尤物| 日本免费新一区视频| 91福利精品第一导航| 国产精品每日更新| 国产成人综合在线| 日韩欧美中文字幕一区| 五月婷婷综合在线| 欧美日韩免费视频| 一区二区三区不卡在线观看| 成人黄色网址在线观看| 久久蜜桃香蕉精品一区二区三区| 天天影视色香欲综合网老头| 色88888久久久久久影院按摩 | 天天操天天干天天综合网| 色婷婷综合久色| 亚洲女爱视频在线| 91丝袜美女网| 综合激情网...| 91老师国产黑色丝袜在线| 国产精品久久久久久久午夜片 | 欧美日韩一级片在线观看| 亚洲夂夂婷婷色拍ww47| 在线观看一区不卡| 亚洲国产精品久久久久秋霞影院| 欧美亚洲禁片免费| 亚洲成人av中文| 欧美一区二区精品在线| 喷水一区二区三区| 精品对白一区国产伦| 国产乱码精品一区二区三区忘忧草| 亚洲精品一线二线三线无人区| 免费欧美在线视频| 久久久久久久久久久久久夜| 国产99久久久久久免费看农村| 欧美精品一区二区久久久| 国产成人精品一区二区三区四区| 中文字幕视频一区| 欧美美女黄视频| 免费成人结看片| 26uuu另类欧美| 成人av电影免费观看| 亚洲激情图片一区| 欧美一级久久久| 成人午夜视频福利| 亚洲一区二区欧美日韩| 日韩精品一区二区三区swag| 粉嫩一区二区三区在线看| 亚洲小说欧美激情另类| 欧美成人性战久久| 91在线精品秘密一区二区| 亚洲18色成人| 中文字幕欧美激情| 欧美日韩国产a| 国产成人综合网站| 日韩中文字幕av电影| 久久久www成人免费毛片麻豆| 一本一道波多野结衣一区二区| 调教+趴+乳夹+国产+精品| 国产亚洲综合在线| 欧美色图天堂网| 精品一区二区三区不卡| 亚洲一区二区三区中文字幕在线| 精品国产a毛片| 欧美日韩国产美女| 成人黄页在线观看| 老司机免费视频一区二区三区| 国产精品卡一卡二卡三| 精品入口麻豆88视频| 欧美三日本三级三级在线播放| 国产永久精品大片wwwapp| 亚洲国产精品久久久久婷婷884 | 成人黄色av电影| 麻豆国产91在线播放| 亚洲制服丝袜av| 国产精品理伦片| 国产亚洲精品久| 精品国产一区二区三区忘忧草| 91啪在线观看| 国产成人a级片| 精品亚洲成a人| 日本v片在线高清不卡在线观看| 亚洲精品视频在线看| 国产日韩欧美一区二区三区乱码 | 久久网站最新地址| 欧美一级片在线观看| 欧美性受xxxx| 欧美主播一区二区三区美女| 99久久精品免费观看| 成人av电影免费在线播放| 国产成人精品免费网站| 国产成人av电影在线观看| 激情久久久久久久久久久久久久久久| 亚洲国产一区二区三区| 亚洲制服丝袜av| 亚洲乱码日产精品bd| 亚洲柠檬福利资源导航| 亚洲免费在线观看视频| 亚洲精选在线视频| 亚洲一区二区在线视频| 亚洲精品国产一区二区三区四区在线| 国产女主播一区| 亚洲欧美综合在线精品| 亚洲人精品午夜| 一区二区三区欧美激情| 一区二区三区色| 午夜久久电影网| 久久不见久久见免费视频7| 国产中文一区二区三区| 福利电影一区二区三区| 懂色av一区二区三区免费观看 | 久久99精品久久久久久国产越南| 美女网站视频久久| 国产伦精品一区二区三区在线观看| 国产一区高清在线| 高清在线观看日韩| 91亚洲国产成人精品一区二区三| 欧美亚洲综合久久| 欧美一级精品在线| 国产欧美日韩亚州综合 | 欧美色欧美亚洲另类二区| 欧美久久一二三四区| 日韩亚洲欧美中文三级| 亚洲国产精品av| 亚洲午夜久久久久中文字幕久| 亚洲成a人v欧美综合天堂下载| 蜜臀国产一区二区三区在线播放| 国产在线精品一区二区| 99久久精品国产网站| 91麻豆精品国产91久久久资源速度 | 18欧美乱大交hd1984| 午夜亚洲福利老司机| 激情欧美日韩一区二区| 一本色道**综合亚洲精品蜜桃冫| 欧美日韩你懂得| 国产精品素人一区二区| 亚洲大型综合色站| 国产一区福利在线| 91成人网在线| 国产亚洲综合av| 天堂av在线一区| 不卡一区二区中文字幕| 欧美精品国产精品| 亚洲日本在线a| 国产美女精品人人做人人爽| 欧美体内she精视频| 国产精品美日韩| 久久国产视频网|