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'