第8章王爽汇编语言学习笔记

---恢复内容开始---

数据处理的俩个基本问题。

  1.处理的数据在什么地方

  2.要处理的数据有多长

  reg表示寄存器  ax//累加器

        ,bx//基址寄存器

        ,cx//循环次数寄存器

        ,dx//累加器

        ,ah,al,bh,bl,ch,cl,dh,dl,sp,bp,si,di

  sreg表示段寄存器

          ds\ss\cs\es

  机器指令处理的数据在什么地方

  绝大部分机器指令都是进行数据处理的指令,处理大致分3类,读取写入运算,在机器指令这一层来讲,并不关心数据的值是多少,而关心指令执行的前一刻,他将要处理的数据所在的位置,

  指令执行前,所要处理的数据可以在三个地方:CPU内部,内存,端口。

3.汇编语言中数据位置的表达!

1.立即数(idata)

  对于直接包含在机器指令中的数据(执行前在CPU的指令缓存器中),在汇编语言中称为:立即数,在汇编指令中直接给出

  (2)寄存器。

    指令要处理的数据在寄存器中,在汇编指令中给出相应的寄存器名。

  (3)段地址和偏移地址

    指令要处理的数据在内存中,在汇编指令中可用[x]的格式给出偏移地址EA,段地址SA在某个寄存器中。

    存放段地址的寄存器可以是默认的,如

4.  寻址方式

   当数据存放在内存中时候,我们可以用多种方式来给定这个内存单元的偏移地址,

    这种定位内存单元的方法一般被称为寻址方式。

    总共又5种寻址方式: 直接寻址,寄存器间接寻址,寄存器相对寻址,基址变址寻址,相对基址变址寻址,

5.

  指令要处理的数据有多长

    8086CPU的指令,可以处理俩种尺寸的数据,byte和word。所以在机器指令中,要指明是字操作还是字节操作。

    1.在没有寄存器名存在的情况下,用操作符X ptr 指明内存单元的长度,X在汇编指令中可谓word或者byte

    

mov word ptr ds :[0],1
inc word ptr [bx]
inc word ptr ds:[0]
add word ptr [bx],2

//上面是用word ptr 指明了指令访问的内存单元是一个字单元

mov byte ptr ds:[0],1
inc byte ptr [bx]
inc byte ptr ds:[0]
add byte ptr [bx],2

//上面用 byte ptr 指明了指令访问的内存单元是一个字节单元

有些指令 默认了访问的是字单元还是字节单元,比如,push[1000H] 就不用指明访问的是字单元还是字节单元,因为push 只进行字操作

7. div指令

   div是除法指令,使用div做除法的时候要注意以下问题。

   (1)除数,有8位数和16位数俩种,在一个reg或内存单元中。

    (2)被除数,默认放在AX或者DX 和AX中,一般DX存高16位,AX存低16位。

    (3)结果:如果除数为8位,则AL存储除法操作的商,AH存储除法操作的余数;如果除数为16位,则AX存储除法操作的商,DX存储除法操作的余数

8.伪指令dd

  前面用db和dw定义字节型数据和字型数据,dd是用来定义dword(double)型数据的

 9.dup 是一个操作符,在汇编语言中同db,dw,等一样,也是由编译器识别处理的符号,它是和db,dw,dd等数据定义伪指令配合使用的,用来进行数据的重复。

  db 3 dup (0)

  定义了3个字节 ,它们的值都为0,相当于db 0,0,0

猜你喜欢

转载自www.cnblogs.com/godoforange/p/10300503.html