您的位置:首页 > 其它

数据处理的两个基本问题05 - 零基础入门学习汇编语言42

2011-01-03 22:36 886 查看

第八章:数据处理的两个基本问题05

让编程改变世界

Change the world by program

实验七:寻址方式在结构化数据访问中的应用

这个程序是到目前为止我们遇到的最复杂的程序,它几乎用到了我们之前学过的所有知识和编程技巧。

这个程序是对我们目前能力的一个考验,请一定要认真完成,务必弄明白才继续往下学习。

源数据在哪里?

年份(0-53H)、收入(54H-0A7H)、雇员(0A8H-0D1H)的存放位置

目标存放位用什么来表示?

年份、收入、雇员、平均收入的存放位置

观察数据类型和如何利用偏移寻址?

初始化阶段
mov ax,data

mov ds,ax

mov ax,table   ;这里因为data已被占用

mov es,ax

mov bx,0

mov si,0

mov di,0

mov cx,21         ;二十一次循环,大家可想而知

每次循环要执行的任务

存放年份

存放公司总收入

存放公司人数

计算人均收入并存放

存放年份
mov al,[bx]

mov es:[di], al

mov al,[bx+1]

mov es:[di+1], al

mov al,[bx+2]

mov es:[di+2], al

mov al,[bx+3]

mov es:[di+3], al

存放公司总收入
mov ax,54h[bx]    ;第一个'年收入'的段基
                                     ;址为54H

mov dx,56h[bx]

mov es:5h[di],ax

mov es:7h[di],dx

存放公司人数
mov ax,0A8h[si]       ;第一个'人数'的段基址
                                          ;为0A8H
mov es:0Ah[di],ax

计算人均收入并存放

mov ax,54h[bx]

mov dx,56h[bx]                    ;这两句是初始化被除数

div word ptr ds:0A8h[si]   ;除以人数

mov es:0dh[di],ax                ;将商放入指定位置

为下一次循环时存放数据做准备
add bx,4  ;bx确定年份和收入

add si,2    ;si确定人数

add di,16 ;di确定的是每行的列数

[buy] 获得所有教学视频、课件、源代码等资源打包 [/buy]
[Downlink href='http://kuai.xunlei.com/d/LRYEJBCTSHOJ']视频下载[/Downlink]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: