diff --git a/programs/media/log_el/trunk/le_signal.inc b/programs/media/log_el/trunk/le_signal.inc index e3dc95e3dc..4bac3dc570 100644 --- a/programs/media/log_el/trunk/le_signal.inc +++ b/programs/media/log_el/trunk/le_signal.inc @@ -1 +1 @@ -; ; функци для создания сигналов ; ;color_s0 - сигнал 0 ;color_s1 - сигнал 1 ;color_s2 - точка без пересечения ;color_s3 - временное значение для сохранения size_sign equ 10 sign_x equ 0 sign_y equ 4 sign_a equ 8 sign_z equ 9 sign_data dd 0 ;указатель на массив со структурами сигналов sign_count dd 0 ;текущ. кол. сигналов sign_max dd 0 ;макс. кол. сигналов align 4 proc sign_init uses eax ecx, m_count:dword mov ecx,[m_count] mov [sign_max],ecx imul ecx,size_sign stdcall mem.Alloc, ecx mov [sign_data],eax call sign_clear ret endp ;очистка всех сигналов align 4 proc sign_clear uses eax ecx edi xor eax,eax mov dword[time],eax mov dword[sign_count],eax mov ecx,[sign_max] imul ecx,size_sign mov edi,[sign_data] cld rep stosb ret endp ;очистка одного сигнала align 4 proc sign_clear_one uses ecx edi esi, p_sign:dword mov ecx,size_sign mov esi,[sign_count] dec esi imul esi,ecx add esi,[sign_data] mov edi,[p_sign] cld rep movsb dec dword[sign_count] ret endp ;освобождение памяти занятой массивами для сигналов align 4 proc sign_delete stdcall mem.Free, dword[sign_data] ret endp ;функция для перемещения сигналов align 4 proc sign_move pushad mov ecx,[sign_count] cmp ecx,1 jl .end_f mov esi,ecx dec esi imul esi,size_sign add esi,[sign_data] ;cld .cycle_beg: mov eax,[esi+sign_x] mov ebx,[esi+sign_y] movzx edi,byte[esi+sign_a] movzx edx,byte[esi+sign_z] cmp edx,0 je @f or edi,0x100 @@: ;пытаемся создать разветвление сигнала stdcall move_rotate_n90, 0,-1,edi inc edi stdcall sign_creat,eax,ebx,edi stdcall move_rotate_n90, -2,0,edi add edi,2 stdcall sign_creat,eax,ebx,edi mov eax,[esi+sign_x] mov ebx,[esi+sign_y] inc edi mov eax,[esi+sign_x] mov ebx,[esi+sign_y] shl edx,2 add edx,shem_colors stdcall draw_signal_rect, eax,ebx, dword[edx] ;рисуем сигнал на поле .move_1: stdcall move_rotate_x_n90, 1,edi mov edi,eax stdcall pole_cell_find, pole, edi,ebx cmp eax,0 jne @f stdcall sign_clear_one,esi ;удаление сигнала, если он зашел в тупик jmp .cycle_next @@: imul eax,sizeof.Cell add eax,dword[cell] movzx edx,byte[esi+sign_z] cmp byte[eax+offs_cell_liv],2 jne @f ;если стоит пересечение проводов mov eax,edi movzx edi,byte[esi+sign_a] jmp .move_1 @@: cmp byte[eax+offs_cell_liv],dl jne @f stdcall sign_clear_one,esi ;удаление сигнала, если он попал на область закрашеную данным цветом jmp .cycle_next @@: mov byte[eax+offs_cell_liv],dl ;ставим на поле знак сигнала mov [esi+sign_x],edi mov [esi+sign_y],ebx .cycle_next: sub esi,size_sign ;loop .cycle_beg dec ecx jnz .cycle_beg stdcall [buf2d_draw], buf_0 .end_f: popad ret endp align 4 proc sign_creat uses eax ebx ecx edx edi esi, coord_x:dword, coord_y:dword, opt:dword mov edi,[sign_count] cmp edi,[sign_max] jge .end_f mov esi,[coord_x] mov ebx,[coord_y] .found: stdcall pole_cell_find, pole, esi,ebx cmp eax,0 je .end_f mov ecx,[opt] get_cell_offset edx,eax cmp byte[edx+offs_cell_liv],2 jne @f mov eax,esi stdcall move_rotate_x_n90,1,ecx mov esi,eax jmp .found @@: cmp ch,byte[edx+offs_cell_liv] ;проверяем на поле знак сигнала je .end_f ;доделать установку метки в провод, что-бы избежать дублирования сигналов на широких проводах imul edi,size_sign add edi,[sign_data] mov [edi+sign_x],esi mov [edi+sign_y],ebx mov [edi+sign_a],cl mov [edi+sign_z],ch inc dword[sign_count] mov [edx+offs_cell_liv],ch ;ставим на поле знак сигнала ;stdcall draw_signal_rect, [coord_x],[coord_y], 0x800080 .end_f: ret endp ;description: ; подфункция для рисования сигналов на схеме align 4 proc draw_signal_rect uses eax ebx edi, x0:dword,y0:dword, color:dword movzx edi,byte[zoom] mov ebx,[y0] mov eax,[x0] add ebx,[Cor_y] imul ebx,edi add eax,[Cor_x] imul eax,edi stdcall [buf2d_filled_rect_by_size], buf_0, eax,ebx,edi,edi, dword[color] ret endp align 4 proc sign_from_elems locals s_inp dd ? n_leg dd ? endl pushad mov edi,pole ;*** создание сигналов из логических элементов *** stdcall dword[tl_node_poi_get_info],0,tree1 pop esi @@: cmp esi,0 je @f cmp word[esi],el_icon_elems ;получение через esi тип иконки jne .end_add_p3 stdcall [tl_node_poi_get_data], esi, tree1 pop ecx ;*** проверка сигналов на входных ногах mov dword[s_inp],0 mov dword[n_leg],0 ;word[n_leg] - номер входной ноги mov edx,1 .add_p1: stdcall el_get_leg_coords, ecx,dword[n_leg] test eax,eax jnz .get1 test ebx,ebx jnz .get1 jmp .end_add_p1 ;если координаты не взялись (eax=0 && ebx=0), выход из цикла .get1: stdcall pole_cell_find, pole, eax,ebx cmp eax,0 je .get2 imul eax,sizeof.Cell add eax,pole_data cmp byte[eax+offs_cell_liv],1 jne .get2 or dword[s_inp],edx .get2: inc dword[n_leg] shl edx,1 jmp .add_p1 .end_add_p1: ;*** определяем выходную комбинацию битов на основе заданной таблицы работы элемента movzx eax,byte[ecx+sp_offs_el_type] imul eax,size_el_opt add eax,el_opt_beg+el_offs_table mov ebx,[eax] add ebx,dword[s_inp] mov ebx,[ebx] mov dword[s_inp],ebx ;*** установка сигналов на выходных ногах mov dword[n_leg],(1 shl 16) ;word[n_leg] - номер выходной ноги .add_p2: stdcall el_get_leg_coords, ecx,dword[n_leg] test eax,eax jnz .get3 test ebx,ebx jnz .get3 jmp .end_add_p2 ;если координаты не взялись (eax=0 && ebx=0), выход из цикла .get3: movzx edx,byte[ecx+8] ;dl - направление сигнала bt dword[s_inp],0 jnc .set1 or edx,0x100 ;dh - значение сигнала 0 или 1 .set1: stdcall sign_creat,eax,ebx,edx inc dword[n_leg] shr dword[s_inp],1 jmp .add_p2 .end_add_p2: .end_add_p3: stdcall dword[tl_node_poi_get_next_info],esi,tree1 pop esi ;переходим к следущему узлу jmp @b @@: popad ret endp ;создание сигналов на основе подписей align 4 proc sign_from_captions pushad ;mov edi,pole ;*** создание сигналов из подписей *** stdcall dword[tl_node_poi_get_info],0,tree1 pop esi @@: cmp esi,0 je @f cmp word[esi],el_icon_captions ;получение через esi тип иконки jne .end_add_p3 stdcall [tl_node_poi_get_data], esi, tree1 pop ecx cmp byte[ecx+8],'n' je .end_add_p3 ;если надпись информационная, то не создаем сигнала ;xor edx,edx movzx edx,byte[ecx+9] ;первоначальное напрвление выходного сигнала ;*** определяем выходой бит, ;который был установлен в but_set_0 и but_set_1 cmp byte[ecx+8],'o' jne .end_add_p1 or edx,0x100 .end_add_p1: stdcall sign_creat,dword[ecx],dword[ecx+4],edx .end_add_p3: stdcall dword[tl_node_poi_get_next_info],esi,tree1 pop esi ;переходим к следущему узлу jmp @b @@: popad ret endp ; изменяем первоначальное напрвление выходного сигнала ; выставляются 2 направления: слева на право, справа на лево ; остальные 2 возможных направления не учитываются, ; т. к. повороты сигналов возможны и без них align 4 proc sign_set_captions_angles pushad mov edi,pole stdcall dword[tl_node_poi_get_info],0,tree1 pop esi .cycle0: cmp esi,0 je .cycle0_end cmp word[esi],el_icon_captions ;получение через esi тип иконки jne .end_p0 stdcall [tl_node_poi_get_data], esi, tree1 pop ecx mov ebx,[ecx] ;ebx = coord x xor edx,edx dec ebx stdcall pole_cell_find, edi, ebx,dword[ecx+4] cmp eax,0 je @f mov edx,2 ;jmp .set_angle @@: ;.set_angle: mov byte[ecx+9],dl ;первоначальное напрвление выходного сигнала .end_p0: stdcall dword[tl_node_poi_get_next_info],esi,tree1 pop esi ;переходим к следущему узлу jmp .cycle0 .cycle0_end: popad ret endp \ No newline at end of file +; ; функци для создания сигналов ; ;color_s0 - сигнал 0 ;color_s1 - сигнал 1 ;color_s2 - точка без пересечения ;color_s3 - временное значение для сохранения size_sign equ 10 sign_x equ 0 sign_y equ 4 sign_a equ 8 sign_z equ 9 sign_data dd 0 ;указатель на массив со структурами сигналов sign_count dd 0 ;текущ. кол. сигналов sign_max dd 0 ;макс. кол. сигналов align 4 proc sign_init uses eax ecx, m_count:dword mov ecx,[m_count] mov [sign_max],ecx imul ecx,size_sign stdcall mem.Alloc, ecx mov [sign_data],eax call sign_clear ret endp ;очистка всех сигналов align 4 proc sign_clear uses eax ecx edi xor eax,eax mov dword[time],eax mov dword[sign_count],eax mov ecx,[sign_max] imul ecx,size_sign mov edi,[sign_data] cld rep stosb ret endp ;очистка одного сигнала align 4 proc sign_clear_one uses ecx edi esi, p_sign:dword mov ecx,size_sign mov esi,[sign_count] dec esi imul esi,ecx add esi,[sign_data] mov edi,[p_sign] cld rep movsb dec dword[sign_count] ret endp ;освобождение памяти занятой массивами для сигналов align 4 proc sign_delete stdcall mem.Free, dword[sign_data] ret endp ;функция для перемещения сигналов align 4 proc sign_move pushad mov ecx,[sign_count] cmp ecx,1 jl .end_f mov esi,ecx dec esi imul esi,size_sign add esi,[sign_data] ;cld .cycle_beg: mov eax,[esi+sign_x] mov ebx,[esi+sign_y] movzx edi,byte[esi+sign_a] movzx edx,byte[esi+sign_z] cmp edx,0 je @f or edi,0x100 @@: ;пытаемся создать разветвление сигнала stdcall move_rotate_n90, 0,-1,edi inc edi stdcall sign_creat,eax,ebx,edi stdcall move_rotate_n90, -2,0,edi add edi,2 stdcall sign_creat,eax,ebx,edi mov eax,[esi+sign_x] mov ebx,[esi+sign_y] inc edi mov eax,[esi+sign_x] mov ebx,[esi+sign_y] shl edx,2 add edx,shem_colors stdcall draw_signal_rect, eax,ebx, dword[edx] ;рисуем сигнал на поле .move_1: stdcall move_rotate_x_n90, 1,edi mov edi,eax stdcall pole_cell_find, pole, edi,ebx cmp eax,0 jne @f stdcall sign_clear_one,esi ;удаление сигнала, если он зашел в тупик jmp .cycle_next @@: imul eax,sizeof.Cell add eax,dword[cell] movzx edx,byte[esi+sign_z] cmp byte[eax+offs_cell_liv],2 jne @f ;если стоит пересечение проводов mov eax,edi movzx edi,byte[esi+sign_a] jmp .move_1 @@: cmp byte[eax+offs_cell_liv],dl jne @f stdcall sign_clear_one,esi ;удаление сигнала, если он попал на область закрашеную данным цветом jmp .cycle_next @@: mov byte[eax+offs_cell_liv],dl ;ставим на поле знак сигнала mov [esi+sign_x],edi mov [esi+sign_y],ebx .cycle_next: sub esi,size_sign ;loop .cycle_beg dec ecx jnz .cycle_beg ;stdcall [buf2d_draw], buf_0 .end_f: popad ret endp align 4 proc sign_creat uses eax ebx ecx edx edi esi, coord_x:dword, coord_y:dword, opt:dword mov edi,[sign_count] cmp edi,[sign_max] jge .end_f mov esi,[coord_x] mov ebx,[coord_y] .found: stdcall pole_cell_find, pole, esi,ebx cmp eax,0 je .end_f mov ecx,[opt] get_cell_offset edx,eax cmp byte[edx+offs_cell_liv],2 jne @f mov eax,esi stdcall move_rotate_x_n90,1,ecx mov esi,eax jmp .found @@: cmp ch,byte[edx+offs_cell_liv] ;проверяем на поле знак сигнала je .end_f ;доделать установку метки в провод, что-бы избежать дублирования сигналов на широких проводах imul edi,size_sign add edi,[sign_data] mov [edi+sign_x],esi mov [edi+sign_y],ebx mov [edi+sign_a],cl mov [edi+sign_z],ch inc dword[sign_count] mov [edx+offs_cell_liv],ch ;ставим на поле знак сигнала ;stdcall draw_signal_rect, [coord_x],[coord_y], 0x800080 .end_f: ret endp ;description: ; подфункция для рисования сигналов на схеме align 4 proc draw_signal_rect uses eax ebx edi, x0:dword,y0:dword, color:dword movzx edi,byte[zoom] mov ebx,[y0] mov eax,[x0] add ebx,[Cor_y] imul ebx,edi add eax,[Cor_x] imul eax,edi stdcall [buf2d_filled_rect_by_size], buf_0, eax,ebx,edi,edi, dword[color] ret endp align 4 proc sign_from_elems locals s_inp dd ? n_leg dd ? endl pushad mov edi,pole ;*** создание сигналов из логических элементов *** stdcall dword[tl_node_poi_get_info],0,tree1 pop esi @@: cmp esi,0 je @f cmp word[esi],el_icon_elems ;получение через esi тип иконки jne .end_add_p3 stdcall [tl_node_poi_get_data], esi, tree1 pop ecx ;*** проверка сигналов на входных ногах mov dword[s_inp],0 mov dword[n_leg],0 ;word[n_leg] - номер входной ноги mov edx,1 .add_p1: stdcall el_get_leg_coords, ecx,dword[n_leg] test eax,eax jnz .get1 test ebx,ebx jnz .get1 jmp .end_add_p1 ;если координаты не взялись (eax=0 && ebx=0), выход из цикла .get1: stdcall pole_cell_find, pole, eax,ebx cmp eax,0 je .get2 imul eax,sizeof.Cell add eax,pole_data cmp byte[eax+offs_cell_liv],1 jne .get2 or dword[s_inp],edx .get2: inc dword[n_leg] shl edx,1 jmp .add_p1 .end_add_p1: ;*** определяем выходную комбинацию битов на основе заданной таблицы работы элемента movzx eax,byte[ecx+sp_offs_el_type] imul eax,size_el_opt add eax,el_opt_beg+el_offs_table mov ebx,[eax] add ebx,dword[s_inp] mov ebx,[ebx] mov dword[s_inp],ebx ;*** установка сигналов на выходных ногах mov dword[n_leg],(1 shl 16) ;word[n_leg] - номер выходной ноги .add_p2: stdcall el_get_leg_coords, ecx,dword[n_leg] test eax,eax jnz .get3 test ebx,ebx jnz .get3 jmp .end_add_p2 ;если координаты не взялись (eax=0 && ebx=0), выход из цикла .get3: movzx edx,byte[ecx+8] ;dl - направление сигнала bt dword[s_inp],0 jnc .set1 or edx,0x100 ;dh - значение сигнала 0 или 1 .set1: stdcall sign_creat,eax,ebx,edx inc dword[n_leg] shr dword[s_inp],1 jmp .add_p2 .end_add_p2: .end_add_p3: stdcall dword[tl_node_poi_get_next_info],esi,tree1 pop esi ;переходим к следущему узлу jmp @b @@: popad ret endp ;создание сигналов на основе подписей align 4 proc sign_from_captions pushad ;mov edi,pole ;*** создание сигналов из подписей *** stdcall dword[tl_node_poi_get_info],0,tree1 pop esi @@: cmp esi,0 je @f cmp word[esi],el_icon_captions ;получение через esi тип иконки jne .end_add_p3 stdcall [tl_node_poi_get_data], esi, tree1 pop ecx cmp byte[ecx+8],'n' je .end_add_p3 ;если надпись информационная, то не создаем сигнала ;xor edx,edx movzx edx,byte[ecx+9] ;первоначальное напрвление выходного сигнала ;*** определяем выходой бит, ;который был установлен в but_set_0 и but_set_1 cmp byte[ecx+8],'o' jne .end_add_p1 or edx,0x100 .end_add_p1: stdcall sign_creat,dword[ecx],dword[ecx+4],edx .end_add_p3: stdcall dword[tl_node_poi_get_next_info],esi,tree1 pop esi ;переходим к следущему узлу jmp @b @@: popad ret endp ; изменяем первоначальное напрвление выходного сигнала ; выставляются 2 направления: слева на право, справа на лево ; остальные 2 возможных направления не учитываются, ; т. к. повороты сигналов возможны и без них align 4 proc sign_set_captions_angles pushad mov edi,pole stdcall dword[tl_node_poi_get_info],0,tree1 pop esi .cycle0: cmp esi,0 je .cycle0_end cmp word[esi],el_icon_captions ;получение через esi тип иконки jne .end_p0 stdcall [tl_node_poi_get_data], esi, tree1 pop ecx mov ebx,[ecx] ;ebx = coord x xor edx,edx dec ebx stdcall pole_cell_find, edi, ebx,dword[ecx+4] cmp eax,0 je @f mov edx,2 ;jmp .set_angle @@: ;.set_angle: mov byte[ecx+9],dl ;первоначальное напрвление выходного сигнала .end_p0: stdcall dword[tl_node_poi_get_next_info],esi,tree1 pop esi ;переходим к следущему узлу jmp .cycle0 .cycle0_end: popad ret endp \ No newline at end of file diff --git a/programs/media/log_el/trunk/log_el.asm b/programs/media/log_el/trunk/log_el.asm index d192c1fefc..172d16fc24 100644 --- a/programs/media/log_el/trunk/log_el.asm +++ b/programs/media/log_el/trunk/log_el.asm @@ -17,6 +17,8 @@ color_s2 equ 0xff00 ; color_s3 equ 0xff0000 ;временное значение для сохранения color_border dd ini_def_c_border +opt_sign_moves dd 4 +opt_fast_mode dd 0 ;быстрый режим debug equ 0 @@ -52,7 +54,7 @@ include 'le_pole.inc' include 'le_signal.inc' @use_library_mem mem.Alloc,mem.Free,mem.ReAlloc,dll.Load -caption db 'Логические элементы 05.04.12',0 ;подпись окна +caption db 'Логические элементы 19.04.12',0 ;подпись окна panel_0_coord_top equ 5 ;верхняя координата 0-го ряда панели инструментов panel_1_coord_top equ 35 @@ -89,8 +91,8 @@ ends macro elOpt nam,col,box_x,box_y,table, tbl_i_legs, ol0, ol1, ol2 { - @@: db nam - rb @b+16-$ + @@: db nam,0 + rb @b+el_offs_col-$ dd col db box_x db box_y @@ -112,6 +114,8 @@ elOpt 'and[5]',0xffff00,5,11,tbl_and.5, tbl_il_5, 5 elOpt 'not', 0xffff, 3,3,tbl_not, tbl_il_1, 1 elOpt 'xor', 0x8000ff,5,5,tbl_xor, tbl_il_2, 2 elOpt 'sm[1]', 0x8080ff,7,7,tbl_sm, tbl_il_3, 1,4 +elOpt 'ms[2]', 0x8080ff,7,14,tbl_ms_2, tbl_il_m2,6 +elOpt 'ms[2]e',0x8080ff,7,17,tbl_ms_2_e,tbl_il_m2e,8 ;elOpt 'cd[8]', 0x8000, 7,17,tbl_cd_8,tbl_il_8, 6,2,2 ;шифратор на 8 входов .end: elOpt '???', 0x808080,3,3,tbl_and.3, tbl_il_1, 1 ;не опознанный элемент @@ -128,6 +132,20 @@ tbl_and: tbl_xor db 0,1,1,0 tbl_sm db 0,2,2,1, 2,1,1,3 tbl_not db 1,0 ;not + +;мультиплексор для 2-х разрядного сигнала +align 4 +tbl_ms_2_e: ;со входом 'e' +dq 0,0,0,0,0,0,0,0 +tbl_ms_2: +db 0,1,0,1,0,1,0,1 +db 0,1,0,1,0,1,0,1 +db 0,0,1,1,0,0,1,1 +db 0,0,1,1,0,0,1,1 +db 0,0,0,0,1,1,1,1 +db 0,0,0,0,1,1,1,1 +dq 0 +db 1,1,1,1,1,1,1,1 ;tbl_cd_8 db ;256=2^8 ;таблицы для входных ног @@ -136,6 +154,8 @@ tbl_il_2 db 1,2,0 ; tbl_il_3 db 1,2,2,0 tbl_il_4 db 1,2,2,2,0 tbl_il_5 db 1,2,2,2,2,0 +tbl_il_m2 db 1,2,2,2,3,2,0 +tbl_il_m2e db 1,2,2,2,3,2,3,0 ;tbl_il_8 db 1,2,2,2,2,2,2,2,0 time dd 0 @@ -227,6 +247,9 @@ key_color_s0 db 's0',0 key_color_s1 db 's1',0 key_color_s2 db 's2',0 key_color_captions db 'captions',0 +ini_sec_options db 'Options',0 +key_opt_sign_moves db 'signal_moves',0 +key_opt_fast_mode db 'fast_mode',0 align 4 start: @@ -244,17 +267,17 @@ start: copy_path ini_name,sys_path,file_name,0x0 stdcall dword[ini_get_color],file_name,ini_sec_color,key_color_bkgnd,ini_def_c_bkgnd - mov dword[buf_0.color],eax + mov dword[buf_0.color],eax stdcall dword[ini_get_color],file_name,ini_sec_color,key_color_border,ini_def_c_border - mov dword[color_border],eax + mov dword[color_border],eax stdcall dword[ini_get_color],file_name,ini_sec_color,key_color_s0,color_s0 - mov dword[shem_colors],eax + mov dword[shem_colors],eax stdcall dword[ini_get_color],file_name,ini_sec_color,key_color_s1,color_s1 - mov dword[shem_colors+4],eax + mov dword[shem_colors+4],eax stdcall dword[ini_get_color],file_name,ini_sec_color,key_color_s2,color_s2 - mov dword[shem_colors+8],eax + mov dword[shem_colors+8],eax stdcall dword[ini_get_color],file_name,ini_sec_color,key_color_captions,[color_captions] - mov dword[color_captions],eax + mov dword[color_captions],eax mov ebx,el_opt_beg+el_offs_nam mov ecx,(el_opt_beg.end-el_opt_beg)/size_el_opt ;колличество типов элементов @@ -263,10 +286,15 @@ start: push ecx stdcall dword[ini_get_color],file_name,ini_sec_color,ebx,[ebx+el_offs_col-el_offs_nam] pop ecx - mov dword[ebx+el_offs_col-el_offs_nam],eax + mov dword[ebx+el_offs_col-el_offs_nam],eax add ebx,size_el_opt loop @b + stdcall dword[ini_get_int],file_name,ini_sec_options,key_opt_sign_moves,[opt_sign_moves] + mov dword[opt_sign_moves],eax + stdcall dword[ini_get_int],file_name,ini_sec_options,key_opt_fast_mode,[opt_fast_mode] + mov dword[opt_fast_mode],eax + ;*** подготовка диалога stdcall [OpenDialog_Init],OpenDialog_data stdcall [buf2d_create], buf_0 ;создание буфера @@ -367,12 +395,27 @@ timer_funct: cmp byte[tim_ch],0 je @f inc dword[time] + cmp dword[opt_fast_mode],0 + jne .fast_m call sign_move + stdcall [buf2d_draw], buf_0 mov eax,[time] - and eax,11b ;кратность 4-м + xor edx,edx + div dword[opt_sign_moves] + cmp edx,0 ;проверяем кратность opt_sign_moves jnz @f call sign_from_elems call sign_from_captions + jmp @f + .fast_m: + mov ecx,[opt_sign_moves] + cld + .cycle: + call sign_move + loop .cycle + call sign_from_elems + call sign_from_captions + stdcall [buf2d_draw], buf_0 @@: popad @@ -1088,8 +1131,8 @@ but_open_file: copy_path open_dialog_name,communication_area_default_path,file_name,0 mov [OpenDialog_data.type],0 stdcall [OpenDialog_Start],OpenDialog_data - cmp [OpenDialog_data.status],2 - je .end_open_file + cmp [OpenDialog_data.status],1 ;0 - Cancel 1 - Open 2 - Error open dialog + jne .end_open_file ;код при удачном открытии диалога mov eax,70 ;70-я функция работа с файлами @@ -1162,7 +1205,7 @@ but_open_file: mov byte[txt_buf+sp_offs_el_angle],al ;направление call str_next_val ;по адресу edi название элемента - stdcall el_get_name, edi + stdcall el_get_name, edi,13 ;13 - ascii code mov byte[txt_buf+sp_offs_el_type],al ;тип элемента stdcall make_list_capts,txt_buf,edi @@ -1877,7 +1920,7 @@ proc shem_element_creat uses eax ebx, coord_x:dword, coord_y:dword jnz @f mov ebx,el_opt_beg+el_offs_nam ;если не взялось имя элемента, то по умолчанию берем 1-й из списка @@: - stdcall el_get_name, ebx + stdcall el_get_name, ebx,0 mov byte[txt_buf+sp_offs_el_type],al ;тип элемента stdcall make_list_capts,txt_buf,ebx @@ -1888,15 +1931,32 @@ proc shem_element_creat uses eax ebx, coord_x:dword, coord_y:dword ret endp +;description: +; анализирует строку с именем лог. элемента и возвращает номер лог. элемента +;input: +; str - указатель на строку содержащую имя лог. элемента +; asciiz - символ который должен быть заменен на ascii 0 ;output: ; eax - тип элемента align 4 -proc el_get_name uses ecx edi esi, str:dword +proc el_get_name uses ebx ecx edi esi, str:dword, asciiz:dword + mov edi,[str] + cmp dword[asciiz],0 + je @f + mov eax,dword[asciiz] + mov ecx,el_offs_col ;размер текста в str не больше el_offs_col + cld + repne scasb + mov ebx,edi + dec ebx + mov byte[ebx],0 ;0 - символ конца строки для правильной работы str_cmp + @@: + mov edi,[str] mov esi,el_opt_beg+el_offs_nam xor ecx,ecx @@: - stdcall str_instr, edi,esi + stdcall str_cmp, edi,esi cmp eax,0 je @f add esi,size_el_opt @@ -1906,6 +1966,12 @@ proc el_get_name uses ecx edi esi, str:dword jmp @b @@: mov eax,ecx + + cmp dword[asciiz],0 + je @f + mov ecx,dword[asciiz] + mov byte[ebx],cl + @@: ret endp @@ -2124,6 +2190,31 @@ proc str_instr uses edi esi, str0:dword, str1:dword ret endp +;description: +; проверяет совпадение строк str0 и str1 +;output: +; eax = 0 если str0 = str1 +; eax = 1 если str0 != str1 +align 4 +proc str_cmp uses ecx edi esi, str0:dword, str1:dword + xor eax,eax + mov edi,[str0] + mov esi,[str1] + mov ecx,0x8fffffff ;ecx - очень большое число + cld + repne scasb + ;dec edi + sub edi,[str0] + mov ecx,edi ;ecx = strlen(str0)+1 + + mov edi,[str0] + repe cmpsb + je @f + inc eax + @@: + ret +endp + align 4 proc but_run_stop xor byte[tim_ch],1 diff --git a/programs/media/log_el/trunk/log_el.ini b/programs/media/log_el/trunk/log_el.ini index a151af49a6..7af5cd48d2 100644 --- a/programs/media/log_el/trunk/log_el.ini +++ b/programs/media/log_el/trunk/log_el.ini @@ -15,3 +15,6 @@ and[2]=192,0,192 and[3]=192,0,192 and[4]=192,0,192 and[5]=192,0,192 +[Options] +signal_moves=4 +fast_mode=0 \ No newline at end of file diff --git a/programs/media/log_el/trunk/multipl_2b.txt b/programs/media/log_el/trunk/multipl_2b.txt new file mode 100644 index 0000000000..ca8735b19b --- /dev/null +++ b/programs/media/log_el/trunk/multipl_2b.txt @@ -0,0 +1,18 @@ +size 90 80 +elements 1 +44 33 0 ms[2]e +captions 7 +15 10 z d0 +15 20 z d1 +15 30 z d2 +15 40 z d3 +15 50 z s0 +15 60 z s1 +15 70 o e +points 28 +15 10 1 15 20 1 15 30 1 15 40 1 15 50 1 15 60 1 15 70 1 29 30 6 +31 20 6 31 43 3 31 50 12 33 10 6 33 45 3 33 60 12 35 48 3 35 70 12 +42 40 4 42 48 4 42 45 4 42 43 4 42 38 4 29 38 9 31 36 9 42 36 4 +42 34 4 33 34 9 53 41 1 74 41 4 +subpoints 0 + diff --git a/programs/other/t_edit/build_en.bat b/programs/other/t_edit/build_en.bat index 949447c87a..7ce8a43a5e 100644 --- a/programs/other/t_edit/build_en.bat +++ b/programs/other/t_edit/build_en.bat @@ -1,8 +1,8 @@ if not exist bin mkdir bin -if not exist bin\tl_sys_16.bmp @copy ..\..\develop\libraries\box_lib\trunk\tl_sys_16.bmp bin\tl_sys_16.bmp -if not exist bin\tl_nod_16.bmp @copy ..\..\develop\libraries\box_lib\trunk\tl_nod_16.bmp bin\tl_nod_16.bmp +if not exist bin\tl_sys_16.png @copy ..\..\media\log_el\trunk\tl_sys_16.png bin\tl_sys_16.png +if not exist bin\tl_nod_16.png @copy tl_nod_16.png bin\tl_nod_16.png if not exist bin\msgbox.obj @copy msgbox.obj bin\msgbox.obj -if not exist bin\te_icon.bmp @copy te_icon.bmp bin\te_icon.bmp +if not exist bin\te_icon.png @copy te_icon.png bin\te_icon.png if not exist bin\info mkdir bin\info if not exist bin\box_lib.obj @fasm.exe -m 16384 ..\..\develop\libraries\box_lib\trunk\box_lib.asm bin\box_lib.obj diff --git a/programs/other/t_edit/build_ru.bat b/programs/other/t_edit/build_ru.bat index 34c162e6bf..ddbb21feba 100644 --- a/programs/other/t_edit/build_ru.bat +++ b/programs/other/t_edit/build_ru.bat @@ -1,8 +1,8 @@ if not exist bin mkdir bin -if not exist bin\tl_sys_16.bmp @copy ..\..\develop\libraries\box_lib\trunk\tl_sys_16.bmp bin\tl_sys_16.bmp -if not exist bin\tl_nod_16.bmp @copy ..\..\develop\libraries\box_lib\trunk\tl_nod_16.bmp bin\tl_nod_16.bmp +if not exist bin\tl_sys_16.png @copy ..\..\media\log_el\trunk\tl_sys_16.png bin\tl_sys_16.png +if not exist bin\tl_nod_16.png @copy tl_nod_16.png bin\tl_nod_16.png if not exist bin\msgbox.obj @copy msgbox.obj bin\msgbox.obj -if not exist bin\te_icon.bmp @copy te_icon.bmp bin\te_icon.bmp +if not exist bin\te_icon.png @copy te_icon.png bin\te_icon.png if not exist bin\info mkdir bin\info if not exist bin\box_lib.obj @fasm.exe -m 16384 ..\..\develop\libraries\box_lib\trunk\box_lib.asm bin\box_lib.obj diff --git a/programs/other/t_edit/dll.inc b/programs/other/t_edit/dll.inc new file mode 100644 index 0000000000..5f13fbbc16 --- /dev/null +++ b/programs/other/t_edit/dll.inc @@ -0,0 +1,99 @@ + +proc dll.Load, import_table:dword + mov esi,[import_table] + .next_lib: mov edx,[esi] + or edx,edx + jz .exit + push esi + mov esi,[esi+4] + mov edi,s_libdir.fname + @@: lodsb + stosb + or al,al + jnz @b + mcall 68,19,s_libdir + or eax,eax + jz .fail + stdcall dll.Link,eax,edx + push eax + mov eax, [eax] + cmp dword [eax], 'lib_' + pop eax + jnz @f + stdcall dll.Init,[eax+4] + @@: + pop esi + add esi,8 + jmp .next_lib + .exit: xor eax,eax + ret + .fail: add esp,4 + xor eax,eax + inc eax + ret +endp + +proc dll.Link, exp:dword,imp:dword + push eax + mov esi,[imp] + test esi,esi + jz .done + .next: lodsd + test eax,eax + jz .done + stdcall dll.GetProcAddress,[exp],eax + or eax,eax + jz @f + mov [esi-4],eax + jmp .next + @@: mov dword[esp],0 + .done: pop eax + ret +endp + +proc dll.Init, dllentry:dword + pushad + mov eax,mem.Alloc + mov ebx,mem.Free + mov ecx,mem.ReAlloc + mov edx,dll.Load + stdcall [dllentry] + popad + ret +endp + +proc dll.GetProcAddress, exp:dword,sz_name:dword + mov edx,[exp] + xor eax,eax + .next: or edx,edx + jz .end + cmp dword[edx],0 + jz .end + stdcall strcmp,[edx],[sz_name] + test eax,eax + jz .ok + add edx,8 + jmp .next + .ok: mov eax,[edx+4] + .end: ret +endp + +proc strcmp, str1:dword,str2:dword + push esi edi + mov esi,[str1] + mov edi,[str2] + xor eax,eax + @@: lodsb + scasb + jne .fail + or al,al + jnz @b + jmp .ok + .fail: or eax,-1 + .ok: pop edi esi + ret +endp + +s_libdir: + db '/sys/lib/' + .fname rb 32 diff --git a/programs/other/t_edit/info/asm.inc b/programs/other/t_edit/info/asm.inc index 21ca22b093..2f25191510 100644 --- a/programs/other/t_edit/info/asm.inc +++ b/programs/other/t_edit/info/asm.inc @@ -1 +1 @@ -macro wo txt,f1,p1,p2,p3{ @@: db txt rb @b+40-$ dd f1+0 db p1 dw p2+0 db p3 } text: wo<'!'>,,0,,1 wo<'!='>,,0,,1 wo<'"'>,,4,34,3 wo<'&&'>,,0,,1 wo<'',39,''>,,4,39,3 wo<'('>,,0,,1 wo<')'>,,0,,1 wo<'+'>,,0,,1 wo<','>,,0,,1 wo<'.286'>,,3,,1 wo<'.386'>,,3,,1 wo<'.386p'>,,3,,1 wo<'.486'>,,3,,1 wo<'.486p'>,,3,,1 wo<'.586'>,,3,,1 wo<'.586p'>,,3,,1 wo<'.bottom'>,,2,,9 wo<'.break'>,,3,,6 wo<'.code'>,f1.19-f1,3,,1 wo<'.const'>,f1.20-f1,3,,1 wo<'.continue'>,,3,,6 wo<'.data'>,f1.22-f1,3,,1 wo<'.data?'>,f1.23-f1,3,,1 wo<'.else'>,,3,,6 wo<'.elseif'>,,3,,6 wo<'.endif'>,f1.26-f1,3,,6 wo<'.endw'>,,3,,6 wo<'.height'>,,2,,9 wo<'.if'>,,3,,6 wo<'.left'>,,2,,9 wo<'.model'>,,3,,1 wo<'.right'>,,2,,9 wo<'.top'>,,2,,9 wo<'.while'>,,3,,6 wo<'.width'>,,2,,9 wo<'0'>,,24,,3 wo<'0h'>,,10,,3 wo<'1'>,,24,,3 wo<'1h'>,,10,,3 wo<'2'>,,24,,3 wo<'2h'>,,10,,3 wo<'3'>,,24,,3 wo<'3h'>,,10,,3 wo<'4'>,,24,,3 wo<'4h'>,,10,,3 wo<'5'>,,24,,3 wo<'5h'>,,10,,3 wo<'6'>,,24,,3 wo<'6h'>,,10,,3 wo<'7'>,,24,,3 wo<'7h'>,,10,,3 wo<'8'>,,24,,3 wo<'8h'>,,10,,3 wo<'9'>,,24,,3 wo<'9h'>,,10,,3 wo<':'>,,0,,1 wo<';'>,f1.57-f1,4,13,4 wo<'<'>,,0,,1 wo<'<='>,,0,,1 wo<'=='>,,0,,1 wo<'>'>,,0,,1 wo<'>='>,,0,,1 wo<'?'>,,0,,1 wo<'@@'>,f1.64-f1,3,,6 wo<'@b'>,f1.65-f1,3,,6 wo<'@f'>,f1.66-f1,3,,6 wo<'@r'>,f1.67-f1,3,,6 wo<'['>,,0,,1 wo<']'>,,0,,1 wo<'aaa'>,f1.70-f1,3,,1 wo<'aad'>,,3,,1 wo<'aam'>,,3,,1 wo<'aas'>,,3,,1 wo<'adc'>,,3,,1 wo<'add'>,f1.75-f1,3,,1 wo<'addr'>,,3,,1 wo<'af'>,f1.77-f1,3,,2 wo<'ah'>,f1.78-f1,3,,2 wo<'al'>,f1.79-f1,3,,2 wo<'align'>,,3,,1 wo<'and'>,,3,,1 wo<'ax'>,f1.82-f1,3,,2 wo<'bh'>,,3,,2 wo<'bl'>,,3,,2 wo<'bound'>,,3,,1 wo<'bp'>,f1.86-f1,3,,2 wo<'bsf'>,,3,,1 wo<'bsr'>,,3,,1 wo<'bswap'>,,3,,1 wo<'bt'>,f1.90-f1,3,,1 wo<'btc'>,f1.91-f1,3,,1 wo<'btr'>,f1.92-f1,3,,1 wo<'bts'>,f1.93-f1,3,,1 wo<'bx'>,f1.94-f1,3,,2 wo<'byte'>,f1.95-f1,3,,8 wo<'call'>,f1.96-f1,3,,1 wo<'case'>,,3,,6 wo<'casemap'>,,3,,1 wo<'cbw'>,,3,,1 wo<'cdq'>,,3,,1 wo<'cf'>,f1.101-f1,3,,2 wo<'ch'>,,3,,2 wo<'cl'>,f1.103-f1,3,,2 wo<'clc'>,f1.104-f1,3,,1 wo<'cld'>,f1.105-f1,3,,1 wo<'cli'>,f1.106-f1,3,,1 wo<'cmc'>,,3,,1 wo<'cmp'>,f1.108-f1,3,,1 wo<'cmps'>,,3,,1 wo<'cmpsb'>,f1.110-f1,3,,1 wo<'cmpsd'>,f1.111-f1,3,,1 wo<'cmpsq'>,,3,,1 wo<'cmpsw'>,f1.113-f1,3,,1 wo<'cmpxchg'>,,3,,1 wo<'comment *'>,f1.115-f1,5,42,4 wo<'cr0'>,,3,,2 wo<'cr1'>,,3,,2 wo<'cr2'>,,3,,2 wo<'cr3'>,,3,,2 wo<'cr4'>,,3,,2 wo<'cs'>,f1.121-f1,3,,2 wo<'cwd'>,f1.122-f1,3,,1 wo<'cwde'>,,3,,1 wo<'cx'>,f1.124-f1,3,,2 wo<'daa'>,f1.125-f1,3,,1 wo<'das'>,f1.126-f1,3,,1 wo<'db'>,f1.127-f1,3,,8 wo<'dd'>,f1.128-f1,3,,8 wo<'dec'>,f1.129-f1,3,,1 wo<'df'>,f1.130-f1,3,,2 wo<'dh'>,,3,,2 wo<'di'>,,3,,2 wo<'div'>,f1.133-f1,3,,1 wo<'dl'>,,3,,2 wo<'dq'>,f1.135-f1,3,,8 wo<'dqword'>,,3,,8 wo<'dr0'>,f1.137-f1,3,,2 wo<'dr1'>,f1.138-f1,3,,2 wo<'dr2'>,f1.139-f1,3,,2 wo<'dr3'>,f1.140-f1,3,,2 wo<'dr4'>,f1.141-f1,3,,2 wo<'dr5'>,f1.142-f1,3,,2 wo<'dr6'>,f1.143-f1,3,,2 wo<'dr7'>,f1.144-f1,3,,2 wo<'ds'>,f1.145-f1,3,,2 wo<'dt'>,f1.146-f1,3,,8 wo<'dup'>,f1.147-f1,3,,1 wo<'dw'>,f1.148-f1,3,,8 wo<'dword'>,f1.149-f1,3,,8 wo<'dx'>,f1.150-f1,3,,2 wo<'eax'>,f1.151-f1,3,,2 wo<'ebp'>,,3,,2 wo<'ebx'>,f1.153-f1,3,,2 wo<'ecx'>,f1.154-f1,3,,2 wo<'edi'>,f1.155-f1,3,,2 wo<'edx'>,f1.156-f1,3,,2 wo<'eip'>,f1.157-f1,3,,2 wo<'end'>,f1.158-f1,3,,1 wo<'endm'>,f1.159-f1,3,,1 wo<'endp'>,f1.160-f1,3,,5 wo<'ends'>,f1.161-f1,3,,1 wo<'enter'>,,3,,1 wo<'equ'>,,3,,1 wo<'es'>,f1.164-f1,3,,2 wo<'esc'>,f1.165-f1,3,,1 wo<'esi'>,,3,,2 wo<'esp'>,,3,,2 wo<'f2xm1'>,f1.168-f1,3,,1 wo<'fabs'>,f1.169-f1,3,,1 wo<'fadd'>,f1.170-f1,3,,1 wo<'faddp'>,,3,,1 wo<'fbld'>,f1.172-f1,3,,1 wo<'fchs'>,f1.173-f1,3,,1 wo<'fcom'>,f1.174-f1,3,,1 wo<'fcomp'>,f1.175-f1,3,,1 wo<'fcompp'>,f1.176-f1,3,,1 wo<'fcos'>,f1.177-f1,3,,1 wo<'fdecstp'>,f1.178-f1,3,,1 wo<'fdiv'>,f1.179-f1,3,,1 wo<'fdivp'>,,3,,1 wo<'fdivr'>,,3,,1 wo<'fdivrp'>,,3,,1 wo<'ffree'>,f1.183-f1,3,,1 wo<'ficom'>,f1.184-f1,3,,1 wo<'ficomp'>,f1.185-f1,3,,1 wo<'fild'>,f1.186-f1,3,,1 wo<'fimul'>,,3,,1 wo<'fincstp'>,f1.188-f1,3,,1 wo<'finit'>,f1.189-f1,3,,1 wo<'fistp'>,,3,,1 wo<'fisub'>,,3,,1 wo<'fld'>,f1.192-f1,3,,1 wo<'fld1'>,f1.193-f1,3,,1 wo<'fldenvw'>,,3,,1 wo<'fldl2e'>,f1.195-f1,3,,1 wo<'fldl2t'>,f1.196-f1,3,,1 wo<'fldlg2'>,f1.197-f1,3,,1 wo<'fldln2'>,f1.198-f1,3,,1 wo<'fldpi'>,f1.199-f1,3,,1 wo<'fldz'>,f1.200-f1,3,,1 wo<'fmul'>,f1.201-f1,3,,1 wo<'fmulp'>,,3,,1 wo<'fnsavew'>,,3,,1 wo<'fnstenvw'>,,3,,1 wo<'fpatan'>,f1.205-f1,3,,1 wo<'fprem'>,f1.206-f1,3,,1 wo<'fptan'>,f1.207-f1,3,,1 wo<'frndint'>,f1.208-f1,3,,1 wo<'frstorw'>,,3,,1 wo<'fs'>,,3,,2 wo<'fsavew'>,,3,,1 wo<'fscale'>,f1.212-f1,3,,1 wo<'fsin'>,f1.213-f1,3,,1 wo<'fsincos'>,f1.214-f1,3,,1 wo<'fsqrt'>,f1.215-f1,3,,1 wo<'fst'>,f1.216-f1,3,,1 wo<'fstenvw'>,,3,,1 wo<'fstp'>,f1.218-f1,3,,1 wo<'fstsw'>,,3,,1 wo<'fsub'>,f1.220-f1,3,,1 wo<'fsubp'>,,3,,1 wo<'fsubr'>,,3,,1 wo<'fsubrp'>,,3,,1 wo<'ftst'>,f1.224-f1,3,,1 wo<'fword'>,,3,,8 wo<'fxam'>,f1.226-f1,3,,1 wo<'fxch'>,f1.227-f1,3,,1 wo<'fxtract'>,f1.228-f1,3,,1 wo<'fyl2x'>,f1.229-f1,3,,1 wo<'fyl2xp1'>,f1.230-f1,3,,1 wo<'gs'>,,3,,2 wo<'hlt'>,f1.232-f1,3,,1 wo<'idiv'>,f1.233-f1,3,,1 wo<'if'>,f1.234-f1,3,,2 wo<'imul'>,f1.235-f1,3,,1 wo<'in'>,,3,,1 wo<'inc'>,f1.237-f1,3,,1 wo<'include'>,,3,,2 wo<'includelib'>,f1.239-f1,3,,2 wo<'ins'>,,3,,1 wo<'insb'>,,3,,1 wo<'insd'>,,3,,1 wo<'insw'>,,3,,1 wo<'int'>,,3,,1 wo<'into'>,,3,,1 wo<'ip'>,f1.246-f1,3,,2 wo<'iret'>,,3,,1 wo<'iretd'>,,3,,1 wo<'ja'>,f1.249-f1,3,,6 wo<'jae'>,f1.250-f1,3,,6 wo<'jb'>,f1.251-f1,3,,6 wo<'jbe'>,f1.252-f1,3,,6 wo<'jc'>,f1.253-f1,3,,6 wo<'jcc'>,,3,,1 wo<'jcxz'>,f1.255-f1,3,,6 wo<'je'>,f1.256-f1,3,,6 wo<'jecxz'>,f1.257-f1,3,,6 wo<'jg'>,f1.258-f1,3,,6 wo<'jge'>,f1.259-f1,3,,6 wo<'jl'>,f1.260-f1,3,,6 wo<'jle'>,f1.261-f1,3,,6 wo<'jmp'>,f1.262-f1,3,,6 wo<'jna'>,,3,,6 wo<'jnae'>,,3,,6 wo<'jnb'>,,3,,6 wo<'jnbe'>,,3,,6 wo<'jnc'>,,3,,6 wo<'jne'>,,3,,6 wo<'jng'>,,3,,6 wo<'jnge'>,,3,,6 wo<'jnl'>,,3,,6 wo<'jnle'>,,3,,6 wo<'jno'>,,3,,6 wo<'jnp'>,,3,,6 wo<'jns'>,,3,,6 wo<'jnz'>,f1.276-f1,3,,6 wo<'jo'>,f1.277-f1,3,,6 wo<'jp'>,,3,,6 wo<'jpe'>,,3,,6 wo<'jpo'>,f1.280-f1,3,,6 wo<'js'>,f1.281-f1,3,,6 wo<'jz'>,f1.282-f1,3,,6 wo<'lahf'>,,3,,1 wo<'lds'>,,3,,1 wo<'lea'>,,3,,1 wo<'leave'>,,3,,1 wo<'les'>,,3,,1 wo<'lfs'>,,3,,1 wo<'lgdt'>,,3,,1 wo<'lgs'>,,3,,1 wo<'lidt'>,,3,,1 wo<'local'>,f1.292-f1,3,,1 wo<'lods'>,,3,,1 wo<'lodsb'>,f1.294-f1,3,,1 wo<'lodsd'>,f1.295-f1,3,,1 wo<'lodsq'>,,3,,1 wo<'lodsw'>,f1.297-f1,3,,1 wo<'loop'>,,3,,6 wo<'lss'>,,3,,1 wo<'m2m'>,f1.300-f1,3,,5 wo<'macro'>,,3,,1 wo<'mcall -1'>,f1.302-f1,3,,5 wo<'mcall 0'>,f1.303-f1,3,,5 wo<'mcall 1'>,f1.304-f1,3,,5 wo<'mcall 10'>,f1.305-f1,3,,5 wo<'mcall 11'>,f1.306-f1,3,,5 wo<'mcall 12'>,f1.307-f1,3,,5 wo<'mcall 13'>,f1.308-f1,3,,5 wo<'mcall 14'>,f1.309-f1,3,,5 wo<'mcall 15,1'>,f1.310-f1,3,,5 wo<'mcall 15,2'>,f1.311-f1,3,,5 wo<'mcall 15,3'>,f1.312-f1,3,,5 wo<'mcall 15,4'>,f1.313-f1,3,,5 wo<'mcall 15,5'>,f1.314-f1,3,,5 wo<'mcall 15,6'>,f1.315-f1,3,,5 wo<'mcall 15,7'>,f1.316-f1,3,,5 wo<'mcall 16'>,f1.317-f1,3,,5 wo<'mcall 17'>,f1.318-f1,3,,5 wo<'mcall 18,1'>,f1.319-f1,3,,5 wo<'mcall 18,10'>,f1.320-f1,3,,5 wo<'mcall 18,11'>,f1.321-f1,3,,5 wo<'mcall 18,13'>,f1.322-f1,3,,5 wo<'mcall 18,14'>,f1.323-f1,3,,5 wo<'mcall 18,15'>,f1.324-f1,3,,5 wo<'mcall 18,16'>,f1.325-f1,3,,5 wo<'mcall 18,17'>,f1.326-f1,3,,5 wo<'mcall 18,18'>,f1.327-f1,3,,5 wo<'mcall 18,19'>,f1.328-f1,3,,5 wo<'mcall 18,2'>,f1.329-f1,3,,5 wo<'mcall 18,20'>,f1.330-f1,3,,5 wo<'mcall 18,21'>,f1.331-f1,3,,5 wo<'mcall 18,22'>,f1.332-f1,3,,5 wo<'mcall 18,3'>,f1.333-f1,3,,5 wo<'mcall 18,4'>,f1.334-f1,3,,5 wo<'mcall 18,5'>,f1.335-f1,3,,5 wo<'mcall 18,6'>,f1.336-f1,3,,5 wo<'mcall 18,7'>,f1.337-f1,3,,5 wo<'mcall 18,8'>,f1.338-f1,3,,5 wo<'mcall 18,9'>,f1.339-f1,3,,5 wo<'mcall 2'>,f1.340-f1,3,,5 wo<'mcall 20'>,f1.341-f1,3,,5 wo<'mcall 21,1'>,f1.342-f1,3,,5 wo<'mcall 21,10'>,f1.343-f1,3,,5 wo<'mcall 21,11'>,f1.344-f1,3,,5 wo<'mcall 21,12'>,f1.345-f1,3,,5 wo<'mcall 21,13,1'>,f1.346-f1,3,,5 wo<'mcall 21,13,2'>,f1.347-f1,3,,5 wo<'mcall 21,13,3'>,f1.348-f1,3,,5 wo<'mcall 21,13,4'>,f1.349-f1,3,,5 wo<'mcall 21,13,5'>,f1.350-f1,3,,5 wo<'mcall 21,2'>,f1.351-f1,3,,5 wo<'mcall 21,3'>,f1.352-f1,3,,5 wo<'mcall 21,4'>,f1.353-f1,3,,5 wo<'mcall 21,5'>,f1.354-f1,3,,5 wo<'mcall 21,7'>,f1.355-f1,3,,5 wo<'mcall 21,8'>,f1.356-f1,3,,5 wo<'mcall 22'>,f1.357-f1,3,,5 wo<'mcall 23'>,f1.358-f1,3,,5 wo<'mcall 24,1'>,f1.359-f1,3,,5 wo<'mcall 24,2'>,f1.360-f1,3,,5 wo<'mcall 24,3'>,f1.361-f1,3,,5 wo<'mcall 24,4'>,f1.362-f1,3,,5 wo<'mcall 24,5'>,f1.363-f1,3,,5 wo<'mcall 25'>,f1.364-f1,3,,5 wo<'mcall 26,1'>,f1.365-f1,3,,5 wo<'mcall 26,10'>,f1.366-f1,3,,5 wo<'mcall 26,11'>,f1.367-f1,3,,5 wo<'mcall 26,12'>,f1.368-f1,3,,5 wo<'mcall 26,2'>,f1.369-f1,3,,5 wo<'mcall 26,3'>,f1.370-f1,3,,5 wo<'mcall 26,4'>,f1.371-f1,3,,5 wo<'mcall 26,5'>,f1.372-f1,3,,5 wo<'mcall 26,7'>,f1.373-f1,3,,5 wo<'mcall 26,8'>,f1.374-f1,3,,5 wo<'mcall 26,9'>,f1.375-f1,3,,5 wo<'mcall 28'>,f1.376-f1,3,,5 wo<'mcall 29'>,f1.377-f1,3,,5 wo<'mcall 3'>,f1.378-f1,3,,5 wo<'mcall 30'>,f1.379-f1,3,,5 wo<'mcall 32'>,f1.380-f1,3,,5 wo<'mcall 33'>,f1.381-f1,3,,5 wo<'mcall 35'>,f1.382-f1,3,,5 wo<'mcall 37'>,f1.383-f1,3,,5 wo<'mcall 38'>,f1.384-f1,3,,5 wo<'mcall 39,1'>,f1.385-f1,3,,5 wo<'mcall 39,2'>,f1.386-f1,3,,5 wo<'mcall 39,4'>,f1.387-f1,3,,5 wo<'mcall 4'>,f1.388-f1,3,,5 wo<'mcall 40'>,f1.389-f1,3,,5 wo<'mcall 43'>,f1.390-f1,3,,5 wo<'mcall 46'>,f1.391-f1,3,,5 wo<'mcall 47'>,f1.392-f1,3,,5 wo<'mcall 48,0'>,f1.393-f1,3,,5 wo<'mcall 48,1'>,f1.394-f1,3,,5 wo<'mcall 48,2'>,f1.395-f1,3,,5 wo<'mcall 48,3'>,f1.396-f1,3,,5 wo<'mcall 48,4'>,f1.397-f1,3,,5 wo<'mcall 48,5'>,f1.398-f1,3,,5 wo<'mcall 48,6'>,f1.399-f1,3,,5 wo<'mcall 48,7'>,f1.400-f1,3,,5 wo<'mcall 48,8'>,f1.401-f1,3,,5 wo<'mcall 49'>,f1.402-f1,3,,5 wo<'mcall 5'>,f1.403-f1,3,,5 wo<'mcall 50'>,f1.404-f1,3,,5 wo<'mcall 51'>,f1.405-f1,3,,5 wo<'mcall 52,0'>,f1.406-f1,3,,5 wo<'mcall 52,1'>,f1.407-f1,3,,5 wo<'mcall 52,10'>,f1.408-f1,3,,5 wo<'mcall 52,11'>,f1.409-f1,3,,5 wo<'mcall 52,12'>,f1.410-f1,3,,5 wo<'mcall 52,13'>,f1.411-f1,3,,5 wo<'mcall 52,14'>,f1.412-f1,3,,5 wo<'mcall 52,15'>,f1.413-f1,3,,5 wo<'mcall 52,2'>,f1.414-f1,3,,5 wo<'mcall 52,3'>,f1.415-f1,3,,5 wo<'mcall 52,6'>,f1.416-f1,3,,5 wo<'mcall 52,8'>,f1.417-f1,3,,5 wo<'mcall 52,9'>,f1.418-f1,3,,5 wo<'mcall 53,0'>,f1.419-f1,3,,5 wo<'mcall 53,1'>,f1.420-f1,3,,5 wo<'mcall 53,10'>,f1.421-f1,3,,5 wo<'mcall 53,11'>,f1.422-f1,3,,5 wo<'mcall 53,2'>,f1.423-f1,3,,5 wo<'mcall 53,255'>,f1.424-f1,3,,5 wo<'mcall 53,3'>,f1.425-f1,3,,5 wo<'mcall 53,4'>,f1.426-f1,3,,5 wo<'mcall 53,5'>,f1.427-f1,3,,5 wo<'mcall 53,6'>,f1.428-f1,3,,5 wo<'mcall 53,7'>,f1.429-f1,3,,5 wo<'mcall 53,8'>,f1.430-f1,3,,5 wo<'mcall 53,9'>,f1.431-f1,3,,5 wo<'mcall 55,0'>,f1.432-f1,3,,5 wo<'mcall 55,1'>,f1.433-f1,3,,5 wo<'mcall 55,2'>,f1.434-f1,3,,5 wo<'mcall 55,55'>,f1.435-f1,3,,5 wo<'mcall 57'>,f1.436-f1,3,,5 wo<'mcall 58'>,f1.437-f1,3,,5 wo<'mcall 58,0'>,f1.438-f1,3,,5 wo<'mcall 58,15'>,f1.439-f1,3,,5 wo<'mcall 58,8'>,f1.440-f1,3,,5 wo<'mcall 6'>,f1.441-f1,3,,5 wo<'mcall 60'>,f1.442-f1,3,,5 wo<'mcall 61'>,f1.443-f1,3,,5 wo<'mcall 62,0'>,f1.444-f1,3,,5 wo<'mcall 62,1'>,f1.445-f1,3,,5 wo<'mcall 62,10'>,f1.446-f1,3,,5 wo<'mcall 62,2'>,f1.447-f1,3,,5 wo<'mcall 62,4'>,f1.448-f1,3,,5 wo<'mcall 62,5'>,f1.449-f1,3,,5 wo<'mcall 62,6'>,f1.450-f1,3,,5 wo<'mcall 62,8'>,f1.451-f1,3,,5 wo<'mcall 62,9'>,f1.452-f1,3,,5 wo<'mcall 63'>,f1.453-f1,3,,5 wo<'mcall 64'>,f1.454-f1,3,,5 wo<'mcall 65'>,f1.455-f1,3,,5 wo<'mcall 66'>,f1.456-f1,3,,5 wo<'mcall 66,1'>,f1.457-f1,3,,5 wo<'mcall 66,2'>,f1.458-f1,3,,5 wo<'mcall 66,3'>,f1.459-f1,3,,5 wo<'mcall 66,4'>,f1.460-f1,3,,5 wo<'mcall 66,5'>,f1.461-f1,3,,5 wo<'mcall 67'>,f1.462-f1,3,,5 wo<'mcall 68,0'>,f1.463-f1,3,,5 wo<'mcall 68,1'>,f1.464-f1,3,,5 wo<'mcall 68,11'>,f1.465-f1,3,,5 wo<'mcall 68,12'>,f1.466-f1,3,,5 wo<'mcall 68,13'>,f1.467-f1,3,,5 wo<'mcall 68,14'>,f1.468-f1,3,,5 wo<'mcall 68,15'>,f1.469-f1,3,,5 wo<'mcall 68,16'>,f1.470-f1,3,,5 wo<'mcall 68,17'>,f1.471-f1,3,,5 wo<'mcall 68,19'>,f1.472-f1,3,,5 wo<'mcall 68,2'>,f1.473-f1,3,,5 wo<'mcall 68,20'>,f1.474-f1,3,,5 wo<'mcall 68,3'>,f1.475-f1,3,,5 wo<'mcall 68,4'>,f1.476-f1,3,,5 wo<'mcall 69'>,f1.477-f1,3,,5 wo<'mcall 69,0'>,f1.478-f1,3,,5 wo<'mcall 69,1'>,f1.479-f1,3,,5 wo<'mcall 69,2'>,f1.480-f1,3,,5 wo<'mcall 69,3'>,f1.481-f1,3,,5 wo<'mcall 69,4'>,f1.482-f1,3,,5 wo<'mcall 69,5'>,f1.483-f1,3,,5 wo<'mcall 69,6'>,f1.484-f1,3,,5 wo<'mcall 69,7'>,f1.485-f1,3,,5 wo<'mcall 69,8'>,f1.486-f1,3,,5 wo<'mcall 69,9'>,f1.487-f1,3,,5 wo<'mcall 7'>,f1.488-f1,3,,5 wo<'mcall 70'>,f1.489-f1,3,,5 wo<'mcall 70,0'>,f1.490-f1,3,,5 wo<'mcall 70,1'>,f1.491-f1,3,,5 wo<'mcall 70,2'>,f1.492-f1,3,,5 wo<'mcall 70,3'>,f1.493-f1,3,,5 wo<'mcall 70,4'>,f1.494-f1,3,,5 wo<'mcall 70,5'>,f1.495-f1,3,,5 wo<'mcall 70,6'>,f1.496-f1,3,,5 wo<'mcall 70,7'>,f1.497-f1,3,,5 wo<'mcall 70,8'>,f1.498-f1,3,,5 wo<'mcall 70,9'>,f1.499-f1,3,,5 wo<'mcall 71,1'>,f1.500-f1,3,,5 wo<'mcall 8'>,f1.501-f1,3,,5 wo<'mcall 9'>,f1.502-f1,3,,5 wo<'mm0'>,,3,,2 wo<'mm1'>,,3,,2 wo<'mm2'>,,3,,2 wo<'mm3'>,,3,,2 wo<'mm4'>,,3,,2 wo<'mm5'>,,3,,2 wo<'mm6'>,,3,,2 wo<'mm7'>,,3,,2 wo<'mov'>,f1.511-f1,3,,1 wo<'movs'>,,3,,1 wo<'movsb'>,,3,,1 wo<'movsd'>,,3,,1 wo<'movsw'>,,3,,1 wo<'movsx'>,,3,,1 wo<'movzx'>,,3,,1 wo<'mul'>,,3,,1 wo<'neg'>,,3,,1 wo<'nop'>,f1.520-f1,3,,1 wo<'not'>,,3,,1 wo<'of'>,f1.522-f1,3,,2 wo<'offset'>,,3,,1 wo<'option'>,,3,,1 wo<'or'>,,3,,1 wo<'out'>,,3,,1 wo<'outs'>,,3,,1 wo<'pf'>,f1.528-f1,3,,2 wo<'pop'>,,3,,1 wo<'popa'>,f1.530-f1,3,,1 wo<'popad'>,f1.531-f1,3,,1 wo<'popf'>,,3,,1 wo<'popfd'>,,3,,1 wo<'proc'>,f1.534-f1,3,,5 wo<'ptr'>,,3,,1 wo<'push'>,f1.536-f1,3,,1 wo<'pusha'>,f1.537-f1,3,,1 wo<'pushad'>,f1.538-f1,3,,1 wo<'pushf'>,f1.539-f1,3,,1 wo<'pushfd'>,,3,,1 wo<'pword'>,,3,,8 wo<'qword'>,f1.542-f1,3,,8 wo<'rcl'>,,3,,1 wo<'rcr'>,,3,,1 wo<'rep'>,,3,,1 wo<'repe'>,,3,,1 wo<'repne'>,,3,,1 wo<'repnz'>,,3,,1 wo<'repz'>,,3,,1 wo<'ret'>,,3,,1 wo<'retf'>,,3,,1 wo<'rol'>,f1.552-f1,3,,1 wo<'ror'>,f1.553-f1,3,,1 wo<'sahf'>,f1.554-f1,3,,1 wo<'sal'>,,3,,1 wo<'sar'>,,3,,1 wo<'sbb'>,,3,,1 wo<'scas'>,,3,,1 wo<'scasb'>,f1.559-f1,3,,1 wo<'scasd'>,f1.560-f1,3,,1 wo<'scasw'>,f1.561-f1,3,,1 wo<'setcc'>,,3,,1 wo<'sf'>,f1.563-f1,3,,2 wo<'sgdt'>,,3,,1 wo<'shl'>,f1.565-f1,3,,1 wo<'shr'>,f1.566-f1,3,,1 wo<'si'>,f1.567-f1,3,,2 wo<'sizeof'>,,3,,1 wo<'sp'>,f1.569-f1,3,,2 wo<'ss'>,f1.570-f1,3,,2 wo<'st0'>,,3,,2 wo<'st1'>,,3,,2 wo<'st2'>,,3,,2 wo<'st3'>,,3,,2 wo<'st4'>,,3,,2 wo<'st5'>,,3,,2 wo<'st6'>,,3,,2 wo<'st7'>,,3,,2 wo<'stc'>,,3,,1 wo<'std'>,,3,,1 wo<'stdcall'>,f1.581-f1,3,,5 wo<'sti'>,,3,,1 wo<'stos'>,,3,,1 wo<'stosb'>,f1.584-f1,3,,1 wo<'stosd'>,f1.585-f1,3,,1 wo<'stosw'>,f1.586-f1,3,,1 wo<'struc'>,f1.587-f1,3,,5 wo<'struct'>,,3,,1 wo<'sub'>,f1.589-f1,3,,1 wo<'switch'>,,3,,6 wo<'tbyte'>,,3,,8 wo<'test'>,,3,,1 wo<'tf'>,f1.593-f1,3,,2 wo<'tword'>,f1.594-f1,3,,8 wo<'uses'>,f1.595-f1,3,,1 wo<'word'>,f1.596-f1,3,,8 wo<'xadd'>,,3,,1 wo<'xchg'>,f1.598-f1,3,,1 wo<'xlat'>,,3,,1 wo<'xlatb'>,,3,,1 wo<'xmm0'>,,3,,2 wo<'xmm1'>,,3,,2 wo<'xmm2'>,,3,,2 wo<'xmm3'>,,3,,2 wo<'xmm4'>,,3,,2 wo<'xmm5'>,,3,,2 wo<'xmm6'>,,3,,2 wo<'xmm7'>,,3,,2 wo<'xor'>,f1.609-f1,3,,1 wo<'zf'>,f1.610-f1,3,,2 wo<'||'>,,0,,1 f1: db 0 .19:db 'секция кода',0 .20:db 'содержит объявления констант',0 .22:db 'инициализированные данные',0 .23:db 'неинициализированные данные',0 .26:db 'конец условного блока',0 .57:db 'однострочный комментарий',0 .64:db 'анонимная метка',0 .65:db 'верхняя анонимная метка (тоже что @r)',0 .66:db 'нижняя анонимная метка',0 .67:db 'верхняя анонимная метка (тоже что @b)',0 .70:db 'используется после сложения каждого разряда распакованных BCD-чисел (Ascii Adjust after Addition - ASCII-коррекция после сложения)',0 .75:db 'прибавить к первому операнду второй',0 .77:db 'флаговый регистр дополнительный признак переноса',0 .78:db 'регистр общего назначения 1 байт',0 .79:db 'регистр общего назначения 1 байт',0 .82:db 'регистр общего назначения 2 байта',0 .86:db 'регистр указателя',0 .90:db 'определяет, установлен ли в заданном слове определенный бит. Значение выбраного бита помещаеться в cf',0 .91:db 'значение выбраного бита помещаеться в cf, инвертирует значение бита',0 .92:db 'значение выбраного бита помещаеться в cf, в бит записываеться 0',0 .93:db 'значение выбраного бита помещаеться в cf, в бит записываеться 1',0 .94:db 'регистр общего назначения 2 байта',0 .95:db '1 байт',0 .96:db 'Вызов подпрограммы. Перед вызовом помещает в стэк адрес предыдущей команды',0 .101:db 'флаговый регистр переноса',0 .103:db 'регистр общего назначения 1 байт',0 .104:db 'сброс флага переноса cf=0',0 .105:db 'сброс признака направления df=0',0 .106:db 'сброс признака разрешения прерывания if=0',0 .108:db 'сравнение операндов и по результатам сравнения устанавливает флаги (af, cf, of, pf, sf и zf)',0 .110:db 'сравнение 1-но байтовых строк',0 .111:db 'сравнение 4-х байтовых строк',0 .113:db 'сравнение 2-х байтовых строк',0 .115:db 'многострочный комментарий',0 .121:db 'сегментный регистр - сегмент кода',0 .122:db 'преобразование слова в двойное слово. Флаги не меняются.',0 .124:db 'регистр общего назначения 2 байта',0 .125:db 'десятичная коррекция для сложения. Команда воздействует на флаги af. cf, pf, sf и zf (флаг of неопределен).',0 .126:db 'десятичная коррекция для вычитания. Команда воздействует на флаги af, cf, pf, sf и zf.',0 .127:db '1 байт',0 .128:db '4 байта - 2 слова',0 .129:db 'вычесть из операнда единицу. Команда воздействует на флаги af, of, pf, sf и zf.',0 .130:db 'флаговый регистр направления',0 .133:db 'деление. Команда воздействует на флаги af, cf, of, pf sf и zf (все не определены).',0 .135:db '8 байт - 4 слова',0 .137:db 'отладочный регистр 0-й',0 .138:db 'отладочный регистр 1-й',0 .139:db 'отладочный регистр 2-й',0 .140:db 'отладочный регистр 3-й',0 .141:db 'отладочный регистр 4-й',0 .142:db 'отладочный регистр 5-й',0 .143:db 'отладочный регистр 6-й',0 .144:db 'отладочный регистр 7-й',0 .145:db 'сегментный регистр - сегмент данных',0 .146:db '10 байт',0 .147:db 'дублирование начального значения',0 .148:db '2 байта - 1 слово',0 .149:db '4 байта',0 .150:db 'регистр общего назначения 2 байта',0 .151:db 'регистр общего назначения 4 байта',0 .153:db 'регистр общего назначения 4 байта',0 .154:db 'регистр общего назначения 4 байта',0 .155:db 'индексный регистр 4 байта',0 .156:db 'регистр общего назначения 4 байта',0 .157:db 'регистр указателя команд',0 .158:db 'конец программы',0 .159:db 'конец макроса',0 .160:db 'конец функции proc',0 .161:db 'конец структуры struct',0 .164:db 'сегментный регистр',0 .165:db 'переключение на сопроцессор. Флаги не меняются.',0 .168:db 'вычисление степени x по основанию 2 минус 1',0 .169:db 'значение по модулю числа st(0) ',0 .170:db 'сложить 2 числа с плавающей точкой',0 .172:db 'загружает из памяти в вершину стека st(0) двоично-десятичное число',0 .173:db 'изменение знака числа',0 .174:db 'сравнение',0 .175:db 'сравнение и извлечение из стека',0 .176:db 'сравнение и двойное извлечение из стека',0 .177:db 'косинус',0 .178:db 'уменьшить указатель стека sp на 1',0 .179:db 'поделить 2 числа с плавающей точкой',0 .183:db 'освобождение регистра стека сопроцессора',0 .184:db 'целочисленное сравнение',0 .185:db 'целочисленное сравнение и извлечение из стека',0 .186:db 'загружает из памяти в вершину стека st(0) целое число ',0 .188:db 'увеличить указатель стека sp на 1',0 .189:db 'инициализировать fpu',0 .192:db 'загружает из памяти в вершину стека st(0) вещественное число',0 .193:db 'загрузка единицы',0 .195:db 'загрузка числа 1/ln(2)',0 .196:db 'загрузка числа ln(10)/ln(2)',0 .197:db 'загрузка числа log(2)/ln(10)',0 .198:db 'загрузка числа ln(2)',0 .199:db 'загружает в вершину стека st(0) число Pi',0 .200:db 'загрузка нуля',0 .201:db 'умножение',0 .205:db 'арктангенс частного',0 .206:db 'вычисление остатка от деления',0 .207:db 'вычисление тангенса',0 .208:db 'округление числа st(0) до целого',0 .212:db 'умножение на 2^y',0 .213:db 'вычисление синуса',0 .214:db 'вычисление синуса и косинуса',0 .215:db 'извлечение квадратного корня',0 .216:db 'выгрузка результата st(0)',0 .218:db 'выгрузка результата st(0) и освобождение стека',0 .220:db 'вычитание',0 .224:db 'сравнение операнда с нулем',0 .226:db 'анализ операнда',0 .227:db 'обмен',0 .228:db 'выделение порядка числа и мантиссы',0 .229:db 'вычисление y*log2(x)',0 .230:db 'вычисление y*log2(x+1)',0 .232:db 'останов микропроцессора. Флаги не меняются.',0 .233:db 'целое деление знаковых величин. Команда воздействует на флаги af, cf, of, pf, sf и zf.',0 .234:db 'флаговый регистр разрешения прерывания',0 .235:db 'целое умножение знаковых величин. Команда воздействует на флаги cf и of (флаги af pf sf и zf не определены).',0 .237:db 'прибавить к операнду единицу',0 .239:db 'указывает библиотеку импорта',0 .246:db 'регистр указателя команд',0 .249:db 'переход если cf=0 и zf=0 (ja - Jump if Above)',0 .250:db 'переход если cf=0 (jae - Jump if Above or Equal)',0 .251:db 'переход если cf=1 (jb - Jump if Below)',0 .252:db 'переход если cf=1 или zf=1 (jbe - Jump if Below or Equal)',0 .253:db 'переход если cf=1 (jc - Jump if Carry)',0 .255:db 'переход если cx=0 (jcxz - Jump if CX Zero)',0 .256:db 'переход если zf=1 (je - Jump if Equal)',0 .257:db 'переход если ecx=0 (jecxz - Jump if ECX Zero)',0 .258:db 'переход если zf=0 и sf=of (jg - Jump if Greater (signed))',0 .259:db 'переход если sf=of (jge - Jump if Greater or Equal (signed))',0 .260:db 'переход если sf!=of (jl - Jump if Less (signed))',0 .261:db 'переход если zf=1 или sf!=of (jle - Jump if Less or Equal (signed))',0 .262:db 'переход без условия',0 .276:db 'переход если zf=0 (jnz - Jump if Not Zero)',0 .277:db 'переход если of=1 (jo - Jump if Overflow)',0 .280:db 'переход если pf=0 (jpo - Jump if Parity Odd)',0 .281:db 'переход если sf=1 (js - Jump if Signed (signed))',0 .282:db 'переход если zf=1 (jz - Jump if Zero)',0 .292:db 'резервирует память из стека для локальных переменных',0 .294:db 'загрузка 1-но байтовых строк',0 .295:db 'загрузка 4-х байтовых строк',0 .297:db 'загрузка 2-х байтовых строк',0 .300:db 'макрос для копирования значения, использует операции push и pop',0 .302:db 'завершить выполнение потока/процесс (макрос для сист. функций вызывает int 0x40)',0 .303:db 'определить и нарисовать окно (макрос для сист. функций вызывает int 0x40)',0 .304:db 'поставить точку в окне (ebx = x-координата (относительно окна), ecx = y-координата (относительно окна), edx = 0x00RRGGBB - цвет точки) (макрос для сист. функций вызывает int 0x40)',0 .305:db 'ожидать события (макрос для сист. функций вызывает int 0x40)',0 .306:db 'проверить, есть ли событие, без ожидания (макрос для сист. функций вызывает int 0x40)',0 .307:db 'начать/закончить перерисовку окна (макрос для сист. функций вызывает int 0x40)',0 .308:db 'нарисовать прямоугольник в окне (макрос для сист. функций вызывает int 0x40)',0 .309:db 'получить размеры экрана (макрос для сист. функций вызывает int 0x40)',0 .310:db 'установить размер фонового изображения (макрос для сист. функций вызывает int 0x40)',0 .311:db 'поставить точку на фоновом изображении (макрос для сист. функций вызывает int 0x40)',0 .312:db 'перерисовать фон (макрос для сист. функций вызывает int 0x40)',0 .313:db 'установить режим отрисовки фона (макрос для сист. функций вызывает int 0x40)',0 .314:db 'поместить блок пикселей на фон (макрос для сист. функций вызывает int 0x40)',0 .315:db 'Спроецировать данные фона на адресное пространство процесса (макрос для сист. функций вызывает int 0x40)',0 .316:db 'Закрыть проекцию данных фона на адресное пространство процесса (макрос для сист. функций вызывает int 0x40)',0 .317:db 'сохранить рамдиск на дискету (макрос для сист. функций вызывает int 0x40)',0 .318:db 'получить код нажатой кнопки (макрос для сист. функций вызывает int 0x40)',0 .319:db 'завершить работу системы (макрос для сист. функций вызывает int 0x40)',0 .320:db 'свернуть окно приложения (макрос для сист. функций вызывает int 0x40)',0 .321:db 'Получить информацию о дисковой подсистеме (макрос для сист. функций вызывает int 0x40)',0 .322:db 'получить версию ядра (макрос для сист. функций вызывает int 0x40)',0 .323:db 'Ожидать начала обратного хода луча развёртки монитора (макрос для сист. функций вызывает int 0x40)',0 .324:db 'поместить курсор мыши в центр экрана (макрос для сист. функций вызывает int 0x40)',0 .325:db 'Получить размер свободной оперативной памяти (макрос для сист. функций вызывает int 0x40)',0 .326:db 'Получить размер имеющейся оперативной памяти (макрос для сист. функций вызывает int 0x40)',0 .327:db 'Завершить процесс/поток по идентификатору (макрос для сист. функций вызывает int 0x40)',0 .328:db 'получить/установить настройки мыши (макрос для сист. функций вызывает int 0x40)',0 .329:db 'завершить процесс/поток по слоту (макрос для сист. функций вызывает int 0x40)',0 .330:db 'Получить информацию об оперативной памяти (макрос для сист. функций вызывает int 0x40)',0 .331:db 'Получить номер слота процесса/потока по идентификатору (макрос для сист. функций вызывает int 0x40)',0 .332:db 'операции с окном другого процесса/потока (макрос для сист. функций вызывает int 0x40)',0 .333:db 'сделать активным окно заданного потока (макрос для сист. функций вызывает int 0x40)',0 .334:db 'получить счётчик пустых тактов в секунду (макрос для сист. функций вызывает int 0x40)',0 .335:db 'получить тактовую частоту (макрос для сист. функций вызывает int 0x40)',0 .336:db 'сохранить рамдиск в файл на жёстком диске (макрос для сист. функций вызывает int 0x40)',0 .337:db 'получить номер активного окна (макрос для сист. функций вызывает int 0x40)',0 .338:db 'отключить/разрешить звук спикера (макрос для сист. функций вызывает int 0x40)',0 .339:db 'завершение работы системы с параметром (макрос для сист. функций вызывает int 0x40)',0 .340:db 'получить код нажатой клавиши (макрос для сист. функций вызывает int 0x40)',0 .341:db 'интерфейс MIDI (макрос для сист. функций вызывает int 0x40)',0 .342:db 'установить базовый порт MPU MIDI (макрос для сист. функций вызывает int 0x40)',0 .343:db 'установить канал DMA для звука (макрос для сист. функций вызывает int 0x40)',0 .344:db 'Разрешить/запретить низкоуровневый доступ к HD (макрос для сист. функций вызывает int 0x40)',0 .345:db 'Разрешить/запретить низкоуровневый доступ к PCI (макрос для сист. функций вызывает int 0x40)',0 .346:db 'Инициализировать + получить информацию о драйвере vmode.mdr (макрос для сист. функций вызывает int 0x40)',0 .347:db 'Получить информацию о текущем видеорежиме (макрос для сист. функций вызывает int 0x40)',0 .348:db 'установить видеорежим. (макрос для сист. функций вызывает int 0x40)',0 .349:db 'Вернуться к начальному видеорежиму (макрос для сист. функций вызывает int 0x40)',0 .350:db 'Увеличить/уменьшить размер видимой области монитора (макрос для сист. функций вызывает int 0x40)',0 .351:db 'установить раскладку клавиатуры (макрос для сист. функций вызывает int 0x40)',0 .352:db 'установить базу CD (макрос для сист. функций вызывает int 0x40)',0 .353:db 'установить базовый порт Sound Blaster (макрос для сист. функций вызывает int 0x40)',0 .354:db 'установить язык системы (макрос для сист. функций вызывает int 0x40)',0 .355:db 'установить базу HD (макрос для сист. функций вызывает int 0x40)',0 .356:db 'установить раздел HD (макрос для сист. функций вызывает int 0x40)',0 .357:db 'установить системную дату/время (макрос для сист. функций вызывает int 0x40)',0 .358:db 'ожидать события с таймаутом (макрос для сист. функций вызывает int 0x40)',0 .359:db 'начать проигрывать CD-audio (макрос для сист. функций вызывает int 0x40)',0 .360:db 'получить информацию о дорожках (макрос для сист. функций вызывает int 0x40)',0 .361:db 'остановить проигрываемое CD-audio (макрос для сист. функций вызывает int 0x40)',0 .362:db 'извлечь лоток привода диска (макрос для сист. функций вызывает int 0x40)',0 .363:db 'загрузить лоток привода диска (макрос для сист. функций вызывает int 0x40)',0 .364:db 'установить громкость SBPro - удалена (макрос для сист. функций вызывает int 0x40)',0 .365:db 'получить базовый порт MPU MIDI (макрос для сист. функций вызывает int 0x40)',0 .366:db 'получить канал DMA для звука (макрос для сист. функций вызывает int 0x40)',0 .367:db 'Узнать, разрешён ли низкоуровневый доступ к HD (макрос для сист. функций вызывает int 0x40)',0 .368:db 'Узнать, разрешён ли низкоуровневый доступ к PCI (макрос для сист. функций вызывает int 0x40)',0 .369:db 'получить раскладку клавиатуры (макрос для сист. функций вызывает int 0x40)',0 .370:db 'получить базу CD (макрос для сист. функций вызывает int 0x40)',0 .371:db 'получить базовый порт Sound Blaster (макрос для сист. функций вызывает int 0x40)',0 .372:db 'получить язык системы (макрос для сист. функций вызывает int 0x40)',0 .373:db 'получить базу HD (макрос для сист. функций вызывает int 0x40)',0 .374:db 'получить раздел HD (макрос для сист. функций вызывает int 0x40)',0 .375:db 'получить значение счётчика времени (макрос для сист. функций вызывает int 0x40)',0 .376:db 'установить громкость SB16 - удалена (макрос для сист. функций вызывает int 0x40)',0 .377:db 'получить системную дату (макрос для сист. функций вызывает int 0x40)',0 .378:db 'получить системное время (макрос для сист. функций вызывает int 0x40)',0 .379:db 'работа с текущей папкой (макрос для сист. функций вызывает int 0x40)',0 .380:db 'удалить файл с рамдиска - удалена (макрос для сист. функций вызывает int 0x40)',0 .381:db 'записать файл на рамдиск - удалена (макрос для сист. функций вызывает int 0x40)',0 .382:db 'прочитать цвет точки на экране (макрос для сист. функций вызывает int 0x40)',0 .383:db 'работа с мышью (макрос для сист. функций вызывает int 0x40)',0 .384:db 'нарисовать отрезок (макрос для сист. функций вызывает int 0x40)',0 .385:db 'получить размер фонового изображения (макрос для сист. функций вызывает int 0x40)',0 .386:db 'прочитать точку с фонового изображения (макрос для сист. функций вызывает int 0x40)',0 .387:db 'получить режим отрисовки фона (макрос для сист. функций вызывает int 0x40)',0 .388:db 'вывести строку текста в окно (макрос для сист. функций вызывает int 0x40)',0 .389:db 'установить маску для ожидаемых событий (макрос для сист. функций вызывает int 0x40)',0 .390:db 'ввод/вывод в порт (макрос для сист. функций вызывает int 0x40)',0 .391:db 'зарезервировать/освободить группу портов ввода/вывода (макрос для сист. функций вызывает int 0x40)',0 .392:db 'вывести число в окно (макрос для сист. функций вызывает int 0x40)',0 .393:db 'применить настройки экрана (макрос для сист. функций вызывает int 0x40)',0 .394:db 'установить стиль кнопок (макрос для сист. функций вызывает int 0x40)',0 .395:db 'установить стандартные цвета окон (макрос для сист. функций вызывает int 0x40)',0 .396:db 'получить стандартные цвета окон (макрос для сист. функций вызывает int 0x40)',0 .397:db 'получить высоту скина (макрос для сист. функций вызывает int 0x40)',0 .398:db 'получить рабочую область экрана (макрос для сист. функций вызывает int 0x40)',0 .399:db 'установить рабочую область экрана (макрос для сист. функций вызывает int 0x40)',0 .400:db 'Получить область скина для текста заголовка (макрос для сист. функций вызывает int 0x40)',0 .401:db 'установить используемый скин окон (макрос для сист. функций вызывает int 0x40)',0 .402:db 'Advanced Power Management (APM) (макрос для сист. функций вызывает int 0x40)',0 .403:db 'пауза (ebx = время в сотых долях секунды) (макрос для сист. функций вызывает int 0x40)',0 .404:db 'установка формы окна (макрос для сист. функций вызывает int 0x40)',0 .405:db 'создать поток (макрос для сист. функций вызывает int 0x40)',0 .406:db 'получить конфигурацию сетевого драйвера (макрос для сист. функций вызывает int 0x40)',0 .407:db 'получить локальный IP-адрес (макрос для сист. функций вызывает int 0x40)',0 .408:db 'получить маску подсети (макрос для сист. функций вызывает int 0x40)',0 .409:db 'установить gateway IP (макрос для сист. функций вызывает int 0x40)',0 .410:db 'установить маску подсети (макрос для сист. функций вызывает int 0x40)',0 .411:db 'получить DNS IP (макрос для сист. функций вызывает int 0x40)',0 .412:db 'установить DNS IP (макрос для сист. функций вызывает int 0x40)',0 .413:db 'получить локальный MAC-адрес (макрос для сист. функций вызывает int 0x40)',0 .414:db 'установить конфигурацию сетевого драйвера (макрос для сист. функций вызывает int 0x40)',0 .415:db 'установить локальный IP-адрес (макрос для сист. функций вызывает int 0x40)',0 .416:db 'добавить данные в стек входной очереди (макрос для сист. функций вызывает int 0x40)',0 .417:db 'Прочитать данные из сетевой очереди вывода (макрос для сист. функций вызывает int 0x40)',0 .418:db 'получить gateway IP (макрос для сист. функций вызывает int 0x40)',0 .419:db 'открыть UDP-сокет (макрос для сист. функций вызывает int 0x40)',0 .420:db 'закрыть UDP-сокет (макрос для сист. функций вызывает int 0x40)',0 .421:db 'получить статус кабеля Ethernet (макрос для сист. функций вызывает int 0x40)',0 .422:db 'прочитать данные сетевого стека (макрос для сист. функций вызывает int 0x40)',0 .423:db 'опрос сокета (макрос для сист. функций вызывает int 0x40)',0 .424:db 'отладочная информация сетевого драйвера (макрос для сист. функций вызывает int 0x40)',0 .425:db 'прочитать байт из сокета (макрос для сист. функций вызывает int 0x40)',0 .426:db 'записать в UDP-сокет (макрос для сист. функций вызывает int 0x40)',0 .427:db 'открыть TCP-сокет (макрос для сист. функций вызывает int 0x40)',0 .428:db 'получить состояние TCP-сокета (макрос для сист. функций вызывает int 0x40)',0 .429:db 'записать в TCP-сокет (макрос для сист. функций вызывает int 0x40)',0 .430:db 'закрыть TCP-сокет (макрос для сист. функций вызывает int 0x40)',0 .431:db 'проверить, свободен ли локальный порт (макрос для сист. функций вызывает int 0x40)',0 .432:db 'загрузить данные для SB16 (макрос для сист. функций вызывает int 0x40)',0 .433:db 'начать проигрывать данные на SB16 (макрос для сист. функций вызывает int 0x40)',0 .434:db 'установить формат данных SB16 (макрос для сист. функций вызывает int 0x40)',0 .435:db 'Начать проигрывать данные на встроенном спикере (макрос для сист. функций вызывает int 0x40)',0 .436:db 'PCI BIOS (макрос для сист. функций вызывает int 0x40)',0 .437:db 'работа с файловой системой (макрос для сист. функций вызывает int 0x40)',0 .438:db 'прочитать файл/папку (макрос для сист. функций вызывает int 0x40)',0 .439:db 'получить информацию о файловой системе (макрос для сист. функций вызывает int 0x40)',0 .440:db 'LBA-чтение с устройства (макрос для сист. функций вызывает int 0x40)',0 .441:db 'прочитать файл с рамдиска (макрос для сист. функций вызывает int 0x40)',0 .442:db 'Inter Process Communication (IPC) (макрос для сист. функций вызывает int 0x40)',0 .443:db 'получить параметры для прямого доступа к графике (макрос для сист. функций вызывает int 0x40)',0 .444:db 'получить версию PCI-интерфейса (макрос для сист. функций вызывает int 0x40)',0 .445:db 'получить номер последней PCI-шины (макрос для сист. функций вызывает int 0x40)',0 .446:db 'записать в PCI-регистр (макрос для сист. функций вызывает int 0x40)',0 .447:db 'Получить механизм обращения к конфигурационному пространству PCI (макрос для сист. функций вызывает int 0x40)',0 .448:db 'прочитать PCI-регистр (макрос для сист. функций вызывает int 0x40)',0 .449:db 'прочитать PCI-регистр (макрос для сист. функций вызывает int 0x40)',0 .450:db 'прочитать PCI-регистр (макрос для сист. функций вызывает int 0x40)',0 .451:db 'записать в PCI-регистр (макрос для сист. функций вызывает int 0x40)',0 .452:db 'записать в PCI-регистр (макрос для сист. функций вызывает int 0x40)',0 .453:db 'работа с доской отладки (макрос для сист. функций вызывает int 0x40)',0 .454:db 'перераспределить память приложения (макрос для сист. функций вызывает int 0x40)',0 .455:db 'вывести изображение с палитрой в окно (макрос для сист. функций вызывает int 0x40)',0 .456:db 'работа с клавиатурой (макрос для сист. функций вызывает int 0x40)',0 .457:db 'установить режим ввода с клавиатуры, ecx=0 обычный (ASCII-символы) ecx=1 сканкоды (макрос для сист. функций вызывает int 0x40)',0 .458:db 'получить режим ввода с клавиатуры (макрос для сист. функций вызывает int 0x40)',0 .459:db 'получить состояние управляющих клавиш (макрос для сист. функций вызывает int 0x40)',0 .460:db 'установить общесистемную "горячую клавишу" (макрос для сист. функций вызывает int 0x40)',0 .461:db 'удалить установленную "горячую клавишу" (макрос для сист. функций вызывает int 0x40)',0 .462:db 'изменить положение/размеры окна (макрос для сист. функций вызывает int 0x40)',0 .463:db 'получить счётчик переключений задач (макрос для сист. функций вызывает int 0x40)',0 .464:db 'Переключиться на следующий поток выполнения (макрос для сист. функций вызывает int 0x40)',0 .465:db 'инициализировать кучу процесса (макрос для сист. функций вызывает int 0x40)',0 .466:db 'выделить блок памяти (макрос для сист. функций вызывает int 0x40)',0 .467:db 'освободить блок памяти (макрос для сист. функций вызывает int 0x40)',0 .468:db 'ожидать извещения от драйвера (макрос для сист. функций вызывает int 0x40)',0 .469:db 'установить обработчик исключений FPU (макрос для сист. функций вызывает int 0x40)',0 .470:db 'загрузить драйвер (макрос для сист. функций вызывает int 0x40)',0 .471:db 'управление драйвером (макрос для сист. функций вызывает int 0x40)',0 .472:db 'загрузить DLL (макрос для сист. функций вызывает int 0x40)',0 .473:db 'кэш + rdpmc (макрос для сист. функций вызывает int 0x40)',0 .474:db 'перераспределить блок памяти (макрос для сист. функций вызывает int 0x40)',0 .475:db 'прочитать MSR-регистр (макрос для сист. функций вызывает int 0x40)',0 .476:db 'записать в MSR-регистр (макрос для сист. функций вызывает int 0x40)',0 .477:db 'отладка (макрос для сист. функций вызывает int 0x40)',0 .478:db 'Определить область данных для отладочных сообщений (макрос для сист. функций вызывает int 0x40)',0 .479:db 'Получить состояние регистров отлаживаемого потока (макрос для сист. функций вызывает int 0x40)',0 .480:db 'Установить состояние регистров отлаживаемого потока (макрос для сист. функций вызывает int 0x40)',0 .481:db 'отключиться от отлаживаемого процесса (макрос для сист. функций вызывает int 0x40)',0 .482:db 'приостановить отлаживаемый поток (макрос для сист. функций вызывает int 0x40)',0 .483:db 'Возобновить выполнение отлаживаемого потока (макрос для сист. функций вызывает int 0x40)',0 .484:db 'Прочитать из памяти отлаживаемого процесса (макрос для сист. функций вызывает int 0x40)',0 .485:db 'записать в память отлаживаемого процесса (макрос для сист. функций вызывает int 0x40)',0 .486:db 'завершить отлаживаемый поток (макрос для сист. функций вызывает int 0x40)',0 .487:db 'Установить/снять аппаратную точку останова (макрос для сист. функций вызывает int 0x40)',0 .488:db 'вывести изображение в окно (макрос для сист. функций вызывает int 0x40)',0 .489:db 'работа с файловой системой с поддержкой длинных имён (макрос для сист. функций вызывает int 0x40)',0 .490:db 'чтение файла с поддержкой длинных имён, ebx=указатель на информационную структуру (макрос для сист. функций вызывает int 0x40)',0 .491:db 'чтение папки с поддержкой длинных имён, ebx=указатель на информационную структуру (макрос для сист. функций вызывает int 0x40)',0 .492:db 'Создание/перезапись файла с поддержкой длинных имён, ebx=указатель на информационную структуру (макрос для сист. функций вызывает int 0x40)',0 .493:db 'Запись в существующий файл с поддержкой длинных имён, ebx=указатель на информационную структуру (макрос для сист. функций вызывает int 0x40)',0 .494:db 'установка размера файла, ebx=указатель на информационную структуру (макрос для сист. функций вызывает int 0x40)',0 .495:db 'получение информации о файле/папке, ebx=указатель на информационную структуру (макрос для сист. функций вызывает int 0x40)',0 .496:db 'установка атрибутов файла/папки, ebx=указатель на информационную структуру (макрос для сист. функций вызывает int 0x40)',0 .497:db 'запуск программы, ebx=указатель на информационную структуру (макрос для сист. функций вызывает int 0x40)',0 .498:db 'удаление файла/папки, ebx=указатель на информационную структуру (макрос для сист. функций вызывает int 0x40)',0 .499:db 'создание папки, ebx=указатель на информационную структуру (макрос для сист. функций вызывает int 0x40)',0 .500:db 'установить заголовок окна программы (макрос для сист. функций вызывает int 0x40)',0 .501:db 'определить/удалить кнопку (макрос для сист. функций вызывает int 0x40)',0 .502:db 'информация о потоке выполнения (макрос для сист. функций вызывает int 0x40)',0 .511:db 'поместить значение второго операнда в первый',0 .520:db 'пустая операция',0 .522:db 'флаговый регистр переполнения',0 .528:db 'флаговый регистр четности',0 .530:db 'выгрузка из стека 2-х байтных регистров общего назначения',0 .531:db 'выгрузка из стека 4-х байтных регистров общего назначения',0 .534:db 'макрос для описания функции (процесса)',0 .536:db 'загрузка слова в стек',0 .537:db 'загрузка в стек 2-х байтных регистров общего назначения',0 .538:db 'загрузка в стек 4-х байтных регистров общего назначения',0 .539:db 'загрузка содержимого регистра flags в стек',0 .542:db '8 байт',0 .552:db 'циклический сдвиг влево',0 .553:db 'циклический сдвиг вправо',0 .554:db 'сохраняет регистр ah в регистр флагов (воздействует на af, cf, pf, sf, zf)',0 .559:db 'просмотр 1-но байтной строки ',0 .560:db 'просмотр 4-х байтной строки ',0 .561:db 'просмотр 2-х байтной строки ',0 .563:db 'флаговый регистр знака',0 .565:db 'сдвиг влево на опред. кол. бит (увеличивает число в 2^n раз)',0 .566:db 'сдвиг вправо на опред. кол. бит (уменьшает число в 2^n раз)',0 .567:db 'индексный регистр',0 .569:db 'регистр указателя',0 .570:db 'сегментный регистр - сегмент стека',0 .581:db 'макрос для вызова функции (операция call) с записью параметров в стек (операция push)',0 .584:db 'запись в 1-но байтную строку',0 .585:db 'запись в 4-х байтную строку',0 .586:db 'запись в 2-х байтную строку',0 .587:db 'макрос для описания структуры',0 .589:db 'вычесть из первого операнда второй',0 .593:db 'флаговый регистр трассировки',0 .594:db '10 байт',0 .595:db 'генерирует в процедурах (функциях) код для сохранения и восстановления указанных регистров',0 .596:db '2 байта',0 .598:db 'обмен значениями',0 .609:db 'операция исключающее или | 0+0=0 | 0+1=1 | 1+0=1 | 1+1=0 |',0 .610:db 'флаговый регистр нулевого результата',0 \ No newline at end of file +macro wo txt,f1,p1,p2,p3{ @@: db txt rb @b+40-$ dd f1+0 db p1 dw p2+0 db p3 } text: wo<'!'>,,0,,1 wo<'!='>,,0,,1 wo<'"'>,,4,34,3 wo<'&&'>,,0,,1 wo<'',39,''>,,4,39,3 wo<'('>,,0,,1 wo<')'>,,0,,1 wo<'+'>,,0,,1 wo<','>,,0,,1 wo<'.286'>,,3,,1 wo<'.386'>,,3,,1 wo<'.386p'>,,3,,1 wo<'.486'>,,3,,1 wo<'.486p'>,,3,,1 wo<'.586'>,,3,,1 wo<'.586p'>,,3,,1 wo<'.bottom'>,,2,,9 wo<'.break'>,,3,,6 wo<'.code'>,f1.19-f1,3,,1 wo<'.const'>,f1.20-f1,3,,1 wo<'.continue'>,,3,,6 wo<'.data'>,f1.22-f1,3,,1 wo<'.data?'>,f1.23-f1,3,,1 wo<'.else'>,,3,,6 wo<'.elseif'>,,3,,6 wo<'.endif'>,f1.26-f1,3,,6 wo<'.endw'>,,3,,6 wo<'.height'>,,2,,9 wo<'.if'>,,3,,6 wo<'.left'>,,2,,9 wo<'.model'>,,3,,1 wo<'.right'>,,2,,9 wo<'.top'>,,2,,9 wo<'.while'>,,3,,6 wo<'.width'>,,2,,9 wo<'0'>,,24,,3 wo<'0h'>,,10,,3 wo<'1'>,,24,,3 wo<'1h'>,,10,,3 wo<'2'>,,24,,3 wo<'2h'>,,10,,3 wo<'3'>,,24,,3 wo<'3h'>,,10,,3 wo<'4'>,,24,,3 wo<'4h'>,,10,,3 wo<'5'>,,24,,3 wo<'5h'>,,10,,3 wo<'6'>,,24,,3 wo<'6h'>,,10,,3 wo<'7'>,,24,,3 wo<'7h'>,,10,,3 wo<'8'>,,24,,3 wo<'8h'>,,10,,3 wo<'9'>,,24,,3 wo<'9h'>,,10,,3 wo<':'>,,0,,1 wo<';'>,f1.57-f1,4,13,4 wo<'<'>,,0,,1 wo<'<='>,,0,,1 wo<'=='>,,0,,1 wo<'>'>,,0,,1 wo<'>='>,,0,,1 wo<'?'>,,0,,1 wo<'@@'>,f1.64-f1,3,,6 wo<'@b'>,f1.65-f1,3,,6 wo<'@f'>,f1.66-f1,3,,6 wo<'@r'>,f1.67-f1,3,,6 wo<'['>,,0,,1 wo<']'>,,0,,1 wo<'aaa'>,f1.70-f1,3,,1 wo<'aad'>,,3,,1 wo<'aam'>,,3,,1 wo<'aas'>,,3,,1 wo<'adc'>,,3,,1 wo<'add'>,f1.75-f1,3,,1 wo<'addr'>,,3,,1 wo<'af'>,f1.77-f1,3,,2 wo<'ah'>,f1.78-f1,3,,2 wo<'al'>,f1.79-f1,3,,2 wo<'align'>,,3,,1 wo<'and'>,,3,,1 wo<'ax'>,f1.82-f1,3,,2 wo<'bh'>,,3,,2 wo<'bl'>,,3,,2 wo<'bound'>,,3,,1 wo<'bp'>,f1.86-f1,3,,2 wo<'bsf'>,,3,,1 wo<'bsr'>,,3,,1 wo<'bswap'>,,3,,1 wo<'bt'>,f1.90-f1,3,,1 wo<'btc'>,f1.91-f1,3,,1 wo<'btr'>,f1.92-f1,3,,1 wo<'bts'>,f1.93-f1,3,,1 wo<'bx'>,f1.94-f1,3,,2 wo<'byte'>,f1.95-f1,3,,8 wo<'call'>,f1.96-f1,3,,1 wo<'case'>,,3,,6 wo<'casemap'>,,3,,1 wo<'cbw'>,,3,,1 wo<'cdq'>,,3,,1 wo<'cf'>,f1.101-f1,3,,2 wo<'ch'>,,3,,2 wo<'cl'>,f1.103-f1,3,,2 wo<'clc'>,f1.104-f1,3,,1 wo<'cld'>,f1.105-f1,3,,1 wo<'cli'>,f1.106-f1,3,,1 wo<'cmc'>,,3,,1 wo<'cmp'>,f1.108-f1,3,,1 wo<'cmps'>,,3,,1 wo<'cmpsb'>,f1.110-f1,3,,1 wo<'cmpsd'>,f1.111-f1,3,,1 wo<'cmpsq'>,,3,,1 wo<'cmpsw'>,f1.113-f1,3,,1 wo<'cmpxchg'>,,3,,1 wo<'comment *'>,f1.115-f1,5,42,4 wo<'cr0'>,,3,,2 wo<'cr1'>,,3,,2 wo<'cr2'>,,3,,2 wo<'cr3'>,,3,,2 wo<'cr4'>,,3,,2 wo<'cs'>,f1.121-f1,3,,2 wo<'cwd'>,f1.122-f1,3,,1 wo<'cwde'>,,3,,1 wo<'cx'>,f1.124-f1,3,,2 wo<'daa'>,f1.125-f1,3,,1 wo<'das'>,f1.126-f1,3,,1 wo<'db'>,f1.127-f1,3,,8 wo<'dd'>,f1.128-f1,3,,8 wo<'dec'>,f1.129-f1,3,,1 wo<'df'>,f1.130-f1,3,,2 wo<'dh'>,,3,,2 wo<'di'>,,3,,2 wo<'div'>,f1.133-f1,3,,1 wo<'dl'>,,3,,2 wo<'dq'>,f1.135-f1,3,,8 wo<'dqword'>,,3,,8 wo<'dr0'>,f1.137-f1,3,,2 wo<'dr1'>,f1.138-f1,3,,2 wo<'dr2'>,f1.139-f1,3,,2 wo<'dr3'>,f1.140-f1,3,,2 wo<'dr4'>,f1.141-f1,3,,2 wo<'dr5'>,f1.142-f1,3,,2 wo<'dr6'>,f1.143-f1,3,,2 wo<'dr7'>,f1.144-f1,3,,2 wo<'ds'>,f1.145-f1,3,,2 wo<'dt'>,f1.146-f1,3,,8 wo<'dup'>,f1.147-f1,3,,1 wo<'dw'>,f1.148-f1,3,,8 wo<'dword'>,f1.149-f1,3,,8 wo<'dx'>,f1.150-f1,3,,2 wo<'eax'>,f1.151-f1,3,,2 wo<'ebp'>,,3,,2 wo<'ebx'>,f1.153-f1,3,,2 wo<'ecx'>,f1.154-f1,3,,2 wo<'edi'>,f1.155-f1,3,,2 wo<'edx'>,f1.156-f1,3,,2 wo<'eip'>,f1.157-f1,3,,2 wo<'end'>,f1.158-f1,3,,1 wo<'endm'>,f1.159-f1,3,,1 wo<'endp'>,f1.160-f1,3,,5 wo<'ends'>,f1.161-f1,3,,1 wo<'enter'>,,3,,1 wo<'equ'>,,3,,1 wo<'es'>,f1.164-f1,3,,2 wo<'esc'>,f1.165-f1,3,,1 wo<'esi'>,,3,,2 wo<'esp'>,,3,,2 wo<'f2xm1'>,f1.168-f1,3,,1 wo<'fabs'>,f1.169-f1,3,,1 wo<'fadd'>,f1.170-f1,3,,1 wo<'faddp'>,,3,,1 wo<'fbld'>,f1.172-f1,3,,1 wo<'fchs'>,f1.173-f1,3,,1 wo<'fcom'>,f1.174-f1,3,,1 wo<'fcomp'>,f1.175-f1,3,,1 wo<'fcompp'>,f1.176-f1,3,,1 wo<'fcos'>,f1.177-f1,3,,1 wo<'fdecstp'>,f1.178-f1,3,,1 wo<'fdiv'>,f1.179-f1,3,,1 wo<'fdivp'>,,3,,1 wo<'fdivr'>,,3,,1 wo<'fdivrp'>,,3,,1 wo<'ffree'>,f1.183-f1,3,,1 wo<'ficom'>,f1.184-f1,3,,1 wo<'ficomp'>,f1.185-f1,3,,1 wo<'fild'>,f1.186-f1,3,,1 wo<'fimul'>,,3,,1 wo<'fincstp'>,f1.188-f1,3,,1 wo<'finit'>,f1.189-f1,3,,1 wo<'fistp'>,,3,,1 wo<'fisub'>,,3,,1 wo<'fld'>,f1.192-f1,3,,1 wo<'fld1'>,f1.193-f1,3,,1 wo<'fldenvw'>,,3,,1 wo<'fldl2e'>,f1.195-f1,3,,1 wo<'fldl2t'>,f1.196-f1,3,,1 wo<'fldlg2'>,f1.197-f1,3,,1 wo<'fldln2'>,f1.198-f1,3,,1 wo<'fldpi'>,f1.199-f1,3,,1 wo<'fldz'>,f1.200-f1,3,,1 wo<'fmul'>,f1.201-f1,3,,1 wo<'fmulp'>,,3,,1 wo<'fnsavew'>,,3,,1 wo<'fnstenvw'>,,3,,1 wo<'fpatan'>,f1.205-f1,3,,1 wo<'fprem'>,f1.206-f1,3,,1 wo<'fptan'>,f1.207-f1,3,,1 wo<'frndint'>,f1.208-f1,3,,1 wo<'frstorw'>,,3,,1 wo<'fs'>,,3,,2 wo<'fsavew'>,,3,,1 wo<'fscale'>,f1.212-f1,3,,1 wo<'fsin'>,f1.213-f1,3,,1 wo<'fsincos'>,f1.214-f1,3,,1 wo<'fsqrt'>,f1.215-f1,3,,1 wo<'fst'>,f1.216-f1,3,,1 wo<'fstenvw'>,,3,,1 wo<'fstp'>,f1.218-f1,3,,1 wo<'fstsw'>,,3,,1 wo<'fsub'>,f1.220-f1,3,,1 wo<'fsubp'>,,3,,1 wo<'fsubr'>,,3,,1 wo<'fsubrp'>,,3,,1 wo<'ftst'>,f1.224-f1,3,,1 wo<'fword'>,,3,,8 wo<'fxam'>,f1.226-f1,3,,1 wo<'fxch'>,f1.227-f1,3,,1 wo<'fxtract'>,f1.228-f1,3,,1 wo<'fyl2x'>,f1.229-f1,3,,1 wo<'fyl2xp1'>,f1.230-f1,3,,1 wo<'gs'>,,3,,2 wo<'hlt'>,f1.232-f1,3,,1 wo<'idiv'>,f1.233-f1,3,,1 wo<'if'>,f1.234-f1,3,,2 wo<'imul'>,f1.235-f1,3,,1 wo<'in'>,,3,,1 wo<'inc'>,f1.237-f1,3,,1 wo<'include'>,,3,,2 wo<'includelib'>,f1.239-f1,3,,2 wo<'ins'>,,3,,1 wo<'insb'>,,3,,1 wo<'insd'>,,3,,1 wo<'insw'>,,3,,1 wo<'int'>,,3,,1 wo<'into'>,,3,,1 wo<'ip'>,f1.246-f1,3,,2 wo<'iret'>,,3,,1 wo<'iretd'>,,3,,1 wo<'ja'>,f1.249-f1,3,,6 wo<'jae'>,f1.250-f1,3,,6 wo<'jb'>,f1.251-f1,3,,6 wo<'jbe'>,f1.252-f1,3,,6 wo<'jc'>,f1.253-f1,3,,6 wo<'jcc'>,,3,,1 wo<'jcxz'>,f1.255-f1,3,,6 wo<'je'>,f1.256-f1,3,,6 wo<'jecxz'>,f1.257-f1,3,,6 wo<'jg'>,f1.258-f1,3,,6 wo<'jge'>,f1.259-f1,3,,6 wo<'jl'>,f1.260-f1,3,,6 wo<'jle'>,f1.261-f1,3,,6 wo<'jmp'>,f1.262-f1,3,,6 wo<'jna'>,,3,,6 wo<'jnae'>,,3,,6 wo<'jnb'>,,3,,6 wo<'jnbe'>,,3,,6 wo<'jnc'>,,3,,6 wo<'jne'>,,3,,6 wo<'jng'>,,3,,6 wo<'jnge'>,,3,,6 wo<'jnl'>,,3,,6 wo<'jnle'>,,3,,6 wo<'jno'>,,3,,6 wo<'jnp'>,,3,,6 wo<'jns'>,,3,,6 wo<'jnz'>,f1.276-f1,3,,6 wo<'jo'>,f1.277-f1,3,,6 wo<'jp'>,,3,,6 wo<'jpe'>,,3,,6 wo<'jpo'>,f1.280-f1,3,,6 wo<'js'>,f1.281-f1,3,,6 wo<'jz'>,f1.282-f1,3,,6 wo<'lahf'>,,3,,1 wo<'lds'>,,3,,1 wo<'lea'>,,3,,1 wo<'leave'>,,3,,1 wo<'les'>,,3,,1 wo<'lfs'>,,3,,1 wo<'lgdt'>,,3,,1 wo<'lgs'>,,3,,1 wo<'lidt'>,,3,,1 wo<'local'>,f1.292-f1,3,,1 wo<'lods'>,,3,,1 wo<'lodsb'>,f1.294-f1,3,,1 wo<'lodsd'>,f1.295-f1,3,,1 wo<'lodsq'>,,3,,1 wo<'lodsw'>,f1.297-f1,3,,1 wo<'loop'>,,3,,6 wo<'lss'>,,3,,1 wo<'m2m'>,f1.300-f1,3,,5 wo<'macro'>,,3,,1 wo<'mcall -1'>,f1.302-f1,3,,5 wo<'mcall 0'>,f1.303-f1,3,,5 wo<'mcall 1'>,f1.304-f1,3,,5 wo<'mcall 10'>,f1.305-f1,3,,5 wo<'mcall 11'>,f1.306-f1,3,,5 wo<'mcall 12'>,f1.307-f1,3,,5 wo<'mcall 13'>,f1.308-f1,3,,5 wo<'mcall 14'>,f1.309-f1,3,,5 wo<'mcall 15,1'>,f1.310-f1,3,,5 wo<'mcall 15,2'>,f1.311-f1,3,,5 wo<'mcall 15,3'>,f1.312-f1,3,,5 wo<'mcall 15,4'>,f1.313-f1,3,,5 wo<'mcall 15,5'>,f1.314-f1,3,,5 wo<'mcall 15,6'>,f1.315-f1,3,,5 wo<'mcall 15,7'>,f1.316-f1,3,,5 wo<'mcall 16'>,f1.317-f1,3,,5 wo<'mcall 17'>,f1.318-f1,3,,5 wo<'mcall 18,1'>,f1.319-f1,3,,5 wo<'mcall 18,10'>,f1.320-f1,3,,5 wo<'mcall 18,11'>,f1.321-f1,3,,5 wo<'mcall 18,13'>,f1.322-f1,3,,5 wo<'mcall 18,14'>,f1.323-f1,3,,5 wo<'mcall 18,15'>,f1.324-f1,3,,5 wo<'mcall 18,16'>,f1.325-f1,3,,5 wo<'mcall 18,17'>,f1.326-f1,3,,5 wo<'mcall 18,18'>,f1.327-f1,3,,5 wo<'mcall 18,19'>,f1.328-f1,3,,5 wo<'mcall 18,2'>,f1.329-f1,3,,5 wo<'mcall 18,20'>,f1.330-f1,3,,5 wo<'mcall 18,21'>,f1.331-f1,3,,5 wo<'mcall 18,22'>,f1.332-f1,3,,5 wo<'mcall 18,3'>,f1.333-f1,3,,5 wo<'mcall 18,4'>,f1.334-f1,3,,5 wo<'mcall 18,5'>,f1.335-f1,3,,5 wo<'mcall 18,6'>,f1.336-f1,3,,5 wo<'mcall 18,7'>,f1.337-f1,3,,5 wo<'mcall 18,8'>,f1.338-f1,3,,5 wo<'mcall 18,9'>,f1.339-f1,3,,5 wo<'mcall 2'>,f1.340-f1,3,,5 wo<'mcall 20'>,f1.341-f1,3,,5 wo<'mcall 21,1'>,f1.342-f1,3,,5 wo<'mcall 21,10'>,f1.343-f1,3,,5 wo<'mcall 21,11'>,f1.344-f1,3,,5 wo<'mcall 21,12'>,f1.345-f1,3,,5 wo<'mcall 21,13,1'>,f1.346-f1,3,,5 wo<'mcall 21,13,2'>,f1.347-f1,3,,5 wo<'mcall 21,13,3'>,f1.348-f1,3,,5 wo<'mcall 21,13,4'>,f1.349-f1,3,,5 wo<'mcall 21,13,5'>,f1.350-f1,3,,5 wo<'mcall 21,2'>,f1.351-f1,3,,5 wo<'mcall 21,3'>,f1.352-f1,3,,5 wo<'mcall 21,4'>,f1.353-f1,3,,5 wo<'mcall 21,5'>,f1.354-f1,3,,5 wo<'mcall 21,7'>,f1.355-f1,3,,5 wo<'mcall 21,8'>,f1.356-f1,3,,5 wo<'mcall 22'>,f1.357-f1,3,,5 wo<'mcall 23'>,f1.358-f1,3,,5 wo<'mcall 24,1'>,f1.359-f1,3,,5 wo<'mcall 24,2'>,f1.360-f1,3,,5 wo<'mcall 24,3'>,f1.361-f1,3,,5 wo<'mcall 24,4'>,f1.362-f1,3,,5 wo<'mcall 24,5'>,f1.363-f1,3,,5 wo<'mcall 25'>,f1.364-f1,3,,5 wo<'mcall 26,1'>,f1.365-f1,3,,5 wo<'mcall 26,10'>,f1.366-f1,3,,5 wo<'mcall 26,11'>,f1.367-f1,3,,5 wo<'mcall 26,12'>,f1.368-f1,3,,5 wo<'mcall 26,2'>,f1.369-f1,3,,5 wo<'mcall 26,3'>,f1.370-f1,3,,5 wo<'mcall 26,4'>,f1.371-f1,3,,5 wo<'mcall 26,5'>,f1.372-f1,3,,5 wo<'mcall 26,7'>,f1.373-f1,3,,5 wo<'mcall 26,8'>,f1.374-f1,3,,5 wo<'mcall 26,9'>,f1.375-f1,3,,5 wo<'mcall 28'>,f1.376-f1,3,,5 wo<'mcall 29'>,f1.377-f1,3,,5 wo<'mcall 3'>,f1.378-f1,3,,5 wo<'mcall 30'>,f1.379-f1,3,,5 wo<'mcall 32'>,f1.380-f1,3,,5 wo<'mcall 33'>,f1.381-f1,3,,5 wo<'mcall 35'>,f1.382-f1,3,,5 wo<'mcall 37'>,f1.383-f1,3,,5 wo<'mcall 38'>,f1.384-f1,3,,5 wo<'mcall 39,1'>,f1.385-f1,3,,5 wo<'mcall 39,2'>,f1.386-f1,3,,5 wo<'mcall 39,4'>,f1.387-f1,3,,5 wo<'mcall 4'>,f1.388-f1,3,,5 wo<'mcall 40'>,f1.389-f1,3,,5 wo<'mcall 43'>,f1.390-f1,3,,5 wo<'mcall 46'>,f1.391-f1,3,,5 wo<'mcall 47'>,f1.392-f1,3,,5 wo<'mcall 48,0'>,f1.393-f1,3,,5 wo<'mcall 48,1'>,f1.394-f1,3,,5 wo<'mcall 48,2'>,f1.395-f1,3,,5 wo<'mcall 48,3'>,f1.396-f1,3,,5 wo<'mcall 48,4'>,f1.397-f1,3,,5 wo<'mcall 48,5'>,f1.398-f1,3,,5 wo<'mcall 48,6'>,f1.399-f1,3,,5 wo<'mcall 48,7'>,f1.400-f1,3,,5 wo<'mcall 48,8'>,f1.401-f1,3,,5 wo<'mcall 49'>,f1.402-f1,3,,5 wo<'mcall 5'>,f1.403-f1,3,,5 wo<'mcall 50'>,f1.404-f1,3,,5 wo<'mcall 51'>,f1.405-f1,3,,5 wo<'mcall 52,0'>,f1.406-f1,3,,5 wo<'mcall 52,1'>,f1.407-f1,3,,5 wo<'mcall 52,10'>,f1.408-f1,3,,5 wo<'mcall 52,11'>,f1.409-f1,3,,5 wo<'mcall 52,12'>,f1.410-f1,3,,5 wo<'mcall 52,13'>,f1.411-f1,3,,5 wo<'mcall 52,14'>,f1.412-f1,3,,5 wo<'mcall 52,15'>,f1.413-f1,3,,5 wo<'mcall 52,2'>,f1.414-f1,3,,5 wo<'mcall 52,3'>,f1.415-f1,3,,5 wo<'mcall 52,6'>,f1.416-f1,3,,5 wo<'mcall 52,8'>,f1.417-f1,3,,5 wo<'mcall 52,9'>,f1.418-f1,3,,5 wo<'mcall 53,0'>,f1.419-f1,3,,5 wo<'mcall 53,1'>,f1.420-f1,3,,5 wo<'mcall 53,10'>,f1.421-f1,3,,5 wo<'mcall 53,11'>,f1.422-f1,3,,5 wo<'mcall 53,2'>,f1.423-f1,3,,5 wo<'mcall 53,255'>,f1.424-f1,3,,5 wo<'mcall 53,3'>,f1.425-f1,3,,5 wo<'mcall 53,4'>,f1.426-f1,3,,5 wo<'mcall 53,5'>,f1.427-f1,3,,5 wo<'mcall 53,6'>,f1.428-f1,3,,5 wo<'mcall 53,7'>,f1.429-f1,3,,5 wo<'mcall 53,8'>,f1.430-f1,3,,5 wo<'mcall 53,9'>,f1.431-f1,3,,5 wo<'mcall 55,0'>,f1.432-f1,3,,5 wo<'mcall 55,1'>,f1.433-f1,3,,5 wo<'mcall 55,2'>,f1.434-f1,3,,5 wo<'mcall 55,55'>,f1.435-f1,3,,5 wo<'mcall 57'>,f1.436-f1,3,,5 wo<'mcall 58'>,f1.437-f1,3,,5 wo<'mcall 58,0'>,f1.438-f1,3,,5 wo<'mcall 58,15'>,f1.439-f1,3,,5 wo<'mcall 58,8'>,f1.440-f1,3,,5 wo<'mcall 6'>,f1.441-f1,3,,5 wo<'mcall 60'>,f1.442-f1,3,,5 wo<'mcall 61'>,f1.443-f1,3,,5 wo<'mcall 62,0'>,f1.444-f1,3,,5 wo<'mcall 62,1'>,f1.445-f1,3,,5 wo<'mcall 62,10'>,f1.446-f1,3,,5 wo<'mcall 62,2'>,f1.447-f1,3,,5 wo<'mcall 62,4'>,f1.448-f1,3,,5 wo<'mcall 62,5'>,f1.449-f1,3,,5 wo<'mcall 62,6'>,f1.450-f1,3,,5 wo<'mcall 62,8'>,f1.451-f1,3,,5 wo<'mcall 62,9'>,f1.452-f1,3,,5 wo<'mcall 63'>,f1.453-f1,3,,5 wo<'mcall 64'>,f1.454-f1,3,,5 wo<'mcall 65'>,f1.455-f1,3,,5 wo<'mcall 66'>,f1.456-f1,3,,5 wo<'mcall 66,1'>,f1.457-f1,3,,5 wo<'mcall 66,2'>,f1.458-f1,3,,5 wo<'mcall 66,3'>,f1.459-f1,3,,5 wo<'mcall 66,4'>,f1.460-f1,3,,5 wo<'mcall 66,5'>,f1.461-f1,3,,5 wo<'mcall 67'>,f1.462-f1,3,,5 wo<'mcall 68,0'>,f1.463-f1,3,,5 wo<'mcall 68,1'>,f1.464-f1,3,,5 wo<'mcall 68,11'>,f1.465-f1,3,,5 wo<'mcall 68,12'>,f1.466-f1,3,,5 wo<'mcall 68,13'>,f1.467-f1,3,,5 wo<'mcall 68,14'>,f1.468-f1,3,,5 wo<'mcall 68,15'>,f1.469-f1,3,,5 wo<'mcall 68,16'>,f1.470-f1,3,,5 wo<'mcall 68,17'>,f1.471-f1,3,,5 wo<'mcall 68,19'>,f1.472-f1,3,,5 wo<'mcall 68,2'>,f1.473-f1,3,,5 wo<'mcall 68,20'>,f1.474-f1,3,,5 wo<'mcall 68,3'>,f1.475-f1,3,,5 wo<'mcall 68,4'>,f1.476-f1,3,,5 wo<'mcall 69'>,f1.477-f1,3,,5 wo<'mcall 69,0'>,f1.478-f1,3,,5 wo<'mcall 69,1'>,f1.479-f1,3,,5 wo<'mcall 69,2'>,f1.480-f1,3,,5 wo<'mcall 69,3'>,f1.481-f1,3,,5 wo<'mcall 69,4'>,f1.482-f1,3,,5 wo<'mcall 69,5'>,f1.483-f1,3,,5 wo<'mcall 69,6'>,f1.484-f1,3,,5 wo<'mcall 69,7'>,f1.485-f1,3,,5 wo<'mcall 69,8'>,f1.486-f1,3,,5 wo<'mcall 69,9'>,f1.487-f1,3,,5 wo<'mcall 7'>,f1.488-f1,3,,5 wo<'mcall 70'>,f1.489-f1,3,,5 wo<'mcall 70,0'>,f1.490-f1,3,,5 wo<'mcall 70,1'>,f1.491-f1,3,,5 wo<'mcall 70,2'>,f1.492-f1,3,,5 wo<'mcall 70,3'>,f1.493-f1,3,,5 wo<'mcall 70,4'>,f1.494-f1,3,,5 wo<'mcall 70,5'>,f1.495-f1,3,,5 wo<'mcall 70,6'>,f1.496-f1,3,,5 wo<'mcall 70,7'>,f1.497-f1,3,,5 wo<'mcall 70,8'>,f1.498-f1,3,,5 wo<'mcall 70,9'>,f1.499-f1,3,,5 wo<'mcall 71,1'>,f1.500-f1,3,,5 wo<'mcall 8'>,f1.501-f1,3,,5 wo<'mcall 9'>,f1.502-f1,3,,5 wo<'mm0'>,,3,,2 wo<'mm1'>,,3,,2 wo<'mm2'>,,3,,2 wo<'mm3'>,,3,,2 wo<'mm4'>,,3,,2 wo<'mm5'>,,3,,2 wo<'mm6'>,,3,,2 wo<'mm7'>,,3,,2 wo<'mov'>,f1.511-f1,3,,1 wo<'movs'>,,3,,1 wo<'movsb'>,,3,,1 wo<'movsd'>,,3,,1 wo<'movsw'>,,3,,1 wo<'movsx'>,,3,,1 wo<'movzx'>,,3,,1 wo<'mul'>,,3,,1 wo<'neg'>,,3,,1 wo<'nop'>,f1.520-f1,3,,1 wo<'not'>,,3,,1 wo<'of'>,f1.522-f1,3,,2 wo<'offset'>,,3,,1 wo<'option'>,,3,,1 wo<'or'>,,3,,1 wo<'out'>,,3,,1 wo<'outs'>,,3,,1 wo<'pf'>,f1.528-f1,3,,2 wo<'pop'>,,3,,1 wo<'popa'>,f1.530-f1,3,,1 wo<'popad'>,f1.531-f1,3,,1 wo<'popf'>,,3,,1 wo<'popfd'>,,3,,1 wo<'proc'>,f1.534-f1,3,,5 wo<'ptr'>,,3,,1 wo<'push'>,f1.536-f1,3,,1 wo<'pusha'>,f1.537-f1,3,,1 wo<'pushad'>,f1.538-f1,3,,1 wo<'pushf'>,f1.539-f1,3,,1 wo<'pushfd'>,,3,,1 wo<'pword'>,,3,,8 wo<'qword'>,f1.542-f1,3,,8 wo<'rcl'>,,3,,1 wo<'rcr'>,,3,,1 wo<'rep'>,,3,,1 wo<'repe'>,,3,,1 wo<'repne'>,,3,,1 wo<'repnz'>,,3,,1 wo<'repz'>,,3,,1 wo<'ret'>,,3,,1 wo<'retf'>,,3,,1 wo<'rol'>,f1.552-f1,3,,1 wo<'ror'>,f1.553-f1,3,,1 wo<'sahf'>,f1.554-f1,3,,1 wo<'sal'>,,3,,1 wo<'sar'>,,3,,1 wo<'sbb'>,,3,,1 wo<'scas'>,,3,,1 wo<'scasb'>,f1.559-f1,3,,1 wo<'scasd'>,f1.560-f1,3,,1 wo<'scasw'>,f1.561-f1,3,,1 wo<'setcc'>,,3,,1 wo<'sf'>,f1.563-f1,3,,2 wo<'sgdt'>,,3,,1 wo<'shl'>,f1.565-f1,3,,1 wo<'shr'>,f1.566-f1,3,,1 wo<'si'>,f1.567-f1,3,,2 wo<'sizeof'>,,3,,1 wo<'sp'>,f1.569-f1,3,,2 wo<'ss'>,f1.570-f1,3,,2 wo<'st0'>,,3,,2 wo<'st1'>,,3,,2 wo<'st2'>,,3,,2 wo<'st3'>,,3,,2 wo<'st4'>,,3,,2 wo<'st5'>,,3,,2 wo<'st6'>,,3,,2 wo<'st7'>,,3,,2 wo<'stc'>,,3,,1 wo<'std'>,,3,,1 wo<'stdcall'>,f1.581-f1,3,,5 wo<'sti'>,,3,,1 wo<'stos'>,,3,,1 wo<'stosb'>,f1.584-f1,3,,1 wo<'stosd'>,f1.585-f1,3,,1 wo<'stosw'>,f1.586-f1,3,,1 wo<'struc'>,f1.587-f1,3,,5 wo<'struct'>,,3,,1 wo<'sub'>,f1.589-f1,3,,1 wo<'switch'>,,3,,6 wo<'tbyte'>,,3,,8 wo<'test'>,,3,,1 wo<'tf'>,f1.593-f1,3,,2 wo<'tword'>,f1.594-f1,3,,8 wo<'uses'>,f1.595-f1,3,,1 wo<'word'>,f1.596-f1,3,,8 wo<'xadd'>,,3,,1 wo<'xchg'>,f1.598-f1,3,,1 wo<'xlat'>,,3,,1 wo<'xlatb'>,,3,,1 wo<'xmm0'>,,3,,2 wo<'xmm1'>,,3,,2 wo<'xmm2'>,,3,,2 wo<'xmm3'>,,3,,2 wo<'xmm4'>,,3,,2 wo<'xmm5'>,,3,,2 wo<'xmm6'>,,3,,2 wo<'xmm7'>,,3,,2 wo<'xor'>,f1.609-f1,3,,1 wo<'zf'>,f1.610-f1,3,,2 wo<'||'>,,0,,1 f1: db 0 .19:db 'секция кода',0 .20:db 'содержит объявления констант',0 .22:db 'инициализированные данные',0 .23:db 'неинициализированные данные',0 .26:db 'конец условного блока',0 .57:db 'однострочный комментарий',0 .64:db 'анонимная метка',0 .65:db 'верхняя анонимная метка (тоже что @r)',0 .66:db 'нижняя анонимная метка',0 .67:db 'верхняя анонимная метка (тоже что @b)',0 .70:db 'используется после сложения каждого разряда распакованных BCD-чисел (Ascii Adjust after Addition - ASCII-коррекция после сложения)',0 .75:db 'прибавить к первому операнду второй',0 .77:db 'флаговый регистр дополнительный признак переноса',0 .78:db 'регистр общего назначения 1 байт',0 .79:db 'регистр общего назначения 1 байт',0 .82:db 'регистр общего назначения 2 байта',0 .86:db 'регистр указателя',0 .90:db 'определяет, установлен ли в заданном слове определенный бит. Значение выбраного бита помещаеться в cf',0 .91:db 'значение выбраного бита помещаеться в cf, инвертирует значение бита',0 .92:db 'значение выбраного бита помещаеться в cf, в бит записываеться 0',0 .93:db 'значение выбраного бита помещаеться в cf, в бит записываеться 1',0 .94:db 'регистр общего назначения 2 байта',0 .95:db '1 байт',0 .96:db 'Вызов подпрограммы. Перед вызовом помещает в стэк адрес предыдущей команды',0 .101:db 'флаговый регистр переноса',0 .103:db 'регистр общего назначения 1 байт',0 .104:db 'сброс флага переноса cf=0',0 .105:db 'сброс признака направления df=0',0 .106:db 'сброс признака разрешения прерывания if=0',0 .108:db 'сравнение операндов и по результатам сравнения устанавливает флаги (af, cf, of, pf, sf и zf)',0 .110:db 'сравнение 1-но байтовых строк',0 .111:db 'сравнение 4-х байтовых строк',0 .113:db 'сравнение 2-х байтовых строк',0 .115:db 'многострочный комментарий',0 .121:db 'сегментный регистр - сегмент кода',0 .122:db 'преобразование слова в двойное слово. Флаги не меняются.',0 .124:db 'регистр общего назначения 2 байта',0 .125:db 'десятичная коррекция для сложения. Команда воздействует на флаги af. cf, pf, sf и zf (флаг of неопределен).',0 .126:db 'десятичная коррекция для вычитания. Команда воздействует на флаги af, cf, pf, sf и zf.',0 .127:db '1 байт',0 .128:db '4 байта - 2 слова',0 .129:db 'вычесть из операнда единицу. Команда воздействует на флаги af, of, pf, sf и zf.',0 .130:db 'флаговый регистр направления',0 .133:db 'деление. Команда воздействует на флаги af, cf, of, pf sf и zf (все не определены).',0 .135:db '8 байт - 4 слова',0 .137:db 'отладочный регистр 0-й',0 .138:db 'отладочный регистр 1-й',0 .139:db 'отладочный регистр 2-й',0 .140:db 'отладочный регистр 3-й',0 .141:db 'отладочный регистр 4-й',0 .142:db 'отладочный регистр 5-й',0 .143:db 'отладочный регистр 6-й',0 .144:db 'отладочный регистр 7-й',0 .145:db 'сегментный регистр - сегмент данных',0 .146:db '10 байт',0 .147:db 'дублирование начального значения',0 .148:db '2 байта - 1 слово',0 .149:db '4 байта',0 .150:db 'регистр общего назначения 2 байта',0 .151:db 'регистр общего назначения 4 байта',0 .153:db 'регистр общего назначения 4 байта',0 .154:db 'регистр общего назначения 4 байта',0 .155:db 'индексный регистр 4 байта',0 .156:db 'регистр общего назначения 4 байта',0 .157:db 'регистр указателя команд',0 .158:db 'конец программы',0 .159:db 'конец макроса',0 .160:db 'конец функции proc',0 .161:db 'конец структуры struct',0 .164:db 'сегментный регистр',0 .165:db 'переключение на сопроцессор. Флаги не меняются.',0 .168:db 'вычисление степени x по основанию 2 минус 1',0 .169:db 'значение по модулю числа st(0) ',0 .170:db 'сложить 2 числа с плавающей точкой',0 .172:db 'загружает из памяти в вершину стека st(0) двоично-десятичное число',0 .173:db 'изменение знака числа',0 .174:db 'сравнение',0 .175:db 'сравнение и извлечение из стека',0 .176:db 'сравнение и двойное извлечение из стека',0 .177:db 'косинус',0 .178:db 'уменьшить указатель стека sp на 1',0 .179:db 'поделить 2 числа с плавающей точкой',0 .183:db 'освобождение регистра стека сопроцессора',0 .184:db 'целочисленное сравнение',0 .185:db 'целочисленное сравнение и извлечение из стека',0 .186:db 'загружает из памяти в вершину стека st(0) целое число ',0 .188:db 'увеличить указатель стека sp на 1',0 .189:db 'инициализировать fpu',0 .192:db 'загружает из памяти в вершину стека st(0) вещественное число',0 .193:db 'загрузка единицы',0 .195:db 'загрузка числа 1/ln(2)',0 .196:db 'загрузка числа ln(10)/ln(2)',0 .197:db 'загрузка числа log(2)/ln(10)',0 .198:db 'загрузка числа ln(2)',0 .199:db 'загружает в вершину стека st(0) число Pi',0 .200:db 'загрузка нуля',0 .201:db 'умножение',0 .205:db 'арктангенс частного',0 .206:db 'вычисление остатка от деления',0 .207:db 'вычисление тангенса',0 .208:db 'округление числа st(0) до целого',0 .212:db 'умножение на 2^y',0 .213:db 'вычисление синуса',0 .214:db 'вычисление синуса и косинуса',0 .215:db 'извлечение квадратного корня',0 .216:db 'выгрузка результата st(0)',0 .218:db 'выгрузка результата st(0) и освобождение стека',0 .220:db 'вычитание',0 .224:db 'сравнение операнда с нулем',0 .226:db 'анализ операнда',0 .227:db 'обмен',0 .228:db 'выделение порядка числа и мантиссы',0 .229:db 'вычисление y*log2(x)',0 .230:db 'вычисление y*log2(x+1)',0 .232:db 'останов микропроцессора. Флаги не меняются.',0 .233:db 'целое деление знаковых величин. Команда воздействует на флаги af, cf, of, pf, sf и zf.',0 .234:db 'флаговый регистр разрешения прерывания',0 .235:db 'целое умножение знаковых величин. Команда воздействует на флаги cf и of (флаги af pf sf и zf не определены).',0 .237:db 'прибавить к операнду единицу',0 .239:db 'указывает библиотеку импорта',0 .246:db 'регистр указателя команд',0 .249:db 'переход если cf=0 и zf=0 (ja - Jump if Above)',0 .250:db 'переход если cf=0 (jae - Jump if Above or Equal)',0 .251:db 'переход если cf=1 (jb - Jump if Below)',0 .252:db 'переход если cf=1 или zf=1 (jbe - Jump if Below or Equal)',0 .253:db 'переход если cf=1 (jc - Jump if Carry)',0 .255:db 'переход если cx=0 (jcxz - Jump if CX Zero)',0 .256:db 'переход если zf=1 (je - Jump if Equal)',0 .257:db 'переход если ecx=0 (jecxz - Jump if ECX Zero)',0 .258:db 'переход если zf=0 и sf=of (jg - Jump if Greater (signed))',0 .259:db 'переход если sf=of (jge - Jump if Greater or Equal (signed))',0 .260:db 'переход если sf!=of (jl - Jump if Less (signed))',0 .261:db 'переход если zf=1 или sf!=of (jle - Jump if Less or Equal (signed))',0 .262:db 'переход без условия',0 .276:db 'переход если zf=0 (jnz - Jump if Not Zero)',0 .277:db 'переход если of=1 (jo - Jump if Overflow)',0 .280:db 'переход если pf=0 (jpo - Jump if Parity Odd)',0 .281:db 'переход если sf=1 (js - Jump if Signed (signed))',0 .282:db 'переход если zf=1 (jz - Jump if Zero)',0 .292:db 'резервирует память из стека для локальных переменных',0 .294:db 'загрузка 1-но байтовых строк',0 .295:db 'загрузка 4-х байтовых строк',0 .297:db 'загрузка 2-х байтовых строк',0 .300:db 'макрос для копирования значения, использует операции push и pop',0 .302:db 'завершить выполнение потока/процесс (макрос для сист. функций вызывает int 0x40)',0 .303:db 'определить и нарисовать окно (макрос для сист. функций вызывает int 0x40)',0 .304:db 'поставить точку в окне (ebx = x-координата (относительно окна), ecx = y-координата (относительно окна), edx = 0x00RRGGBB - цвет точки) (макрос для сист. функций вызывает int 0x40)',0 .305:db 'ожидать события (макрос для сист. функций вызывает int 0x40)',0 .306:db 'проверить, есть ли событие, без ожидания (макрос для сист. функций вызывает int 0x40)',0 .307:db 'начать/закончить перерисовку окна (макрос для сист. функций вызывает int 0x40)',0 .308:db 'нарисовать прямоугольник в окне (макрос для сист. функций вызывает int 0x40)',0 .309:db 'получить размеры экрана (макрос для сист. функций вызывает int 0x40)',0 .310:db 'установить размер фонового изображения (макрос для сист. функций вызывает int 0x40)',0 .311:db 'поставить точку на фоновом изображении (макрос для сист. функций вызывает int 0x40)',0 .312:db 'перерисовать фон (макрос для сист. функций вызывает int 0x40)',0 .313:db 'установить режим отрисовки фона (макрос для сист. функций вызывает int 0x40)',0 .314:db 'поместить блок пикселей на фон (макрос для сист. функций вызывает int 0x40)',0 .315:db 'Спроецировать данные фона на адресное пространство процесса (макрос для сист. функций вызывает int 0x40)',0 .316:db 'Закрыть проекцию данных фона на адресное пространство процесса (макрос для сист. функций вызывает int 0x40)',0 .317:db 'сохранить рамдиск на дискету (макрос для сист. функций вызывает int 0x40)',0 .318:db 'получить код нажатой кнопки (макрос для сист. функций вызывает int 0x40)',0 .319:db 'завершить работу системы (макрос для сист. функций вызывает int 0x40)',0 .320:db 'свернуть окно приложения (макрос для сист. функций вызывает int 0x40)',0 .321:db 'Получить информацию о дисковой подсистеме (макрос для сист. функций вызывает int 0x40)',0 .322:db 'получить версию ядра (макрос для сист. функций вызывает int 0x40)',0 .323:db 'Ожидать начала обратного хода луча развёртки монитора (макрос для сист. функций вызывает int 0x40)',0 .324:db 'поместить курсор мыши в центр экрана (макрос для сист. функций вызывает int 0x40)',0 .325:db 'Получить размер свободной оперативной памяти (макрос для сист. функций вызывает int 0x40)',0 .326:db 'Получить размер имеющейся оперативной памяти (макрос для сист. функций вызывает int 0x40)',0 .327:db 'Завершить процесс/поток по идентификатору (макрос для сист. функций вызывает int 0x40)',0 .328:db 'получить/установить настройки мыши (макрос для сист. функций вызывает int 0x40)',0 .329:db 'завершить процесс/поток по слоту (макрос для сист. функций вызывает int 0x40)',0 .330:db 'Получить информацию об оперативной памяти (макрос для сист. функций вызывает int 0x40)',0 .331:db 'Получить номер слота процесса/потока по идентификатору (макрос для сист. функций вызывает int 0x40)',0 .332:db 'операции с окном другого процесса/потока (макрос для сист. функций вызывает int 0x40)',0 .333:db 'сделать активным окно заданного потока (макрос для сист. функций вызывает int 0x40)',0 .334:db 'получить счётчик пустых тактов в секунду (макрос для сист. функций вызывает int 0x40)',0 .335:db 'получить тактовую частоту (макрос для сист. функций вызывает int 0x40)',0 .336:db 'сохранить рамдиск в файл на жёстком диске (макрос для сист. функций вызывает int 0x40)',0 .337:db 'получить номер активного окна (макрос для сист. функций вызывает int 0x40)',0 .338:db 'отключить/разрешить звук спикера (макрос для сист. функций вызывает int 0x40)',0 .339:db 'завершение работы системы с параметром (макрос для сист. функций вызывает int 0x40)',0 .340:db 'получить код нажатой клавиши (макрос для сист. функций вызывает int 0x40)',0 .341:db 'интерфейс MIDI (макрос для сист. функций вызывает int 0x40)',0 .342:db 'установить базовый порт MPU MIDI (макрос для сист. функций вызывает int 0x40)',0 .343:db 'установить канал DMA для звука (макрос для сист. функций вызывает int 0x40)',0 .344:db 'Разрешить/запретить низкоуровневый доступ к HD (макрос для сист. функций вызывает int 0x40)',0 .345:db 'Разрешить/запретить низкоуровневый доступ к PCI (макрос для сист. функций вызывает int 0x40)',0 .346:db 'Инициализировать + получить информацию о драйвере vmode.mdr (макрос для сист. функций вызывает int 0x40)',0 .347:db 'Получить информацию о текущем видеорежиме (макрос для сист. функций вызывает int 0x40)',0 .348:db 'установить видеорежим. (макрос для сист. функций вызывает int 0x40)',0 .349:db 'Вернуться к начальному видеорежиму (макрос для сист. функций вызывает int 0x40)',0 .350:db 'Увеличить/уменьшить размер видимой области монитора (макрос для сист. функций вызывает int 0x40)',0 .351:db 'установить раскладку клавиатуры (макрос для сист. функций вызывает int 0x40)',0 .352:db 'установить базу CD (макрос для сист. функций вызывает int 0x40)',0 .353:db 'установить базовый порт Sound Blaster (макрос для сист. функций вызывает int 0x40)',0 .354:db 'установить язык системы (макрос для сист. функций вызывает int 0x40)',0 .355:db 'установить базу HD (макрос для сист. функций вызывает int 0x40)',0 .356:db 'установить раздел HD (макрос для сист. функций вызывает int 0x40)',0 .357:db 'установить системную дату/время (макрос для сист. функций вызывает int 0x40)',0 .358:db 'ожидать события с таймаутом (макрос для сист. функций вызывает int 0x40)',0 .359:db 'начать проигрывать CD-audio (макрос для сист. функций вызывает int 0x40)',0 .360:db 'получить информацию о дорожках (макрос для сист. функций вызывает int 0x40)',0 .361:db 'остановить проигрываемое CD-audio (макрос для сист. функций вызывает int 0x40)',0 .362:db 'извлечь лоток привода диска (макрос для сист. функций вызывает int 0x40)',0 .363:db 'загрузить лоток привода диска (макрос для сист. функций вызывает int 0x40)',0 .364:db 'установить громкость SBPro - удалена (макрос для сист. функций вызывает int 0x40)',0 .365:db 'получить базовый порт MPU MIDI (макрос для сист. функций вызывает int 0x40)',0 .366:db 'получить канал DMA для звука (макрос для сист. функций вызывает int 0x40)',0 .367:db 'Узнать, разрешён ли низкоуровневый доступ к HD (макрос для сист. функций вызывает int 0x40)',0 .368:db 'Узнать, разрешён ли низкоуровневый доступ к PCI (макрос для сист. функций вызывает int 0x40)',0 .369:db 'получить раскладку клавиатуры (макрос для сист. функций вызывает int 0x40)',0 .370:db 'получить базу CD (макрос для сист. функций вызывает int 0x40)',0 .371:db 'получить базовый порт Sound Blaster (макрос для сист. функций вызывает int 0x40)',0 .372:db 'получить язык системы (макрос для сист. функций вызывает int 0x40)',0 .373:db 'получить базу HD (макрос для сист. функций вызывает int 0x40)',0 .374:db 'получить раздел HD (макрос для сист. функций вызывает int 0x40)',0 .375:db 'получить значение счётчика времени (макрос для сист. функций вызывает int 0x40)',0 .376:db 'установить громкость SB16 - удалена (макрос для сист. функций вызывает int 0x40)',0 .377:db 'получить системную дату (макрос для сист. функций вызывает int 0x40)',0 .378:db 'получить системное время (макрос для сист. функций вызывает int 0x40)',0 .379:db 'работа с текущей папкой (макрос для сист. функций вызывает int 0x40)',0 .380:db 'удалить файл с рамдиска - удалена (макрос для сист. функций вызывает int 0x40)',0 .381:db 'записать файл на рамдиск - удалена (макрос для сист. функций вызывает int 0x40)',0 .382:db 'прочитать цвет точки на экране (макрос для сист. функций вызывает int 0x40)',0 .383:db 'работа с мышью (макрос для сист. функций вызывает int 0x40)',0 .384:db 'нарисовать отрезок (макрос для сист. функций вызывает int 0x40)',0 .385:db 'получить размер фонового изображения (макрос для сист. функций вызывает int 0x40)',0 .386:db 'прочитать точку с фонового изображения (макрос для сист. функций вызывает int 0x40)',0 .387:db 'получить режим отрисовки фона (макрос для сист. функций вызывает int 0x40)',0 .388:db 'вывести строку текста в окно (макрос для сист. функций вызывает int 0x40)',0 .389:db 'установить маску для ожидаемых событий (макрос для сист. функций вызывает int 0x40)',0 .390:db 'ввод/вывод в порт (макрос для сист. функций вызывает int 0x40)',0 .391:db 'зарезервировать/освободить группу портов ввода/вывода (макрос для сист. функций вызывает int 0x40)',0 .392:db 'вывести число в окно (макрос для сист. функций вызывает int 0x40)',0 .393:db 'применить настройки экрана (макрос для сист. функций вызывает int 0x40)',0 .394:db 'установить стиль кнопок (макрос для сист. функций вызывает int 0x40)',0 .395:db 'установить стандартные цвета окон (макрос для сист. функций вызывает int 0x40)',0 .396:db 'получить стандартные цвета окон (макрос для сист. функций вызывает int 0x40)',0 .397:db 'получить высоту скина (макрос для сист. функций вызывает int 0x40)',0 .398:db 'получить рабочую область экрана (макрос для сист. функций вызывает int 0x40)',0 .399:db 'установить рабочую область экрана (макрос для сист. функций вызывает int 0x40)',0 .400:db 'Получить область скина для текста заголовка (макрос для сист. функций вызывает int 0x40)',0 .401:db 'установить используемый скин окон (макрос для сист. функций вызывает int 0x40)',0 .402:db 'Advanced Power Management (APM) (макрос для сист. функций вызывает int 0x40)',0 .403:db 'пауза (ebx = время в сотых долях секунды) (макрос для сист. функций вызывает int 0x40)',0 .404:db 'установка формы окна (макрос для сист. функций вызывает int 0x40)',0 .405:db 'создать поток (макрос для сист. функций вызывает int 0x40)',0 .406:db 'получить конфигурацию сетевого драйвера (макрос для сист. функций вызывает int 0x40)',0 .407:db 'получить локальный IP-адрес (макрос для сист. функций вызывает int 0x40)',0 .408:db 'получить маску подсети (макрос для сист. функций вызывает int 0x40)',0 .409:db 'установить gateway IP (макрос для сист. функций вызывает int 0x40)',0 .410:db 'установить маску подсети (макрос для сист. функций вызывает int 0x40)',0 .411:db 'получить DNS IP (макрос для сист. функций вызывает int 0x40)',0 .412:db 'установить DNS IP (макрос для сист. функций вызывает int 0x40)',0 .413:db 'получить локальный MAC-адрес (макрос для сист. функций вызывает int 0x40)',0 .414:db 'установить конфигурацию сетевого драйвера (макрос для сист. функций вызывает int 0x40)',0 .415:db 'установить локальный IP-адрес (макрос для сист. функций вызывает int 0x40)',0 .416:db 'добавить данные в стек входной очереди (макрос для сист. функций вызывает int 0x40)',0 .417:db 'Прочитать данные из сетевой очереди вывода (макрос для сист. функций вызывает int 0x40)',0 .418:db 'получить gateway IP (макрос для сист. функций вызывает int 0x40)',0 .419:db 'открыть UDP-сокет (макрос для сист. функций вызывает int 0x40)',0 .420:db 'закрыть UDP-сокет (макрос для сист. функций вызывает int 0x40)',0 .421:db 'получить статус кабеля Ethernet (макрос для сист. функций вызывает int 0x40)',0 .422:db 'прочитать данные сетевого стека (макрос для сист. функций вызывает int 0x40)',0 .423:db 'опрос сокета (макрос для сист. функций вызывает int 0x40)',0 .424:db 'отладочная информация сетевого драйвера (макрос для сист. функций вызывает int 0x40)',0 .425:db 'прочитать байт из сокета (макрос для сист. функций вызывает int 0x40)',0 .426:db 'записать в UDP-сокет (макрос для сист. функций вызывает int 0x40)',0 .427:db 'открыть TCP-сокет (макрос для сист. функций вызывает int 0x40)',0 .428:db 'получить состояние TCP-сокета (макрос для сист. функций вызывает int 0x40)',0 .429:db 'записать в TCP-сокет (макрос для сист. функций вызывает int 0x40)',0 .430:db 'закрыть TCP-сокет (макрос для сист. функций вызывает int 0x40)',0 .431:db 'проверить, свободен ли локальный порт (макрос для сист. функций вызывает int 0x40)',0 .432:db 'загрузить данные для SB16 (макрос для сист. функций вызывает int 0x40)',0 .433:db 'начать проигрывать данные на SB16 (макрос для сист. функций вызывает int 0x40)',0 .434:db 'установить формат данных SB16 (макрос для сист. функций вызывает int 0x40)',0 .435:db 'Начать проигрывать данные на встроенном спикере (макрос для сист. функций вызывает int 0x40)',0 .436:db 'PCI BIOS (макрос для сист. функций вызывает int 0x40)',0 .437:db 'работа с файловой системой (макрос для сист. функций вызывает int 0x40)',0 .438:db 'прочитать файл/папку (макрос для сист. функций вызывает int 0x40)',0 .439:db 'получить информацию о файловой системе (макрос для сист. функций вызывает int 0x40)',0 .440:db 'LBA-чтение с устройства (макрос для сист. функций вызывает int 0x40)',0 .441:db 'прочитать файл с рамдиска (макрос для сист. функций вызывает int 0x40)',0 .442:db 'Inter Process Communication (IPC) (макрос для сист. функций вызывает int 0x40)',0 .443:db 'получить параметры для прямого доступа к графике (макрос для сист. функций вызывает int 0x40)',0 .444:db 'получить версию PCI-интерфейса (макрос для сист. функций вызывает int 0x40)',0 .445:db 'получить номер последней PCI-шины (макрос для сист. функций вызывает int 0x40)',0 .446:db 'записать в PCI-регистр (макрос для сист. функций вызывает int 0x40)',0 .447:db 'Получить механизм обращения к конфигурационному пространству PCI (макрос для сист. функций вызывает int 0x40)',0 .448:db 'прочитать PCI-регистр (макрос для сист. функций вызывает int 0x40)',0 .449:db 'прочитать PCI-регистр (макрос для сист. функций вызывает int 0x40)',0 .450:db 'прочитать PCI-регистр (макрос для сист. функций вызывает int 0x40)',0 .451:db 'записать в PCI-регистр (макрос для сист. функций вызывает int 0x40)',0 .452:db 'записать в PCI-регистр (макрос для сист. функций вызывает int 0x40)',0 .453:db 'работа с доской отладки (макрос для сист. функций вызывает int 0x40)',0 .454:db 'перераспределить память приложения (макрос для сист. функций вызывает int 0x40)',0 .455:db 'вывести изображение с палитрой в окно (макрос для сист. функций вызывает int 0x40)',0 .456:db 'работа с клавиатурой (макрос для сист. функций вызывает int 0x40)',0 .457:db 'установить режим ввода с клавиатуры, ecx=0 обычный (ASCII-символы) ecx=1 сканкоды (макрос для сист. функций вызывает int 0x40)',0 .458:db 'получить режим ввода с клавиатуры (макрос для сист. функций вызывает int 0x40)',0 .459:db 'получить состояние управляющих клавиш (макрос для сист. функций вызывает int 0x40)',0 .460:db 'установить общесистемную "горячую клавишу" (макрос для сист. функций вызывает int 0x40)',0 .461:db 'удалить установленную "горячую клавишу" (макрос для сист. функций вызывает int 0x40)',0 .462:db 'изменить положение/размеры окна (макрос для сист. функций вызывает int 0x40)',0 .463:db 'получить счётчик переключений задач (макрос для сист. функций вызывает int 0x40)',0 .464:db 'Переключиться на следующий поток выполнения (макрос для сист. функций вызывает int 0x40)',0 .465:db 'инициализировать кучу процесса (макрос для сист. функций вызывает int 0x40)',0 .466:db 'выделить блок памяти (макрос для сист. функций вызывает int 0x40)',0 .467:db 'освободить блок памяти (макрос для сист. функций вызывает int 0x40)',0 .468:db 'ожидать извещения от драйвера (макрос для сист. функций вызывает int 0x40)',0 .469:db 'установить обработчик исключений FPU (макрос для сист. функций вызывает int 0x40)',0 .470:db 'загрузить драйвер (макрос для сист. функций вызывает int 0x40)',0 .471:db 'управление драйвером (макрос для сист. функций вызывает int 0x40)',0 .472:db 'загрузить DLL (макрос для сист. функций вызывает int 0x40)',0 .473:db 'кэш + rdpmc (макрос для сист. функций вызывает int 0x40)',0 .474:db 'перераспределить блок памяти (макрос для сист. функций вызывает int 0x40)',0 .475:db 'прочитать MSR-регистр (макрос для сист. функций вызывает int 0x40)',0 .476:db 'записать в MSR-регистр (макрос для сист. функций вызывает int 0x40)',0 .477:db 'отладка (макрос для сист. функций вызывает int 0x40)',0 .478:db 'Определить область данных для отладочных сообщений (макрос для сист. функций вызывает int 0x40)',0 .479:db 'Получить состояние регистров отлаживаемого потока (макрос для сист. функций вызывает int 0x40)',0 .480:db 'Установить состояние регистров отлаживаемого потока (макрос для сист. функций вызывает int 0x40)',0 .481:db 'отключиться от отлаживаемого процесса (макрос для сист. функций вызывает int 0x40)',0 .482:db 'приостановить отлаживаемый поток (макрос для сист. функций вызывает int 0x40)',0 .483:db 'Возобновить выполнение отлаживаемого потока (макрос для сист. функций вызывает int 0x40)',0 .484:db 'Прочитать из памяти отлаживаемого процесса (макрос для сист. функций вызывает int 0x40)',0 .485:db 'записать в память отлаживаемого процесса (макрос для сист. функций вызывает int 0x40)',0 .486:db 'завершить отлаживаемый поток (макрос для сист. функций вызывает int 0x40)',0 .487:db 'Установить/снять аппаратную точку останова (макрос для сист. функций вызывает int 0x40)',0 .488:db 'вывести изображение в окно (макрос для сист. функций вызывает int 0x40)',0 .489:db 'работа с файловой системой с поддержкой длинных имён (макрос для сист. функций вызывает int 0x40)',0 .490:db 'чтение файла с поддержкой длинных имён, ebx=указатель на информационную структуру (макрос для сист. функций вызывает int 0x40)',0 .491:db 'чтение папки с поддержкой длинных имён, ebx=указатель на информационную структуру (макрос для сист. функций вызывает int 0x40)',0 .492:db 'Создание/перезапись файла с поддержкой длинных имён, ebx=указатель на информационную структуру (макрос для сист. функций вызывает int 0x40)',0 .493:db 'Запись в существующий файл с поддержкой длинных имён, ebx=указатель на информационную структуру (макрос для сист. функций вызывает int 0x40)',0 .494:db 'установка размера файла, ebx=указатель на информационную структуру (макрос для сист. функций вызывает int 0x40)',0 .495:db 'получение информации о файле/папке, ebx=указатель на информационную структуру (макрос для сист. функций вызывает int 0x40)',0 .496:db 'установка атрибутов файла/папки, ebx=указатель на информационную структуру (макрос для сист. функций вызывает int 0x40)',0 .497:db 'запуск программы, ebx=указатель на информационную структуру (макрос для сист. функций вызывает int 0x40)',0 .498:db 'удаление файла/папки, ebx=указатель на информационную структуру (макрос для сист. функций вызывает int 0x40)',0 .499:db 'создание папки, ebx=указатель на информационную структуру (макрос для сист. функций вызывает int 0x40)',0 .500:db 'установить заголовок окна программы (макрос для сист. функций вызывает int 0x40)',0 .501:db 'определить/удалить кнопку (макрос для сист. функций вызывает int 0x40)',0 .502:db 'информация о потоке выполнения (макрос для сист. функций вызывает int 0x40)',0 .511:db 'поместить значение второго операнда в первый',0 .520:db 'пустая операция',0 .522:db 'флаговый регистр переполнения',0 .528:db 'флаговый регистр четности',0 .530:db 'выгрузка из стека 2-х байтных регистров общего назначения',0 .531:db 'выгрузка из стека 4-х байтных регистров общего назначения',0 .534:db 'макрос для описания функции (процесса)',0 .536:db 'загрузка слова в стек',0 .537:db 'загрузка в стек 2-х байтных регистров общего назначения',0 .538:db 'загрузка в стек 4-х байтных регистров общего назначения',0 .539:db 'загрузка содержимого регистра flags в стек',0 .542:db '8 байт',0 .552:db 'циклический сдвиг влево',0 .553:db 'циклический сдвиг вправо',0 .554:db 'сохраняет регистр ah в регистр флагов (воздействует на af, cf, pf, sf, zf)',0 .559:db 'сравнивает значение al со значением по адресу edi',0 .560:db 'сравнивает значение eax со значением по адресу edi',0 .561:db 'сравнивает значение ax со значением по адресу edi',0 .563:db 'флаговый регистр знака',0 .565:db 'сдвиг влево на опред. кол. бит (увеличивает число в 2^n раз)',0 .566:db 'сдвиг вправо на опред. кол. бит (уменьшает число в 2^n раз)',0 .567:db 'индексный регистр',0 .569:db 'регистр указателя',0 .570:db 'сегментный регистр - сегмент стека',0 .581:db 'макрос для вызова функции (операция call) с записью параметров в стек (операция push)',0 .584:db 'запись al по адресу edi, в зависимости от df адрес изменяется на 1',0 .585:db 'запись eax по адресу edi, в зависимости от df адрес изменяется на 4',0 .586:db 'запись ax по адресу edi, в зависимости от df адрес изменяется на 2',0 .587:db 'макрос для описания структуры',0 .589:db 'вычесть из первого операнда второй',0 .593:db 'флаговый регистр трассировки',0 .594:db '10 байт',0 .595:db 'генерирует в процедурах (функциях) код для сохранения и восстановления указанных регистров',0 .596:db '2 байта',0 .598:db 'обмен значениями',0 .609:db 'операция исключающее или | 0+0=0 | 0+1=1 | 1+0=1 | 1+1=0 |',0 .610:db 'флаговый регистр нулевого результата',0 \ No newline at end of file diff --git a/programs/other/t_edit/readme.htm b/programs/other/t_edit/readme.htm index c5607e48e5..b3c6afb4ec 100644 --- a/programs/other/t_edit/readme.htm +++ b/programs/other/t_edit/readme.htm @@ -48,7 +48,7 @@ table -

TextEditor тхЁёш  юЄ 27.05.2010

+

TextEditor тхЁёш  юЄ 19.04.2012

╬ яЁюуЁрььх

╧ЁюуЁрььр фы  ЁрсюЄ√ ё ЄхъёЄют√ьш Їрщырьш. ╦шЎхэчш  ётюсюфэр .

@@ -133,6 +133,18 @@ ends ╬яшёрэш  ёыют (ёЄЁюъш ЄхъёЄр ё 0-ьш т ъюэЎх)
(фышээр ёяЁртюўэюую ЄхъёЄр + 1)
+ +

╠ръЁюё фы  чрфрэш  ъы■ўхтюую ёыютр

+

╘рщы√ ёшэЄръёшёр ьюцэю ъюьяшышЁютрЄ№ ўхЁхч fasm.

+
macro wo txt,f1,p1,p2,p3{
+@@: db txt
+rb @b+40-$
+dd f1+0
+db p1
+dw p2+0
+db p3
+}
+

╟рьхўрэш .