(十八)寻址方式--汇编笔记

汇编语言

Posted by YiMiTuMi on March 27, 2020

寻址方式

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

EA:偏移地址

SA:段地址

直接寻址:(根据idata寻址)

寻址方式:[idata]

含义:EA = idata; SA = (ds)

常用:[idata]

寄存器间接寻址:(根据寄存器中地址寻址)

寻址方式: 
		 [bx]
	     [si]
		 [di]
		 [bp]

含义:
     EA = (bx); SA = (ds)
     EA = (si); SA = (ds) 
	 EA = (di); SA = (ds)
	 EA = (bp); SA = (ss)

常用格式:
	    [bx]
		[si]等

寄存器相对寻址:(相对于一个idata寻址)

寻址方式:
		[bx + idata]
		[si + idata]
		[di + idata]
		[bp + idata]
	
含义:
	 EA = (bx) + idata; SA = (ds)
	 EA = (si) + idata; SA = (ds)
	 EA = (di) + idata; SA = (ds)
	 EA = (bp) + idata; SA = (ss)

常用格式:
	    用于结构体:[bx].idata
		用于数组:  idata[bx], idata[di]
		用于二维数组:[bx][idata]

基址变址寻址:

寻址方式:
		[bx + di]
		[bx + si]
		[bp + di]
		[bp + si]

含义:
	EA = (bx) + (di); SA = (ds)
	EA = (bx) + (si); SA = (ds)
	EA = (bp) + (di); SA = (ss)
	EA = (bp) + (si); SA = (ss)

常用格式:
		用于二维数组:[bx][di]

相对基址变址寻址:

寻址方式:
		[bx + di + idata]
		[bx + si + idata]
		[bp + di + idata]
		[bp + si + idata]

含义:
	EA = (bx) + (di) + idata; SA = (ds)
	EA = (bx) + (si) + idata; SA = (ds)
	EA = (bp) + (di) + idata; SA = (ss)
	EA = (bp) + (si) + idata; SA = (ss)

常用格式:
		用于表格(结构)中的数组项:[bx]:idata[si]
		用于二维数组:idata[bx][si] ## 寻址方式的综合应用

DEC公司记录:

公司名:DEC 总裁姓名:Ken Olsen 排名: 137 收入: 40 著名产品:PDP

内存地址中为:

	seg:60  00 'DEC'
	03 'Ken Oslen'
	0C 137
	0E 40
	10 'PDP'

现在要修改为:

 1)排名 = 38

 2)DEC = 70

 3)PDP = VAX

C语言:

struct company
{
	char cn[3];
	char hn[9];
	int pm;
	int sr;
	char cp[3];
};

int main()
{
	
	company dec;
 
	int i = 0;
	dec.pm = 38;
	dec.sr = dec.sr + 70;
	
	dec.cp[i] = 'v';
	i++;
	dec.cp[i] = 'A';
	i++;
	dec.cp[i] = 'x'
	return 0;
}

汇编:

mov ax, seg //seg 段寄存器
mov ds, ax
mov bx, 0060H
mov bi, 0

mov word ptr [bx].oCH, 38
add word ptr [bx].0EH, 70       //dec.pm = 70

mov byte ptr [bx].10H[bi], 'v' //dec.cp[i] = 'v'
inc bi 
mov byte ptr [bx].10H[bi], 'A'
inc bi
mov byte ptr [bx].10H[bi], 'V'

8080CPU提供了如 [bx + si + idata] 的寻址方式为结构化数据的处理提供了方便。使得我们可以在编程的时候,从结构化的角度去看待所要处理的数据。

如,用bx定位整个结构体,用idata定位结构体中的某一项数据,用si定位数组中的每个元素。

[bx].idata

[bx].idata[si]

月季花 – 等待有希望的希望