汇编语言学习笔记 下载本文

[bx+si]和[bx+di]

[bx+si]表示一个内存单元,偏移地址为(bx)+(si) mov ax, [bx+si] 指令含义:

数学描述: (ax)= ((ds)*16+ (bx) + (si)) 其他形式:mov ax,[bx][si]

[bx+si+idata]和[bx+di+idata]

[bx+si+idata]表示一个内存单元,偏移地址为(bx)+(si)+idata mov ax, [bx+si+idata] 指令含义:

数学描述: (ax)= ((ds)*16+ (bx) + (si) +idata) 其他形式:mov ax,[bx+200+si] mov ax,[200+bx+si] mov ax,200[bx][si] mov ax,[bx].200[si] mov ax,[bx][si].200

不同的寻址方式的灵活应用

[idata]用一个常量来表示地址,可用于直接定位一个内存单元 [bx]用一个变量来表示的内存地址,可用于间接定位一个内存单元

[bx+idata]用一个变量和常量表示地址,可在一个起始地址的基础上用变量间接定位一个内存单元

[bx+si]用两个变量表示地址

[bx+si+idata]用两个变量和一个常量表示地址

一般来说,在需要暂存数据的时候,我们都应该使用栈.

第八章 数据处理的两个基本问题

我们将使用两个描述性的符号reg来表示一个寄存器,用sreg表示一个段寄存器.

reg的集合包括:ax、bx、cx、dx、ah、al、bh、bl、ch、cl、dh、dl、sp、bp、si、di

sreg的集合包括:ds、cs、ss、es

bx、si、di和bp

在8086CPU中,只有bx、si、di和bp这4个寄存器可以用在“[…]”中来进行内存单元的寻址

在“[…]”中,这4个寄存器可以单个出现,或只能以4种组合出现:bx和si、bx和di、bp和si、bp和di

只要在“[…]”中使用寄存器bp,而指令中没有显式地给出段地址,则段地址就默认在cs中.

寻址方式小结

指令要处理的数据有多长

8086CPU的指令,可以处理两种尺寸的数据,byte和word

在没有寄存器名存在的情况下,用操作符X ptr指明内存单元的长度,X在汇编指令中可以为word或byte. push和pop指令只进行字操作