汇编语言-寻址方式的综合应用

1.  

这些数据被存放在seg段中偏移地址60H起始的位置,分别存储了3个字节的公司名称;从seg:60+3开始以ASCII字符的

的形式存储了9个字节的总裁姓名,然后是在seg:60+0C处存储了一个字形数据,在seg:60+0E起始处存放了公司的收入,从seg:60+10处存储了3个字节的产品名称。

现在进行修改:

排名上升至38  (位置:seg:60+0C)

DEC的收入增加了70亿美元(位置:seg:60+0E)

产品变为VAX系列计算机。(位置:seg:60+10)

修改程序:

mov ax,seg
mov ds,ax
mov bx,60h              ;确定记录地址,ds:bx

mov  word ptr [bx+0cH],38    ;排名字段改为38
add   word ptr [bx+0eH],70    ;收入字段增加70

mov si,0
mov  byte  ptr [bx+10H+si],'V'
inc si
mov  byte  ptr [bx+10H+si],'A'
inc si
mov  byte  ptr [bx+10H+si],'X'

其中C语言程序
 

#include <stdio.h>
struct company {//定义一个公司的结构体
	char cn[3];//公司名称
	char hn[9];//总裁的名字
	int pm;//排名
	int  sr;//收入
	char cp[3];//著名产品
	
};
struct company dec=
{
	"DEC","KEN Olsen",137,40,"PDP"
};//定义一个公司的记录变量,内存中将村有一条公司的记录
main() {
	int i;
	dec.pm = 38;
	dec.sr = dec.sr + 70;
	i = 0;
	dec.cp[i] = 'V';
	i++;
	dec.cp[i] = 'A';
	i++;
	dec.cp[i] = 'X';
	return 0;
}

运行结果:

其中:mov  word ptr [bx+0cH],38  可以写成:mov  word ptr   [bx].0cH,38  

mov  byte  ptr [bx+10H+si],'V'   可以写成:  mov  byte  ptr [bx].10H[si],'V'

猜你喜欢

转载自blog.csdn.net/huanhuan59/article/details/84328405