SUB

更新时间:2024-06-07 20:47

SUB是一种图形格式字幕,由idx和sub文件组成,有时也能看到ifo文件,不过这个已经不怎么用的上了。idx相当于索引文件,里面包括了字幕出现的时间码和字幕显示属性等。sub文件就是存放字幕本身了,注意是图片格式的,所以比较大,动辄10M以上了。idx+sub可以存放很多语言的字幕,提供了在播放的时候的选择。

汇编指令

SUB:不带借位的减法指令。

指令格式】SUB OP1,OP2

指令功能】(OP1)←(OP1)-(OP2),将OP1-OP2的值,保存在OP1中,如:

SUB [EAX],1 以EAX寄存器为内存地址,将该地址的值减1,类似C/C++中的 i--;

【指令介绍】

目的操作数减去源操作数,结果放在目的操作数中。源操作数原有内容不变,并根据运算结果置标志位SF,ZF,AF,PF,CF,OF

SUB指令可以进行字节或字的减法运算,源操作数和目的操作数的约定与ADD指令相同。

操作数的类型可以根据程序员的要求约定为带符号数或者无符号数。当无符号数的较小数减去较大数时,因不够减而产生借位,此时进位标志CF置1.当带符号数的较小数减去较大数时,将会得到负的结果,则符号位SF置1.带符号数相减,如果溢出,则OF置1.

【例】

设(BL)=23H,(AL)=78H,(BL)=23H-78H=ABH(1010101)

根据运算结果,各标志位为:CF=1,ZF=0,SF=1,OF=0,PF=0,AF=1

2. SUB SI,SI

寄存器自身相减,则结果为零,此时:

OF=0,SF=0,ZF=1,PF=1,CF=0

Sub语句

描述

声明 Sub 过程的名称、参数以及构成其主体的代码。

语法

[Private|Public|Friend] [Static]Subname[(arglist)]

[statements]

[Exit Sub]

[statements]

End Sub

Sub语句的语法包含下面部分:

参数

其中的arglist参数的语法以及语法各个部分如下:

[Optional] [ByVal|ByRef] [ParamArray]varname[( )] [Astype] [=defaultvalue]

说明

如果没有使用Public、Private或Friend显式指定,Sub过程按缺省情况就是公用的。如果没有使用Static,则在调用之后不会保留局部变量的值。Friend关键字只能在类模块中使用。不过Friend过程可以被工程的任何模块中的过程访问。Friend过程不会在其父类的类型库中出现,且Friend过程不能被后期绑定。

小心Sub过程可以是递归的;也就是说,该过程可以调用自己来完成某个特定的任务。不过,递归可能会导致堆栈上溢。通常Static关键字和递归的Sub过程不在一起使用。

所有的可执行代码都必须属于某个过程。不能在别的Sub、Function或Property过程中定义Sub过程。

Exit Sub语句使执行立即从一个Sub过程中退出。程序接着从调用该Sub过程的语句下一条语句执行。在Sub过程的任何位置都可以有Exit Sub语句。

Sub过程与Function过程的相似之处是:它们都一个可以获取参数,执行一系列语句,以及改变其参数的值的独立过程。而与Function过程不同的是:带返回值的Sub过程不能用于表达式

可以使用过程名并后跟相应的参数列表来调用一个Sub过程。请参阅Call语句关于如何调用Sub过程的详细的说明信息。

在Sub过程中使用的变量分为两类:一类是在过程内显式定义的,另一类则不是。在过程内显式定义的变量(使用Dim或等效方法)都是局部变量。对于使用了但又没有在过程中显式定义的变量,除非其在该过程外更高级别的位置有显示地定义,否则也是局部的。

小心过程可以使用没有在过程内显式定义的变量,但只要有任何在模块级别定义的名称与之同名,就会产生名称冲突。如果过程中使用的未定义的变量与别的过程,常数,或变量的名称相同,则认为过程使用的是模块级的名称。显式定义变量就可以避免这类冲突。可以使用Option Explicit语句来强制显式定义变量。

注意不能使用GoSub、GoTo或Return来进入或退出Sub过程。

部分描述

Public 表示 Sub 过程可被所有 Script 中的所有其他过程访问。

Private 表示 Sub 过程只可被声明该过程的 Script 中的其他过程访问。

Name Sub 的名称,遵循标准变量命名约定

Arglist 代表在调用时要传递给 Sub 过程的参数的变量列表。用逗号隔开多个变量。

Statements 在 Sub 过程主体内所执行的任何语句组。

arglist 参数包含下列语法和部分:[ByVal | ByRef] varname[( )]

部分 描述

ByVal 表示该参数按值传递

ByRef 表示该参数按引用传递

Varname 代表参数的变量名称,遵循标准变量命名约定

说明

