摘要:
方法一:如果Oracle版本不是太低的话,使用 正则表达式函数 REGEXP_SUBSTR 处理。REGEXP_SUBSTR有5个参数,分别是:第一个是输入的字符串第二个是正则表达式第三个是标识从第几个字符开始正则表达式匹配。(默认为1)第四个是标识第几个匹配组。(默认为1)第五个是是取值范围:i:大小写不敏感;c:大小写敏感;n:点号 . 不匹配换行符号;m:多行模式;x:扩展模式,忽略正则表达式中的空白字符。例如:SELECT REGEXP_SUBSTR('ABC123BCD456','[0-9]+') FROM DUAL;--返回123SELECT REG 阅读全文
摘要:
11.0 概述 CPU内部寄存器中,有一种特殊的寄存器(对不同的处理机,个数和结构可能不同),具有以下三种作用 (1) 用来存储相关指令的某些执行结果 (2) 用来为CPU执行相关指令提供行为依据 (3) 用来控制CPU的相关工作方式 这种特殊的寄存器在8086CPU中被称为标志寄存器.标志寄存器有16位,其中存储的信息通常被称为程序状态字(PSW).以下标志寄存器简称flag. flag寄存器与其他寄存器不同,是按位起作用的,每一位都有专门的含义,记录特定的信息. 15 14 13 12 11 OF 10 DF 09 IF 08 TF 07 SF 06 ZF 05 04 AF 03 02 P 阅读全文
摘要:
10.0 概述 call和ret指令都是转移指令,它们都修改IP,或同时修改CS和IP。它们经常被用来共同实现子程序的设计。 10.1 ret和retf ret指令用栈中的数据,修改IP的内容,即相当于 pop IP retf指令用栈中的数据,修改CS和IP的内容,即相当于 pop IP pop CS 10.2 call指令 CPU执行call指令时,进行两步操作 1) 将当前的IP或CS和IP压入栈中 2) 转移 call指令不能实现短转移,除此之外,call指令实现转移的方式与jmp指令的原理相同。 10.3 依据位移进行转移的call指令 call 标号 ;(将当前IP压栈,转到标号处开 阅读全文
摘要:
1、从我的祖父维勒斯,我学习到弘德和制怒。2、从我父亲的名声及对他的追忆,我懂得了谦虚和果敢。3、从我的母亲,我濡染了虔诚、仁爱和不仅戒除恶行,甚而戒除恶念的品质,以及远离奢侈的简朴生活方式。4、从我的曾祖父那里,我懂得了不要时常出入公共学校,而是要在家里有好的教师;懂得了在这些事情上一个人要不吝钱财。5、从我的老师那里,我明白了不要介入马戏中的任何一派,也不要陷入角斗戏中的党争;我从他也爱会了忍受劳作、清心寡欲、事必躬亲,不干涉他人事务和不轻蕉流言诽谤。6、从戴奥吉纳图斯,我学会了不使自己碌碌于琐事,不相信术士巫师之言,驱除鬼怪精灵和类似的东西;学会了不畏惧也不热衷于战斗;学会了让人说话;学 阅读全文
摘要:
9.0 概述 可以修改IP,或同时修改CS:IP的指令统称为转移指令。概括地讲,转移指令就是可以控制CPU执行内存中某处代码的指令。 8086CPU的转移行为有以下几类: <> 只修改IP时,称为段内转移指令。如 jmp ax <> 同时修改CS和IP时,称为段间转移指令。如 jmp 1000:0 由于转移指令对IP的修改范围不同,段内转移又分为短转移和近转移: <> 短转移的IP修改范围为-128~127 <> 近转移的IP修改范围为-32768~32767 8086CPU的转移指令分为以下几类: <> 无条件转移指令,如 jmp。 阅读全文
摘要:
8.0 概述 数据处理的两个基本问题: (1) 处理的数据在什么地方? (2) 要处理的数据有多长? 为了描述上的简洁,后面使用reg表示一个寄存器,sreg表示一个段寄存器。 reg的集合包括:ax,bx,cx,dx,ah,al,bh,bl,ch,cl,dh,dl,sp,bp,si,di sreg的集合包括:ds,ss,cs,es 8.1 bx,bp,si,di (1) 8086CPU中,只有这四个寄存器可以用在“[...]”中来进行内存单元的寻址 (2) 这四个寄存器在“[...]”中只能单独出现,或以下面四种组合出现:bx+si,bx+di,bp+si,bp+di (3) 只要在“[.. 阅读全文
摘要:
7.1 and 和 or 指令 (1) and 指令:逻辑与指令,按位进行与运算。 示例: mov al,01100011B and al,00111011B 执行结果:(al)=00100011B (2) or 指令:逻辑或指令,按位进行或运算。 示例: mov al,01100011B or al,00111011B 执行结果:(al)=01111011B 7.2 关于ASCII码 简单的说,所谓编码方案,就是一套规则,它约定了在计算机中,用什么样的信息来表示现实对象。ASCII就是一种编码方案。 7.3 以字符形式给出的数据 我们可以在汇编程序中,用'......'的形式 阅读全文
摘要:
6.0 概述 前面的程序中,只有一个代码段,如果程序需要其他空间来存放数据,使用哪里呢? 第5章讲过,0:200~0:2ff是相对安全的内存空间,但大小只有256个字节,如果我们需要的空间超过256个字节,就需要向系统申请。 程序取得所需要的空间的方法有两种,一是在加载时分配,二是执行过程中向系统申请,本课程不讨论第二种方法。 我们若要在一个程序被加载时取得所需空间,必须要在源程序中作出说明,我们通过在源程序中定义段来进行内存空间的获取。 6.1 在代码段中使用数据示例程序:assume cs:codecode segment dw 0123h,0456h,0789h,0abch,0defh, 阅读全文
摘要:
5.0 概述 1.[BX]和内存单元的描述 要完整地描述一个内存单元,需要有两种信息:1)内存单元的地址;2)内存单元的长度(类型)。 用[0]表示一个内存单元时,0表示偏移地址,段地址默认在DS中,单元的长度(类型)可以由具体指令中的其他操作对象(如寄存器)指出。 [bx]同样表示一个内存单元,它的偏移地址在bx中。 2.loop 循环指令。 3.自定义的描述性符号“()” 为了描述的简洁,用“()”来表示一个寄存器或内存单元中的内容。 4.约定符号idata表示常量 5.1 [BX] mov ax,[bx] 功能:bx中存放的数据做为一个偏移地址EA,段地址SA默认在ds中。将SA:EA处 阅读全文
摘要:
方法1:在SQL脚本后面直接加上“QUIT;”或者“EXIT;”方法2:使用以下方法调用SQLPLUSsqlplus user/password@tnsname<filepath>nul 阅读全文