anangel 发表于 2009-10-16 19:16:33

轻松学汇编(1) -----By天草培训学员:anangel

标题:轻松学汇编(3) -----By天草培训学员:anangel
链接:http://www.unpack.cn/viewthread.php?tid=41477
贴者:anangel
日期:2009-10-16 19:16

汇编基础知识①
1.通用寄存器:
EAX ECX EDX EBX ESP EBP ESI EDI (图1)

数据寄存器以及定义:
EAX ECX EDX EBX用来暂时存放计算过程中所用的操作数、结果或其他信息。
EAX(Accumilator):累加器,算数运算的主要寄存器
ECX(Count):计数器,在循环(LOOP)和传处理指令中用作隐含的计数器
EDX(Date):数据寄存器,一般在做双字长运算时把EDX和EAX组合在一起放一个双字长数,EDX用来存放高位数字
EBX(Base):基址寄存器,

寄存器以及定义:ESP EBP ESI EDI它们可以像数据寄存器一样在运算过程中存放操作数,但它们只能16位使用。此外它们更经常的用途是在段内寻址时提供偏移地址。
ESP(Stack Pointer):堆栈指针寄存器,表示栈顶的偏移地址。
EBP(Base Pointer):基址指针寄存器,可作为堆栈区中的基值地址以便访问堆栈中的其他信息。
ESI (Source Index):原地址指针寄存器
EDI(Destination Index):目的地址指针寄存器

ESI和EDI一般与EDS联用,用来确定数据段中某一存储单位的地址。这两个变址寄存器有自动增量和减量的功能。


2.段寄存器:
ES CS SS DS FS GS(图2)

(图2)
    CS:代码段(Code Segment)
    DS:数据段(Data Segment)
    ES:附加数据段(Extra Segment)
    SS:堆栈段(Stack Segment)
    FS:附加段
    GS  附加段
3.指令寄存器

EIP(Instrcution Pointer):指令指针存储寄存器,它用来存放代码中偏移地址
4. 其他16个标志位(图3)

                (图3)
       CF(Carry Flag):符号标志,记录运算结果的符号,结果为负数时则 1,否则0
       PF(Party Flag):奇偶标志,用来为机器中传送信息时可能产生的代码出错情况听歌检验条件。当结果操作数中1的个数为偶数时置1,否则置0
       AF(Assistant Flag):辅助进位标志位
       ZF(Zero Flag):零标志,运算结果为0时ZF位置1,否则置0
       SF(Singal Flag):符号标志,记录运算结果的符号,结果为负时置1,否则置0
       IF(Interrupt Flag):中断允许标志位,由 CLI,STI两条指令来控制
       DF(Direction Flag):向量标志位,由 CLD,STD 两条指令来控制
       OF(Overflow Flag):溢出标志,在操作数超出了计算能表示的范围称为溢出
     





                                                                                              天草学员:anangel  2009.10.16

[ 本帖最后由 anangel 于 2009-10-27 12:04 编辑 ]

anangel 发表于 2009-10-16 19:47:48

汇编基础知识②

8086处理器寻址方式
1.        立即寻址(Immediate Addressing)图(1)
      这种寻址方式下,操作数以常量的形式出现在指令中
      举例:01.MOV CX,9;立即数9作为原操作数寄给寄存器ECX。
            02.MOV AX,5807H 指令执行后EAX=5870H

2.存储器寻址
2-1直接寻址(Direct Addressing)(图2)
      格式:(1)[常量]
               (2)变量
      直接寻址是最简单的存储寻址。这种寻址方式下,操作数的有效地址由指令直接给出,是带有方括号的常量或是变量。操作数的段地址默认为在数据段寄存器DS中,即DS为默认段寄存器


2-2寄存器间接寻址(Register Indirect Addressing)(图3)
      格式:
      操作数的有效地址EA由寄存器 BX BP SI DI给出。在80386下8个寄存器都可以给出
      如果指令使用是 BX SI DI则操作数据段中,且用数据寄存器DS中内容为段地址。
      如果指令使用是 BP 则操作数据段中,且用数据寄存器SS中内容为段地址。
      举例:01.MOV AL,;设BX的内容为1000H则指令功能是将DS段1000H单元内容传送到AL中