如没有显式地指定使用 Public 或 Private,则 Sub 过程默认为公用,即它们对于 Script 中的所有其他过程都是可见的。Sub 过程中局部变量的值在调用过程中不被保留。

所有可执行代码必须包含于过程中。不能在另一个 Sub 或 Function 过程中定义一个 Sub 过程。

使用 Exit Sub 语句可以立即从 Sub 过程中退出。程序继续执行调用 Sub 过程的语句之后的语句。可以在 Sub 过程中任意位置出现任意个 Exit Sub 语句。

与 Function 过程相似之处是:Sub 过程是一个可以获取参数,执行一系列语句以及可改变其参数的值的独立过程。而与 Function 过程不同之处是:Function 过程可以返回值,而 Sub 过程不能用于表达式中。

可以使用过程名并跟随相应的参数列表来调用 Sub 过程。关于如何调用 Sub 过程的详细说明信息,请参阅 Call 语句。

小心 Sub 过程可以是递归的,即该过程可以调用自己来完成某个给定的任务。但是递归可能会导致堆栈溢出

在 Sub 过程中使用的变量分为两类:一类是在过程内显式声明的,另一类则不是。在过程内显式声明的变量(使用 Dim 或等效方法)总是局部变量。对于那些没有在过程中显式声明的变量也是局部的,除非在该过程外更高级别的位置显式地声明它们。

小心 过程可以使用没有在过程内显式声明的变量,但只要有任何 script 级定义的名称与之同名,就会产生名称冲突。如果过程中引用的未声明的变量与其他的过程、常数或变量的名称相同,则会认为过程引用的是Script 级的名称。显式声明变量可以避免这类冲突,使用 Option Explicit 语句可强制显式声明变量。

语言概念

Sub 过程

Sub 过程是包含在 Sub 语句和 End Sub 语句中的一系列 Visual Basic 语句。每次调用过程时都执行过程中的语句,从 Sub 语句后的第一个可执行语句开始,到遇到的第一个 End Sub、Exit Sub 或 Return 语句结束。

Sub 过程执行操作但并不返回值。它能够带参数,如呼叫代码传递给它的常数、变量或表达式

声明 Sub 过程的语法如下所示:

[accessibility] Sub subname[(argumentlist)]

' Statements of the Sub procedure go here.

HTML标签

定义及用法

HTML语言中, 标签可定义下标文本。例如:要求显示:H20的2为下标记;,在html代码中则需要写成:H20。和X2 X2对应

包含在 标签和其结束标签 中的内容将会以当前文本流中字符高度的一半来显示,但是与当前文本流中文字的字体和字号都是一样的。

全局属性

accesskey、class、contenteditable、data-*、dir、draggable、hidden、lang、tabindex、id、title、style、hidden

事件属性

onbeforeonload、onfocus、onblur、onerror、ononline、onpagehide、onpageshow、onredo、onstorage、onundo

End Sub

可访问性可以是 Public、Protected、Friend、Protected Friend 或 Private。

可以在模块、类和结构中定义 Sub 过程。默认情况下它们是 Public,这意味着可以从应用程序中的任意位置调用它们。

参数声明

声明过程的每个参数与声明变量的方法一样,都是指定参数名和数据类型。也可以指定传递机制,以及参数是否可选。

参数列表中每个参数的语法如下所示:

[Optional] [ByVal|ByRef] [ParamArray] argumentname As datatype

如果参数是可选的,则还必须在其声明中提供默认值,如下所示:

Optional [ByVal|ByRef] argumentname As datatype = defaultvalue

调用语法

可以使用独立的调用语句来显式调用 Sub 过程。不能在表达式中使用其名称来调用它。调用语句必须提供所有非可选参数的值,并且必须用括号将参数列表括起来。如果未提供任何参数,则也可以选择省略括号。Call关键字的使用也是可选的。

调用 Sub 过程的语法如下所示:

[Call] subname[(argumentlist)]

下面的 Sub 过程通知计算机操作员应用程序将要执行哪个任务,并且还显示一个时间戳。应用程序不是在每个任务的开头重复此代码,而仅是从不同的位置调用 TellOperator。每次调用都会传递 Task 参数中的字符串以标识开始执行的任务。

Sub TellOperator(ByVal Task As String)

Dim Stamp As Date ' Stamp is local to TellOperator.

Stamp = TimeOfDay() ' Get current time for time stamp.

' Use MessageBox class of System.Windows.Forms namespace.

End Sub

典型的 TellOperator 调用如下所示:

请参见

过程 | 事件处理过程 | Function 过程 | Property 过程 | 过程参数 | Sub 语句

调节声音菜单

SUB超重低音调整

FRD前后衰减调整

BAL左右平衡调整

免责声明
隐私政策
用户协议
目录 22
0{{catalogNumber[index]}}. {{item.title}}
{{item.title}}