8.6 寻址方式的综合应用
按照王爽教材里给的例子:
| 公司名称 | DEC |
| 总裁姓名 | Ken Olsen |
| 排名 | 137 |
| 收入 | 40 |
| 著名产品 | PDP |
以上是DEC公司1982年的情况,到了1988年DEC公司的信息放生了变化,如下:
| 公司名称 | DEC |
| 总裁姓名 | Ken Olsen |
| 排名 | 38 |
| 收入 | +70 |
| 著名产品 | VAX |
利用汇编语言来对对应数据进行修改。

代码如下:
mov ax, seg ;seg:60 |
观察相同功能的C语言代码:
struct company { /*定义公司记录的结构体*/ |
main() |
对应C语言风格,将汇编语言代码进行改写:
mov ax, seg |
从这个例子看,有几个收获与结论:
- 我们再编程的时候,从结构化的角度去看待所要处理的数据。
- 一个结构化的数据包含了多个数据项。
- 8086CPU提供的[bx+si+idata]的寻址方式为结构化数据的处理提供了方便。
- **我们可以用[bx+idata+si]的方式来访问结构体中的数据。用bx定位整体结构体,用idata定位结构体中的某一个数据项,用si定位数组项中的每一个元素。为此,汇编语言提供了更贴切的书写方式,
[bx].idata、[bx].idata[si]。
对比C语言和汇编语言代码,我们可以看到,如
dec.cp[i]与汇编语言的bx.10h[si]是很相似的。