cfer 发表于 2011-11-13 23:27:24

第8章的实验,分享一下。。。

assume        cs:codesg,ss:stack,ds:data
data        segment
        db        '1975','1976','1977','1978','1979','1980','1981'
        db        '1982','1983','1984','1985','1986','1987','1988'
        db        '1989','1990','1991','1992','1993','1994','1995'
        dd        16,22,382,1356,2390,8000,16000,24486,50065,97479
        dd        140417,197514,345980,590827,803530,1183000,1843000
        dd        2759000,3753000,4649000,5937000       
        dw        3,7,9,13,28,38,130,220,476,778,1001,1442,2258
        dw        2793,4037,5635,8226,11542,14430,15257,17800
data        ends
stack        segment
        dw        0,0,0,0,0,0,0,0
stack        ends
table        segment
        db        21        dup        ('year summ ne ?? ')
table        ends
codesg        segment
start:                    mov        ax,        data
                mov        ds,        ax                                ;数据段寄存器
                mov        ax,        table                       
                mov        es,        ax              ;table段寄存器
                mov        ax,        stack
                mov        ss,        ax                               
                mov        sp,        16              ;设置桟段指针
                mov        bx,        0              ;bx为年份指针,初始时指向年份起始地址
                mov        bp,        0              ;bp为table段基址寄存器
                mov        si,        84              ;si是收入指针,初始时指向收入起始地址
                mov        di,        168              ;di是人数指针,初始时指向人数起始地址
                mov        cx,        21              ;cx中存放循环次数
        s:        push        cx                      ;计数值压栈
                mov        ax,                               
                mov        es:,        ax
                add        bx,        2
                mov        ax,       
                mov        es:,        ax    ;处理年份
                add        bx,        2               
               
                mov        ax,                      ;这里特意让收入的低8位通过ax传送,是为了后面算平均收入作准备
                mov        es:,        ax
                add        si,        2               
                mov        dx,                     ;这里特意让收入的高8位通过dx传送,是为了后面算平均收入作准备
                mov        es:,        dx        ;搬移收入
                add        si,        2
               
                mov        cx,                        ;人数通过cx传送,也是为后面算平均收入作准备
                mov        es:,        cx        ;搬移人数部分
                add        di,        2
                div        cx                        ;前面准备工作都做好了,只要div cx就算出了平均收入
                mov        es:,        ax        ;把商送入指定单元
                add        bp,        16                ;处理下一个年份的内容
                pop        cx                        ;计数数值出栈到cx中
                loop        s               
                mov        ax,        4c00h
                int        21h
codesg        ends
end        start

ArcherJhon 发表于 2011-11-13 23:48:31

沙发。。。表示我只学到了第五章。

ArcherJhon 发表于 2011-11-13 23:49:21

哦不。。是看到了第五章。。。还有很多还是学不明白。 话说为什么都不讲 od所显示的 eax ebx 多了个e呢? 这是什么区别

关键是感觉 发表于 2011-11-13 23:59:47

ArcherJhon 发表于 2011-11-13 23:49 static/image/common/back.gif
哦不。。是看到了第五章。。。还有很多还是学不明白。 话说为什么都不讲 od所显示的 eax ebx 多了个e呢? 这 ...

EAX 是32位寄存器
AX   是16为寄存器
为什么不讲,问问!小甲鱼大爷!你的知道了;P

关键是感觉 发表于 2011-11-14 00:00:55

嘿嘿, 学到 课程实验一 就难了。

ArcherJhon 发表于 2011-11-14 00:09:55

关键是感觉 发表于 2011-11-13 23:59 static/image/common/back.gif
EAX 是32位寄存器
AX   是16为寄存器
为什么不讲,问问!小甲鱼大爷!你的知道了

呃。好的 谢谢您

ArcherJhon 发表于 2011-11-14 12:29:22

学得真快撒。。

cfer 发表于 2011-11-14 16:07:36

自己专业也有好多课,都忙不过来了

snow9312 发表于 2011-11-16 10:09:03

在学校,两个月没学了,看了这例子,差不多复习好了。
页: [1]
查看完整版本: 第8章的实验,分享一下。。。