在这一段程序中:
assume cs:code,ds:data
data segment
db 'abc'
dw 1
dw 2
data ends
code segment
start:
mov ax,data
mov ds,ax
mov bx,0
mov si,0
mov byte ptr [bx+si],'d'
inc si
mov byte ptr [bx+si],'e'
inc si
mov byte ptr [bx+si],'f'
mov word ptr [bx+3],3
mov word ptr [bx+5],4
mov ax,4c00h
int 21h
code ends
end start
我们先查看汇编的结果
用c语言来试试:
#include<stdio.h>
struct str
{
char a[3];
int b;
int c;
}s = { "abc",1,2 };//初始值
int main()
{
int i = 0;
s.a[i] = 'd';
i++;
s.a[i] = 'e';
i++;
s.a[i] = 'f';
s.b = 3;
s.c = 4;
printf("修改后:%d %d %s\n", s.b, s.c, s.a);
return 0;
}
感觉汇编还是更直观的感受地址和值的变化的。