linux
Java入门基础教程
这个作者很懒,什么都没留下…
展开
-
汇编语言XOR指令:对两个操作数进行逻辑(按位)异或操作
XOR 指令在两个操作数的对应位之间进行(按位)逻辑异或(XOR)操作,并将结果存放在目标操作数中:XOR destination, sourceXOR 指令操作数组合和大小与 AND 指令及 OR 指令相同。两个操作数的每一对对应位都应用如下操作原则:如果两个位的值相同(同为 0 或同为 1),则结果位等于 0;否则结果位等于 1。下表描述的是布尔运算 X㊉y:x y...原创 2019-06-24 20:08:52 · 18701 阅读 · 0 评论 -
汇编语言直接偏移量操作数
变量名加上一个位移就形成了一个直接 – 偏移量操作数。这样可以访问那些没有显式标记的内存位置。假设现有一个字节数组 arrayB:arrayB BYTE 10h,20h,30h,40h,50h用该数组作为 MOV 指令的源操作数,则自动传送数组的第一个字节:mov al,arrayB ;AL = 10h通过在 arrayB 偏移量上加 1 就可以访问该数组的...原创 2019-06-23 19:59:59 · 1122 阅读 · 0 评论 -
汇编语言加法和减法详解
算术运算是汇编语言中一个大得令人惊讶的主题!本节重点在于加法和减法的运算。先从最简单、最有效的指令开始:INC(增加)和 DEC(减少)指令,即加 1 和减 1。然后是能提供更多操作的 ADD、SUB 和 NEG(非)指令。最后,将讨论算术运算指令如何影响 CPU 状态标志位(进位位、符号位、零标志位等)。请记住,汇编语言的细节很重要。INC 和 DEC 指令INC(增加)和DE...原创 2019-06-23 20:59:57 · 9419 阅读 · 1 评论 -
汇编语言OFFSET运算符:返回数据标号的偏移量
OFFSET 运算符返回数据标号的偏移量。这个偏移量按字节计算,表示的是该数据标号距离数据段起始地址的距离。如下图所示为数据段内名为 myByte 的变量。OFFSET 示例在下面的例子中,将用到如下三种类型的变量: .data bVal BYTE ? wVal WORD ? dVal DWORD ? dVal2 DWORD ?假设 bVal 在偏移量为 0040 ...原创 2019-06-23 20:59:59 · 6181 阅读 · 0 评论 -
汇编语言ALIGN伪指令:对齐一个变量
ALIGN 伪指令将一个变量对齐到字节边界、字边界、双字边界或段落边界。语法如下:ALIGN boundBound 可取值有:1、2、4、8、16。当取值为 1 时,则下一个变量对齐于 1 字节边界(默认情况)。当取值为 2 时,则下一个变量对齐于偶数地址。当取值为 4 时,则下一个变量地址为 4 的倍数。当取值为 16 时,则下一个变量地址为 16 的倍数,即一个段落的边界。...原创 2019-06-23 19:50:02 · 1624 阅读 · 0 评论 -
汇编语言PTR运算符:重写操作数的大小类型
PTR 运算符可以用来重写一个已经被声明过的操作数的大小类型。只要试图用不同于汇编器设定的大小属性来访问操作数,那么这个运算符就是必需的。例如,假设想要将一个双字变量 myDouble 的低 16 位传送给 AXO 由于操作数大小不匹配,因此,汇编器不会允许这种操作: .data myDouble DWORD 12345678h .code mov ax,myDouble...原创 2019-06-23 19:50:00 · 1351 阅读 · 0 评论 -
汇编语言操作数类型
x86 的指令格式为:[label:] mnemonic [operands][ ;comment ]指令包含的操作数个数可以是:0 个,1 个,2 个或 3 个。这里,为了清晰起见,省略掉标号和注释:mnemonicmnemonic [destination] mnemonic [destination] , [source] mnemonic [destination] ,...原创 2019-06-22 17:49:59 · 1612 阅读 · 0 评论 -
汇编语言TEXTEQU伪指令
TEXTEQU 伪指令,类似于 EQU,创建了文本宏(text macro)。它有 3 种格式:第一种为名称分配的是文本;第二种分配的是已有文本宏的内容;第三种分配的是整数常量表达式:name TEXTEQU <text>name TEXTEQU textmacroname TEXTEQU %constExpr例如,变量 prompt1 使用了文本宏 continue...原创 2019-06-22 17:49:57 · 858 阅读 · 1 评论 -
汇编语言EQU伪指令
EQU 伪指令把一个符号名称与一个整数表达式或一个任意文本连接起来,它有 3 种格式:name EQU expressionname EQU symbolname EQU <text>第一种格式中,expression 必须是一个有效整数表达式。第二种格式中,symbol 是一个已存在的符号名称,已经用 = 或 EQU 定义过了。第三种格式中,任何文本都可以岀现在&l...原创 2019-06-22 17:30:02 · 11195 阅读 · 0 评论 -
汇编语言计算数组和字符串长度
在使用数组时,通常会想要知道它的大小。下例使用常量 ListSize 来声明 list 的大小:list BYTE 10,20,30,40ListSize = 4显式声明数组的大小会导致编程错误,尤其是如果后续还会插入或删除数组元素。声明数组大小更好的方法是,让汇编器来计算这个值。$ 运算符(当前地址计数器)返回当前程序语句的偏移量。在下例中,从当前地址计数器($)中减去 li...原创 2019-06-22 17:30:00 · 2983 阅读 · 0 评论 -
汇编语言等号=伪指令
等号伪指令(equal-sign directive)把一个符号名称与一个整数表达式连接起来,其语法如下:name = expression通常,表达式是一个 32 位的整数值。当程序进行汇编时,在汇编器预处理阶段,所有出现的 name 都会被替换为 expression。假设下面的语句出现在一个源代码文件开始的位置:COUNT = 500然后,假设在其后 10 行的位置有如...原创 2019-06-22 17:00:01 · 1424 阅读 · 0 评论 -
汇编语言数据类型以及数据定义详解
汇编器识别一组基本的内部数据类型(intrinsic data type),按照数据大小(字节、字、双字等等)、是否有符号、是整数还是实数来描述其类型。这些类型有相当程度的重叠,例如,DWORD 类型(32 位,无符号整数)就可以和 SDWORD 类型(32 位,有符号整数)相互交换。可能有人会说,程序员用 SDWORD 告诉读程序的人,这个值是有符号的,但是,对于汇编器来说这不是强制性...原创 2019-06-22 16:59:59 · 7721 阅读 · 0 评论 -
汇编语言XCHG指令:交换两个操作数内容
XCHG(交换数据)指令交换两个操作数内容。该指令有三种形式:XCHG reg, regXCHG reg, memXCHG mem, reg除了 XCHG 指令不使用立即数作操作数之外,XCHG 指令操作数的要求与《MOV指令》一节中介绍的 MOV 指令操作数要求是一样的。在数组排序应用中,XCHG 指令提供了一种简单的方法来交换两个数组元素。下面是几个使用 XCHG 指令的...原创 2019-06-23 19:59:57 · 6661 阅读 · 0 评论 -
汇编语言LAHF和SAHF指令
LAHF(加载状态标志位到 AH)指令将 EFLAGS 寄存器的低字节复制到 AH。被复制的标志位包括:符号标志位、零标志位、辅助进位标志位、奇偶标志位和进位标志位。使用这条指令,可以方便地把标志位副本保管在变量中: .data saveflags BYTE ? .code lahf ;将标志位加载到 AH mov saveflags...原创 2019-06-23 19:59:55 · 4250 阅读 · 0 评论 -
汇编语言MOVZX和MOVSX指令
尽管 MOV 指令不能直接将较小的操作数复制到较大的操作数中,但是程序员可以想办法解决这个问题。假设要将 count(无符号,16 位)传送到 ECX(32 位),可以先将 ECX 设置为 0,然后将 count 传送到 CX: .data count WORD 1 .code mov ecx,0 mov cx,count如果对一个有符号整数 -16 进行同样的操作会发生...原创 2019-06-23 19:59:54 · 2291 阅读 · 0 评论 -
汇编语言位向量(位映射)
有些应用控制的对象是从一个有限全集中选出来的一组项目。就像公司里的雇员,或者气象监测站的环境读数。在这些情景中,二进制位可以代表集合成员。与 Java HashSet 用指针或引用指向容器内对象不同,应用可以用位向量(或位映射)把一个二进制数中的位映射为数组中的对象。如下例所示,二进制数的位从左边 0 号开始,到右边 31 号为止,该数表示了数组元素 0、1、2 和 31 是名为 S...原创 2019-06-24 20:08:49 · 442 阅读 · 0 评论 -
汇编语言TEST指令:对两个操作数进行逻辑(按位)与操作
TEST 指令在两个操作数的对应位之间进行 AND 操作,并根据运算结果设置符号标志位、零标志位和奇偶标志位。TEST 指令与《AND指令》一节中介绍的 AND 指令唯一不同的地方是,TEST 指令不修改目标操作数。TEST 指令允许的操作数组合与 AND 指令相同。在发现操作数中单个位是否置位时,TEST 指令非常有用。示例:多位测试TEST 指令同时能够检查几个位。假设想要知...原创 2019-06-24 20:08:46 · 7626 阅读 · 0 评论 -
汇编语言位向量(位映射)
有些应用控制的对象是从一个有限全集中选出来的一组项目。就像公司里的雇员,或者气象监测站的环境读数。在这些情景中,二进制位可以代表集合成员。与 Java HashSet 用指针或引用指向容器内对象不同,应用可以用位向量(或位映射)把一个二进制数中的位映射为数组中的对象。如下例所示,二进制数的位从左边 0 号开始,到右边 31 号为止,该数表示了数组元素 0、1、2 和 31 是名为 S...原创 2019-06-24 20:07:43 · 426 阅读 · 0 评论 -
汇编语言AND指令:对两个操作数进行逻辑(按位)与操作
AND 指令在两个操作数的对应位之间进行(按位)逻辑与(AND)操作,并将结果存放在目标操作数中:AND destination,source下列是被允许的操作数组合,但是立即操作数不能超过 32 位:AND reg, regAND reg, memAND reg, immAND mem, regAND mem, imm操作数可以是 8 位、16 位、32 位和 64...原创 2019-06-24 20:07:41 · 34011 阅读 · 0 评论 -
汇编语言布尔和比较指令简介
前面介绍了四种基本的布尔代数操作:AND、OR、XOR 和 NOT。用汇编语言指令,这些操作可以在二进制位上实现。同样,这些操作在布尔表达式层次上也很重要,比如 IF 语句。首先了解按位指令,这里使用的技术也可以用于操作硬件设备控制位,实现通信协议以及加密数据,这里只列举了几种应用。Intel 指令集包含了 AND、OR、XOR 和 NOT 指令,它们能直接在二进制位上实现布尔操作,如下...原创 2019-06-24 20:07:38 · 715 阅读 · 0 评论 -
汇编语言PTR运算符:重写操作数的大小类型
PTR 运算符可以用来重写一个已经被声明过的操作数的大小类型。只要试图用不同于汇编器设定的大小属性来访问操作数,那么这个运算符就是必需的。例如,假设想要将一个双字变量 myDouble 的低 16 位传送给 AXO 由于操作数大小不匹配,因此,汇编器不会允许这种操作: .data myDouble DWORD 12345678h .code mov ax,myDouble...原创 2019-06-24 19:59:57 · 287 阅读 · 0 评论 -
汇编语言ALIGN伪指令:对齐一个变量
ALIGN 伪指令将一个变量对齐到字节边界、字边界、双字边界或段落边界。语法如下:ALIGN boundBound 可取值有:1、2、4、8、16。当取值为 1 时,则下一个变量对齐于 1 字节边界(默认情况)。当取值为 2 时,则下一个变量对齐于偶数地址。当取值为 4 时,则下一个变量地址为 4 的倍数。当取值为 16 时,则下一个变量地址为 16 的倍数,即一个段落的边界。...原创 2019-06-24 20:00:00 · 688 阅读 · 0 评论 -
汇编语言TYPE运算符:返回变量的大小
TYPE 运算符返回变量单个元素的大小,这个大小是以字节为单位计算的。比如,TYPE 为字节,返回值是 1;TYPE 为字,返回值是 2;TYPE 为双字,返回值是 4;TYPE 为四字,返回值是 8。示例如下: .data var1 BYTE ? var2 WORD ? var3 DWORD ? var4 QWORD ?下表是每个 TYPE 表达式的值。表达式 ...原创 2019-06-24 19:59:53 · 3473 阅读 · 0 评论 -
汇编语言LENGTHOF运算符:计算数组中元素的个数
LENGTHOF 运算符计算数组中元素的个数,元素个数是由数组标号同一行出现的数值来定义的。示例如下: .data byte1 BYTE 10,20,30 array1 WORD 30 DUP (?),0,0 array2 WORD 5 DUP(3 DUP(?)) array3 DWORD 1,2,3,4 digitStr BYTE "12345678",0如果...原创 2019-06-24 19:59:52 · 4841 阅读 · 0 评论 -
汇编语言数据传送示例
;数据传送示例 .386 .model flat,stdcall .stack 4096 ExitProcess PROTO,dwExitCode:DWORD .data val1 WORD 1000h val2 WORD 2000h arrayB BYTE 10h,20h,30h,40h,50h arrayW WORD 100h,200h,300h arrayD DWO...原创 2019-06-23 20:00:01 · 446 阅读 · 0 评论 -
汇编语言MOV指令:将源操作数复制到目的操作数
MOV 指令将源操作数复制到目的操作数。作为数据传送(data transfer)指令,它几乎用在所有程序中。在它的基本格式中,第一个操作数是目的操作数,第二个操作数是源操作数:MOV destination,source其中,目的操作数的内容会发生改变,而源操作数不会改变。这种数据从右到左的移动与 C++ 或 Java 中的赋值语句相似:dest = source;在几乎所...原创 2019-06-23 19:59:52 · 3245 阅读 · 0 评论 -
汇编器以及汇编流程
用汇编语言编写的源程序不能直接在其目标计算机上执行,必须通过翻译或汇编将其转换为可执行代码。实际上,汇编器与编译器 (compiler) 很相似,编译器是一类程序,用于将 C++ 或 Java 程序翻译为可执行代码。汇编器生成包含机器语言的文件,称为目标文件 (object file)。这个文件还没有准备好执行,它还需传递给一个被称为链接器 (linker) 的程序,从而生成可执行文件 ...原创 2019-06-22 16:59:57 · 1540 阅读 · 0 评论 -
汇编语言整数加减法示例
在《第一个汇编语言程序》一节中给出的 AddTwo 程序,并添加必要的声明使其成为完全能运行的程序。 ; AddTwo.asm -两个 32 位整数相加 .386 .model flat,stdcall .stack 4096 ExitProcess PROTO, dwExitCode:DWORD .code main PROC mov eax,5 ;将数字...原创 2019-06-22 16:59:54 · 1715 阅读 · 0 评论 -
汇编语言指令详解
指令(instruction)是一种语句,它在程序汇编编译时变得可执行。汇编器将指令翻译为机器语言字节,并且在…指令(instruction)是一种语句,它在程序汇编编译时变得可执行。汇编器将指令翻译为机器语言字节,并且在运行时由 CPU 加载和执行。一条指令有四个组成部分:标号(可选) 指令助记符(必需) 操作数(通常是必需的) 注释(可选)不同部分的位置安排如下所示:...原创 2019-06-22 16:59:52 · 1002 阅读 · 0 评论 -
二进制加法运算
两个二进制整数相加时,是位对位处理的,从最低的一对位(右边)开始,依序将每一对位进行加法运算。两个二进制数字相加,有四种结果,如下所示:0 + 0 = 0 0 + 1 = 1 1 + 0 = 1 1 + 1 = 10 1 与 1 相加的结果是二进制的 10(等于十进制的 2)。多出来的数字向更高位产生一个进位。如下图所示,两个二进制数 0000 0100 和 000...原创 2019-06-20 21:54:54 · 10173 阅读 · 0 评论 -
二进制减法运算
如果采用与十进制减法相同的方法,那么从一个较大的二进制数中减去一个较小的无符号二进制数就很容易了。示例如下: 01101 (十进制数 13)– 00111 (十进制数 7)———-位 0 上的减法非常简单: 01101– 00111———- 0下一个位置上执行(0-1),要向左边的相邻位借1,其结果是从 2 ...原创 2019-06-20 21:55:02 · 5769 阅读 · 1 评论 -
汇编语言的应用(用途)
早期在编程时,大多数应用程序部分或全部用汇编语言编写。它们不得不适应小内存,并尽可能在慢速处理器上有效运行。随着内存容量越来越大,以及处理器速度急速提高,程序变得越来越复杂。程序员也转向高级语言如 C语言、FORTRAN COBOL,这些语言具有很多结构化能力。最近,Python、C++、C# 和 Java 等面向对象语言已经能够编写含数百万行代码的复杂程序了。很少能看到完全用汇编语...原创 2019-06-20 21:29:57 · 2526 阅读 · 0 评论 -
汇编语言是一种什么程序设计语言?
本教程主要介绍与运行 Microsoft Windows 32 位和 64 位系统的 Intel 和 AMD 处理器相兼容的微处理器编程。教程中使用了 Microsoft 宏汇编器(称为 MASM)的最新版本。Microsoft Visual Studio 的大多数版本(专业版,旗舰版,精简版……)都包含 MASM。可以访问(asmirvine.com),了解 Visual Stud...原创 2019-06-20 21:29:56 · 13731 阅读 · 0 评论 -
虚拟机是什么?
虚拟机概念(virtual machine machine)是一种说明计算机硬件和软件关系的有效方法。在安德鲁 · 塔嫩鲍姆(Andrew Tanenbaum)的书《结构化计算机组织》(Structured Computer Organization)中可以找到对这个模型广为人知的解释。要说明这个概念,先从计算机的最基本功能开始,即执行程序。计算机通常可以执行用其原生机器语言编写的程...原创 2019-06-20 21:29:59 · 2542 阅读 · 0 评论 -
汇编语言的数据表示
汇编语言程序员处理的是物理级数据,因此他们必须善于检查内存和寄存器。通常,二进制数被用于描述计算机内存的内容;有时也使用十进制和十六进制数。所以必须熟练掌握数字格式,以便快速地进行数字的格式转换。每一种数制格式或系统,都有一个基数(base),也就是可以分配给单一数字的最大符号数。下表给岀了数制系统内可能的数字,这些系统是硬件和软件手册中最常使用的。系统 基数 可能的数字...原创 2019-06-20 21:30:01 · 278 阅读 · 0 评论 -
二进制(bit)整数
计算机以电子电荷集合的形式在内存中保存指令和数据。用数字来表示这些内容就需要系统能够适应开 / 关(on/off)或真 / 假(true/false)的概念。二进制数(binary number)用 2 个数字作基础,其中每一个二进制数字(称为位,bit)不是 0 就是 1。位自右向左,从 0 开始顺序增量编号。左边的位称为最高有效位(Most Significant Bit, MS...原创 2019-06-20 21:54:52 · 2642 阅读 · 0 评论 -
Java 套接字(Socket)
网络应用模式主要有:主机/终端模式:集中计算,集中管理; 客户机/服务器(Client/Server,简称C/S)模式:分布计算,分布管理; 浏览器/服务器模式:利用Internet跨平台。www(万维网)就是建立在客户机/服务器模式上,以HTML语言和HTTP协议为基础,能够提供各种Internet服务的信息浏览系统。网络信息放在主机的不同位置,www服务器利用超文本链路链接各项信息。...原创 2019-06-19 20:59:57 · 2109 阅读 · 0 评论 -
几个重要的java数据库访问类和接口
编写访问数据库的Java程序还需要几个重要的类和接口。DriverManager类DriverManager类处理驱动程序的加载和建立新数据库连接。DriverManager是java.sql包中用于管理数据库驱动程序的类。通常,应用程序只使用类DriverManager的getConnection()静态方法,用来建立与数据库的连接,返回Connection对象:static Conn...原创 2019-06-19 21:39:56 · 1554 阅读 · 0 评论 -
Java数据库更新
数据库更新操作包括数据表创建、删除、以及数据表记录的增加、删除、修改等操作。如果利用数据 SQL命令实现,则利用Statement对旬的executeUpdate()方法,执行SQL的update语句,实现数据表的修改;执行SQL的insert语句,实现数据表记录的添加。例如,在前面数据为查询例子基础上,再增加对数据表的修改和插入。限于篇幅,不再给出完整程序,只给出实现修改和插入的方法。程序可...原创 2019-06-19 21:59:51 · 2174 阅读 · 0 评论 -
Java数据库查询简介
利用Connection对象的createStatement方法建立Statement对象,利用Statement对象的executeQuery()方法执行SQL查询语句进行查询,返回结果集,再形如getXXX()的方法从结果集中读取数据。经过这样的一系列步骤就能实现对数据库的查询。【例 13-9】Java应用程序访问数据库。应用程序打开考生信息表ksInfo,从中取出考生的各项信息。设考生信...原创 2019-06-19 21:39:58 · 476 阅读 · 0 评论