彙編語言(王爽)實驗七

實驗七

Power idea公司從1975年到1995年的基本情況如下

年份 收入(千美元) 僱員 人均收入(千美元)
1975 16 3
1976 22 7
1977 382 9
1978 1356 13
1979 2390 28
1980 8000 38
…… …… ……
1995 5937000 17800

程序中已經定義好了這些數據,編程,將data段中的數據寫入到table段中,並計算人均收入(取整)

assume cs:codesg,ds:table,es: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

table segment
  db 21 dup ('year summ ne ?? ')
table ends

codesg segment
  start:  mov ax,data
          mov es,ax
    
          mov ax,table
          mov ds,ax
         
          mov bx,0
          mov si,0
          mov di,168
          
          mov cx,21
        s:mov ax,es:[si]      ; 存年份
          mov [bx].0h[0],ax   ; 大小爲兩個字
          mov ax,es:[si+2]    ; 所以要存兩次
          mov [bx].0h[2],ax

          mov ax,es:[si+84]   ; 存收入
          mov [bx].5[0],ax  
          mov ax,es:[si+86]   ; 同理,存兩次
          mov [bx].5[2],ax

          mov ax,es:[di]      ; 存僱員人數
          mov [bx].10[0],ax

          mov ax,es:[si+84]
          mov dx,es:[si+86]
          div word ptr es:[di]  ;因爲除數被除數都在內存中,要指明除數的長度
          mov [bx].13[0],ax
          
          add bx,10h 
          add si,4
          add di,2
          loop s

          mov ax,4c00h          ; 別忘了
          int 21h
codesg ends
end start

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章