zoukankan      html  css  js  c++  java
  • 王爽汇编 实验7 寻址方式在结构化数据访问中的应用

    Power idea 公司从1975年成立一直到1995年的基本情况如下。

    下面的程序中,已经定义好了这些数据:
     1 assume cs:code,ds:data,ss:stack
     2 
     3 data segment
     4 
     5         db    '1975','1976','1977','1978','1979','1980','1981','1982','1983'
     6         db    '1984','1985','1986','1987','1988','1989','1990','1991','1992'
     7         db    '1993','1994','1995'
     8         ;以上是表示21年的21个字符串 year
     9 
    10 
    11         dd    16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
    12         dd    345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000
    13         ;以上是表示21年公司总收入的21个dword数据    sum
    14 
    15         dw    3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226
    16         dw    11542,14430,15257,17800
    17 
    18 data ends
    19 
    20 table segment
    21             ;0123456789ABCDEF
    22     db    21 dup ('year summ ne ?? ')
    23 table ends
    24 
    25 stack segment stack
    26     db    128 dup (0)
    27 stack ends
    28 
    29 
    30 
    31 code segment
    32 
    33     start:    mov ax,stack
    34         mov ss,ax
    35         mov sp,128
    36 
    37 
    38 
    39         mov ax,4C00H
    40         int 21H
    41 
    42 
    43 
    44 code ends
    45 
    46 
    47 
    48 end start
    View Code

    下面是我写这个实验的答案

     1 assume cs:code,ds:data,ss:stack
     2 
     3 data segment
     4 
     5         db    '1975','1976','1977','1978','1979','1980','1981','1982','1983'
     6         db    '1984','1985','1986','1987','1988','1989','1990','1991','1992'
     7         db    '1993','1994','1995'
     8         ;以上是表示21年的21个字符串 year
     9 
    10 
    11         dd    0016,0022,0382,1356,2390,8000,16000,24486,50065,97479,140417,197514
    12         dd    345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000
    13         ;以上是表示21年公司总收入的21个dword数据    sum
    14 
    15         dw    3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226
    16         dw    11542,14430,15257,17800            ;雇员数
    17 
    18 data ends
    19 
    20 table segment
    21             ;0123456789ABCDEF
    22     db    21 dup ('year summ ne ?? ')
    23 table ends
    24 
    25 stack segment stack
    26     db    128 dup (0)
    27 stack ends
    28 
    29 
    30 
    31 code segment
    32 
    33     start:    
    34         mov ss,ax
    35         mov sp,128
    36         
    37         mov ax,data
    38         mov ds,ax
    39         
    40         mov ax,table
    41         mov es,ax
    42 
    43         mov si,0    ;年
    44         mov di,84    ;年收入
    45         mov bx,168    ;雇员
    46         mov bp,0
    47 
    48         ;循环21次        
    49         mov cx,21
    50 
    51         ;设置年
    52 inputTable:    push ds:[si]
    53         pop es:[bp]
    54         push ds:[si+2]
    55         pop es:[bp+2]
    56         
    57         ;除数问题
    58         mov ax,ds:[di]   ;低地址
    59         mov dx,ds:[di+2] ;高地址
    60         
    61         ;收入问题
    62         mov es:[bp + 5],ax
    63         mov es:[bp + 7],dx
    64 
    65         ;雇员数
    66         push ds:[bx]
    67         pop es:[bp + 0AH]
    68 
    69         ;0123456789ABCDEF
    70           ;('year summ ne ?? ')
    71         ;人均收入
    72         ;人均收入是用除法,可以用二种方式
    73         ;一种是内存方式 一种是寄存器的方式,由于寄存器占用太多,所以用内存的方式
    74         div word ptr ds:[bx]
    75         mov es:[bp + 0DH],ax
    76         
    77         add si,4
    78         add di,4
    79         add bx,2
    80         add bp,16
    81         loop inputTable
    82                     
    83         
    84         
    85 
    86         mov ax,4C00H
    87         int 21H
    88 
    89 
    90 
    91 code ends
    92 
    93 
    94 
    95 end start
    View Code

    运行效果:

    通过这个实验,我的收获是:

    1、当时在学校学数据结构这门课的时候,我只知道栈有一个先进先出这个特殊的性质,完成这个实验我发现栈还有一个重要性质 就是可以帮我们临时保留一些性质

    2、汇编这门课最重要是我们可以直接操作内存,根据这道题题目,我们只要知道数据从哪里来的,数据又要从哪里去,按这条线去想,稍微花一点心思是可以想出来了的。

  • 相关阅读:
    Odoo Entypo Regular Icon List
    Ubuntu 循环遍历当前目录下所有文本文件中的字符
    FairyGUI学习
    FairyGUI和NGUI对比
    热更新有多重要?游戏代码热更新杂谈
    收藏的链接
    Vuforia AR实战教程
    BleedTree动画混合树
    Unity3d导出安卓版本
    Unity+高通Vuforia SDK——AR
  • 原文地址:https://www.cnblogs.com/Yzengxin/p/14532215.html
Copyright © 2011-2022 走看看