实验七是这本书上第一个比较综合的程序,要求把年份,员工数,收入,和平均工资对应填写在table表中。

开始的时候费了些脑子,但是后来发现自己把问题想复杂了,后来重新梳理了思路,写完代码,debug解决错误。贴这儿算是作个纪念吧

  1. assume cs:code  
  2.  
  3. data segment  
  4.    db '1975','1976','1977','1978','1979','1980','1981','1982','1983' 
  5.    db '1984','1985','1986','1987','1988','1989','1990','1991','1992' 
  6.    db '1993','1994','1995'   ;年份  
  7.      
  8.    dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514  
  9.    dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000  ;收入  
  10.      
  11.    dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226  
  12.    dw 11542,14430,15257,17800                   ;员工数  
  13. data ends  
  14.  
  15. table segment  
  16.    db 21 dup ('year summ ne ?? ')  
  17. table ends  
  18.  
  19. code segment  
  20. start:  
  21.         mov ax,data  
  22.   mov ds,ax  
  23.   mov bx,168  
  24.   mov si,0  
  25.   mov di,0  
  26.   mov ax,table 
  27.   mov es,ax               ;初始化  
  28.     
  29.   mov cx,21  
  30. s:  
  31.         mov ax,[si]  
  32.         mov es:[di],ax  
  33.         mov ax,[si+2]  
  34.   mov es:[di+2],ax         ;年份  
  35.     
  36.   mov bp,[bx]  
  37.   mov es:[di+0ah],bp       ;员工数  
  38.     
  39.   mov ax,[84+si]  
  40.   mov es:[di+5],ax  
  41.   mov dx,[86+si]  
  42.   mov es:[di+7],dx         ;收入  
  43.  
  44.   div bp  
  45.   mov es:[di+0dh],ax     ;平均收入  
  46.   add si,4  
  47.   add bx,2  
  48.   add di,10h  
  49.   loop s  
  50.     
  51.   mov ax,4c00h  
  52.   int 21h  
  53. code ends  
  54. end start  
  55.  
  56.  
  57.