1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
| assume cs:code,ss:stack,ds:data
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, 24486, 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 sumn ne ?? ') table ends
stack segment dw 8 dup (0) stack ends
code segment main: mov ax,data mov ds,ax mov ax,table mov es,ax mov ax,stack mov ss,ax mov sp,10H
;复制年份到table中 mov si,0 mov di,0 mov cx,21 s1: mov ax,ds:[si] mov es:[di],ax mov ax,ds:[si+2] mov es:[di+2],ax mov al,20H ;存储空格到table中的对应位置 mov es:[di+4],al add si,4 add di,10H loop s1
;复制收入到table中 mov si,84 mov di,5 mov cx,21 s2: mov ax,ds:[si] mov es:[di],ax mov ax,ds:[si+2] mov es:[di+2],ax mov al,20H mov es:[di+4],al add si,4 add di,10H loop s2
;复制人数到table中 mov si,168 mov di,10 mov cx,21 s3: mov ax,ds:[si] mov es:[di],ax mov al,20H mov es:[di+2],al add si,2 add di,10H loop s3
;计算人均收入 mov bx,0 mov cx,21 s4: mov ax,es:[bx+5] ;除数是dw,16位,所以被除数应该是32位,使用DX:AX来存储 mov dx,es:[bx+7] div word ptr es:[bx+10];显式地告诉编译器,除数是16位,字型 mov es:[bx+13],ax ;商存储在ax中,余数存储在dx中 mov al,20H mov es:[bx+15],al add bx,10H loop s4
mov ax,4c00H int 21H code ends end main
|