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 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119
| assume cs:code,ds:data,ss:stack
stack segment stack db 0,0,0,0,0,0,0,0 stack ends
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
code segment start: mov ax,data mov ds,ax mov ax,table mov es,ax mov ax,stack mov ss,ax mov sp,10h mov bx,0 mov bp,0 mov cx,21
s: push bx push cx push bx push cx mov si,0 mov di,0 mov cx,4
s1: mov al,ds:[bx][si] mov es:[bp][di],al inc si inc di loop s1
add bx,84 mov si,0 mov di,5 mov cx,4 s2: mov al,ds:[bx][si] mov es:[bp][di],al inc si inc di loop s2 mov bx,168 mov di,10 pop cx shl cx,1 mov dx,42 sub dx,cx add bx,dx mov cx,bx mov ax,ds:[bx] mov word ptr es:[bp][di],ax
pop bx add bx,84 mov ax,ds:[bx] mov dx,ds:[bx+2] mov bx,cx div word ptr ds:[bx] mov di,13 mov word ptr es:[bp][di],ax pop cx pop bx add bx,4 add bp,16 loop s
mov ax,4c00h int 21h
code ends
end start
|