寄存器 及 寻址

数据处理的两个基本问题:

1.数据在哪里

2.数据有多长

 

reg的集合:

ax,bx,cx,dx,  al,bl,cl,dl, ah,bh,ch,dh, si,di, sp, bp

sreg的集合:

cs,ds,ss,es

在[...]中,这4个寄存器可以单个出现,或只能以4种组合出现:

bx+si, bx+di, bp+si,bp+di

 

汇编语言中数据位置的表达:

1.立即数(idata)

e.g.:

mov ax,1 ;(10进制 )

add bx,2000h ;(16..)

add bx,00010000b(2进制)

mov al,'a' (ascii code)

2.寄存器

mov ax,bx

push bx

mov ds:[0],bx

3.段地址(SA)和偏移地址(EA)

mov ax,[0]

mov ax,[di]

mov ax,[bx+8]

等指令,段地址默认在ds中

 

mov ax,[bp]

mov ax,[bp+8]

mov ax,[bp+si+8]

等指令,段地址默认在ss中。

 

 

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

mov ax,1

mov bx,ds:[0]

...word...

mov al

mov al,bl

...byte...

没有寄存器名存在的情况下,用操作符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

 

mov byte ptr ds:[0] , 1

 

 

 

 

 

 

 

 

posted @ 2011-01-08 14:43  庚武  Views(316)  Comments(0Edit  收藏  举报