摘要: 安装五笔输入法 | Install wubi1、在终端窗口中输入如下命令:sudo apt-get install ibus-table-wubi系统分析软件包列表,自动下载所需软件包,并安装。2、右击输入法图标,在菜单中选择“重新启动”。3、点击菜单“系统” --> “首选项” --> “键盘输入法”。添加“五笔86”为默认输入法。 阅读全文
posted @ 2012-02-05 18:41 taek 阅读(257) 评论(0) 推荐(0) 编辑
摘要: 2.Test的一个非常普遍的用法是用来测试一方寄存器是否为空:test ecx, ecxjz somewhere如果ecx为零,设置ZF零标志为1,Jz跳转 阅读全文
posted @ 2012-02-05 15:16 taek 阅读(2815) 评论(0) 推荐(0) 编辑
摘要: 这是从比较指令来的,比较指令实际上就是把两个操作数相减,如果结果为0,那么就是说两个操作数相等,否则就说明不相等,这个操作同时会置标志位。接下来的JNZ/JNE指令就根据标志位进行跳转。JNE,和JNZ竟然是指同一东东?木有什么区别吗 阅读全文
posted @ 2012-02-05 15:13 taek 阅读(6586) 评论(1) 推荐(0) 编辑
摘要: ***************************************************************开始啃用汇编写的字符串函数:***************************************************************---------------------------------------------------------------_I386_STRING_H_宏---------------------------------------------------------------include/asm-i386/s 阅读全文
posted @ 2012-02-05 13:36 taek 阅读(1419) 评论(0) 推荐(0) 编辑
摘要: CPU内部的寄存器中,有一种特殊的寄存器(对于不同的处理机,个数和结构都可能不同),具有三种作用:1) 用来存储相关指令的某些执行结果;2) 用来为CPU执行相关指令提供行为依据;3) 用来控制CPU的相关工作方式。这种特殊的寄存器在8086CPU中,被称为标志寄存器(简称为flag)。8086CPU的标志寄存器有16位,其中存储的信息通常被称为程序状态字(PSW)。flag和其他寄存器不一样,其他寄存器是用来存放数据的,都是整个寄存器具有一个含义。而flag寄存器是按位起作用的,也就是说,它的每一位独有专门的含义,记录特定的信息。8086CPU的flag寄存器的结构如下:flag的1、3、5 阅读全文
posted @ 2012-02-05 13:22 taek 阅读(2271) 评论(1) 推荐(1) 编辑
摘要: 2010-07-20 20:41:32|分类:ASM|字号订阅字符串操作指令的实质是对一片连续的存储单元进行处理,这片连续的存储单元由隐含指针DS:SI或ES:DI来指定;字符串操作指令可对内存单元按照字节、字、双字进行处理,并能根据操作对象的字节数使变址寄存器SI/DI增加或减少1、2、4字节;规定如下:A.当DF=0时,变址寄存器SI/DI增加1、2、4字节;即:变址寄存器SI/DI递增的步长可以是1、2、4字节;B.当DF=1时,变址寄存器SI/DI减少1、2、4字节;即:变址寄存器SI/DI递减的步长可以是1、2、4字节;一、取字符串数据指令(Load String Instructi 阅读全文
posted @ 2012-02-05 12:55 taek 阅读(11433) 评论(0) 推荐(0) 编辑
摘要: 计算机中的内存是以字节为单位的连续的存储空间,每个字节都有一个唯一的编号,这个编号就称为内存地址;因为内存的存储空间是连续的,所以,内存字节的地址编号也是连续的,并用二进制或十六进制数来表示;在内存中,每个变量都有自己的存储单元,不同类型的变量占用的存储单元空间大小不一样;对于多字节变量来说,在内存中是按照"高高低低"的规则存放的,即:高字节存放在高地址内存单元中,低字节存放在低地址内存单元中;而变量的地址就是其所占用存储单元的最低字节的内存地址,即:该变量所占用存储单元的第一个字节的地址;计算机处理内存中的变量(内存单元)时,都是从最低地址向高地址方向处理的;对变量进行处 阅读全文
posted @ 2012-02-05 12:39 taek 阅读(3620) 评论(0) 推荐(0) 编辑
摘要: 当发生函数调用的时候,栈空间中存放的数据是这样的:1、调用者函数把被调函数所需要的参数按照与被调函数的形参顺序相反的顺序压入栈中,即:从右向左依次把被调函数所需要的参数压入栈;2、调用者函数使用call指令调用被调函数,并把call指令的下一条指令的地址当成返回地址压入栈中(这个压栈操作隐含在call指令中);3、在被调函数中,被调函数会先保存调用者函数的栈底地址(push ebp)(从高内在地址--》低内存地址),然后再保存调用者函数的栈顶地址,即:当前被调函数的栈底地址(mov ebp,esp);4、在被调函数中,从ebp的位置处开始存放被调函数中的局部变量和临时变量,并且这些变量的地址按 阅读全文
posted @ 2012-02-05 12:04 taek 阅读(7253) 评论(3) 推荐(0) 编辑
摘要: GCC支持在C/C++代码中嵌入汇编代码,这些代码被称作是"GCC Inline ASM"(GCC内联汇编);一、基本内联汇编GCC中基本的内联汇编非常易懂,格式如下:__asm__ [__volatile__] ("instruction list");其中,1.__asm__:它是GCC定义的关键字asm的宏定义(#define __asm__ asm),它用来声明一个内联汇编表达式,所以,任何一个内联汇编表达式都以它开头,它是必不可少的;如果要编写符合ANSI C标准的代码(即:与ANSI C兼容),那就要使用__asm__;2.__volatil 阅读全文
posted @ 2012-02-05 11:36 taek 阅读(20327) 评论(1) 推荐(4) 编辑
摘要: 用汇编编写的程序虽然运行速度快,但开发速度非常慢,效率也很低。如果只是想对关键代码段进行优化,或许更好的办法是将汇编指令嵌入到 C 语言程序中,从而充分利用高级语言和汇编语言各自的特点。但一般来讲,在 C 代码中嵌入汇编语句要比"纯粹"的汇编语言代码复杂得多,因为需要解决如何分配寄存器,以及如何与C代码中的变量相结合等问题。GCC 提供了很好的内联汇编支持,最基本的格式是:__asm__("asm statements");例如:__asm__("nop");如果需要同时执行多条汇编语句,则应该用"\\n\\t"将 阅读全文
posted @ 2012-02-05 11:33 taek 阅读(3129) 评论(0) 推荐(1) 编辑