2-3寄存器相对寻址(Register Relative Addressing) (图4)
即在寄存器间址寻址方式的基础上再加一个位移量,位移量可以是8位也可以是 16 位,比如说 MOV AX,。

                          (图4)
2-4基址变址寻址(Based Indexed Addressing)(图5)
格式:偏移量

其中偏移量可以是常量也可以是变量,将基址寄存器成基址+变址寄存器
在 80386 下除 ESP外的其它 7 个通用寄存器都可以作为变址寄存器


        (BX)        (SI)
         EA=          +                +偏移量
        (BP)        (DI)
基址是BX短寄存器使用DS 基址是BP短寄存器是SS

                       (SI)
PA=16*(DS)+(BX)+             +偏移量
                       (DI)

                       (SI)
PA=16*(SS)+(BP)+             +偏移量
                       (DI)

例子:01 MOV AX,3000H
设(DS)=10000H,(BX)=0400H,(SI)=1260H
则EA=3000H+0400H+1260H==4660H
则PA=10000H+4660H=14660H



                    (图5)
2-5相对基址变址寻址(Relative based indexed addressing) (图6)
在基址变址寻址方式的基础上加上一位移量
当基址寄存器为BX时,使用DS为段寄存器;而当基址寄存器为BP时,则使用SS为段寄存器。
举例:01MOV BH,ES:;8 位操作,段寄存器是 ES。
02MOV DL,;8 位操作,段寄存是 SS,因为用了 EBP作为基址寄存器。



(图6)
80386知识
在保护模式下,80386 处理器可以使用所有的物理内存。段基址可以是 32 位,也可以不
是 16 的倍数,同时它的最大长度为 4G,这与 8086 完全不同,在形成逻辑地址时用段基址
直接加上段内偏移地址, 而并不将段基址左移 4 位(乘以16)。 通常情况下, 除了访问堆栈外,默认的段都为 DS,有跨段前缀就另当别论了。在以 BP,EBP,ESP作为基址寄存器时,这时默认的段寄存器应该是SS,举几个简单的例子:
    MOV EAX,;这里的段寄存器是DS
    MOV EAX,FS:;这里的段寄存器是 FS,因为指令中使用跨段前缀显示指定了
    MOV EAX,;这里的段寄存器是SS,因为指令中使用了 BP作为基址寄存器
    MOV EAX,GS:;这里段寄存器是 GS,因为指令中使用跨段前缀显示指定了

[ 本帖最后由 anangel 于 2009-10-24 20:36 编辑 ]

不懂编程 发表于 2009-10-16 19:53:36

不错啊,来看下啊

论坛搜索 发表于 2009-10-16 20:49:57

学习编程对于我来说只能是一个梦想了,非常渴望啊,但是年纪大了,没有什么英语基础,哎,太晚了,学汇编根本不知道从哪里学起,真羡慕你们啊,

ejer 发表于 2009-10-16 20:56:44

楼主写的不错.如果能加上各寻址方式的大致作用,既便于理解,更便于记忆.效果会更好!

hw233 发表于 2009-10-16 21:03:37

写得很详细....

cjteam 发表于 2009-10-16 21:22:00

确实是很不错,还以为附件里是这文章的word文章,原来。。。

Farlandscape 发表于 2009-10-16 21:26:26

:lol 很不错的资料,先拿来学习了,谢谢LZ分享

常闇之皇 发表于 2009-10-16 21:44:39

学习,补了下基础,多谢分享

hezhaoyang 发表于 2009-10-16 22:18:01

谢谢LZ分享:)

yanbox 发表于 2009-10-16 23:08:42

不错..真的

flyfame 发表于 2009-10-17 09:18:18

呵呵,我也是天草的vip学员。

我是will。。顶下你。

noway 发表于 2009-10-17 10:22:42

温故而知新,:P

w2738093 发表于 2009-10-17 13:50:16

好东西啊 下来学习学习

娃娃鱼 发表于 2009-10-17 14:26:19

不错啊!天草培训学员一发贴就来个精!支持!
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 轻松学汇编(1) -----By天草培训学员:anangel