All pastes #1776703 Raw Edit

Something

public text v1 · immutable
#1776703 ·published 2010-02-03 05:29 UTC
rendered paste body
assume cs:code,ds:data,ss:stack

data segment
     db 16 dup (0)
     db '1975','1976','1977','1978','1979','1980','1981','1982','1983','1984','1985','1986','1987','1988','1989','1990','1991','1992','1993','1994','1995'
     db 12 dup (0)
     dd 16,22,382,1356,2390,8000,16000,24486,50065,9749,149417,197514,345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000
     db 12 dup (0)
     dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,7226,11542,14430,15257,17800,0,0
data ends

stack segment
    db 32 dup (0)
stack ends

code segment
       start:  
               call cleal_monitor
               
               mov dh,2                   ;↓
               mov dl,3                   ;确定字符串首字符显示的位置。
               mov cl,7                   ;显示属性	
               mov ax,data                
               mov ds,ax                  ;ds指向data段
               mov si,0                   ;si指向数据段的段首
     
               
     show_age: mov bx,ds:[si+16]
               mov ds:[0],bx
               mov bx,ds:[si+18]
               mov ds:[2],bx
               
               call show_str
               
               mov ax,cx
               mov cx,bx
               jcxz over_loop
               mov cx,ax
               add si,4
               inc dh
               jmp show_age
               
    over_loop: mov cx,ax
               
               
               mov di,0
               mov si,0
               mov dh,2
               mov dl,40
               mov cx,21              
      comnop_s: mov bx,cx
               mov ax,ds:[di+208]
               call dtoc
               add di,2
               
               mov cl,7
               call show_str
               inc dh
               mov cx,bx
               loop comnop_s
               
               
               mov di,0
               mov si,0
               mov dh,2
               mov dl,40
               mov cx,21              
     profit_s: mov bx,cx
               mov ax,ds:[di+112]
               mov dx,ds:[di+114]
               mov cx,0
               mov cl,0ah
               call dtocdw
               add di,2
               
               mov cl,7
               call show_str
               inc dh
               mov cx,bx
               loop profit_s
               
               
               
               
               
               
               
               
               
               mov ax,0
               int 16h
               mov ax,4c00h
               int 21h           


cleal_monitor: push ax
               push cx
               push es
               push si
               
               mov ax,0b800h
               mov es,ax
               
               mov cx,7d0h       
               mov si,0
       cle_s:  mov al,0
               mov es:[si],al
               add si,2
               loop cle_s
               
               pop si
               pop es
               pop cx
               pop ax
               
               ret
    
     show_str: push ax
               push bx
			   push cx
               push dx
               push es
               push ds
               push bp
               push si

               mov ax,0b800h
               mov es,ax
               mov ax,0
               mov al,dl
               mov bl,2
               mul bl
               mov si,ax
               mov al,0a0h
               mov ah,0
               mov bl,dh
               mul bl
               mov bp,ax
               mov dx,cx

               mov bx,0
               mov ax,0
  show_str_s:  mov al,ds:[bx]
               mov es:[bp][si],al
               inc si
               mov cx,ax
               mov al,dl
               mov es:[bp][si],al
               inc si
               inc bx
               inc cx
               loop show_str_s

               pop si
               pop bp
               pop ds
               pop es
               pop dx
               pop cx
               pop bx
               pop ax
 
               ret
           
        dtoc:  push si
               push dx
               push cx
               push bx
               push ax
   
               mov dx,0
               mov bx,0
               mov cx,0
               mov bl,0ah
      dtoc_s0: div bx
               add dl,30h
               push dx
               mov dx,0
               mov cx,ax
               inc cx
               inc si
               loop dtoc_s0

               mov cx,si
               mov si,0
     dtoc_s1:  pop dx
               mov ds:[si],dl
               inc si
               loop dtoc_s1
               mov ds:[si],dh

               pop ax
               pop bx
               pop cx
               pop dx
               pop si

               ret


     dtocdw:   push si
               push dx
               push cx
               push bx
               push ax

               mov si,0
  dtocdw_s0:   mov bx,ax             ;将ax中的数据入栈,ax中是被除数的低位
               mov ch,0
               mov ax,dx           ;将在dx中的被除数的高位,放入ax
               mov dx,0
               div cl             ;除法
               
               mov dl,ah           ;将
               mov dh,0            ;   
               mov ah,0            ;    
               push ax             ;   
               mov ax,bx           ;       
               mov dx,0
               mov bl,cl           ;         
               mov bh,0            ;       
               div bx              ;     
               mov cx,dx           ;      
               pop dx              ;    
               
               
               add dl,30h          ;      
               push dx             ;      
               mov dx,0            ;        
               mov cx,ax           ;         
               inc cx              ;       
               inc si              ;    
               loop dtocdw_s0      ;     0  
               
               mov cx,si
               mov si,0
   
   dtocdw_s1:  pop dx
               mov ds:[si],dl
               inc si
               loop dtocdw_s1
               mov ds:[si],dh

               pop ax
               pop bx
               pop cx
               pop dx
               pop si

               ret
            

            


code ends
end start