马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
 本帖最后由 leader4 于 2018-5-8 10:43 编辑  
 
汇编还是挺难学的,几乎每天进度只有2%~5%。不过终于把这本书看下去一半了。 
尤其是独立做完实验7,还是挺有成就感的。 
所以把答案在这里记录一下。 
虽然还有很多问题,但依旧很满足~ 
以后会再来精简代码吧~ 
 
- assume cs:codesg,ds:data,ss:stack,es:table
 
  
- data segment
 
 -         db '1975','1976','1977','1978','1979','1980','1981','1982','1983'
 
 -         db '1984','1985','1986','1987','1988','1989','1990','1991','1992'
 
 -         db '1993','1994','1995'
 
  
-         dd 16,22,382,1356,2390,8000,16000,244986,50065,97479,140417,197514
 
 -         dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000
 
  
-         dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226
 
 -         dw 11542,14430,15257,17800
 
 - data ends
 
  
- table segment
 
 -         db 21 dup ('year summ ne ?? ')
 
 - table ends
 
  
- stack segment
 
 -         db 16 dup (0)
 
 - stack ends
 
  
- codesg segment
 
 -         start:        mov ax,data
 
 -                         mov ds,ax
 
  
-                         mov ax,table
 
 -                         mov es,ax
 
  
-                         mov ax,stack
 
 -                         mov ss,ax
 
 -                         mov sp,16        ;分配段
 
 -                 
 
 -                         mov cx,21
 
 -                         mov si,0
 
 -                         mov di,0
 
 -                 s:        push cx
 
 -                         mov cx,2
 
 -                         mov bx,0
 
 -                     s0:     mov ax,[di+bx]
 
 -                         mov es:[si+bx],ax                ;年份
 
 -                         
 
 -                         mov ax,[di+bx+54H]
 
 -                         mov es:[si+bx+5],ax                 ;收入
 
 -                         add bx,2
 
 -                         loop s0
 
  
-                         add di,4
 
 -                         add si,16
 
 -                         pop cx
 
 -                         loop s                                
 
  
-                         mov cx,21
 
 -                         mov di,0
 
 -                         mov si,0
 
 -                 s1:        mov ax,[di+0a8H]
 
 -                         mov es:[si+0aH],ax                ;人数
 
 -                         add di,2
 
 -                         add si,16
 
 -                         loop s1
 
  
-                         mov cx,21
 
 -                         mov si,0
 
 -                 s2:        mov ax,es:[si+5]
 
 -                         mov dx,es:[si+5+2]
 
 -                         div word ptr es:[si+0aH]
 
 -                         mov es:[si+0dH],ax                ;平均
 
 -                         add si,16
 
 -                         loop s2
 
  
-                         mov ax,4c00h
 
 -                         int 21h
 
 - codesg ends
 
  
- end start
 
 
  复制代码 |