汇编网首页登录博客注册
zwjq的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
学习动态
文章收藏

[2010-08-27 18:51] 课程设计1(热烈祝贺,虽然写的很辛苦,280行,有些笨,谢谢评论)

图片载入中
assume cs:codesg
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,2753000,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

chart segment
dd 500 dup (0)
chart ends            ;用来存放表格数据

codesg segment
start:
mov ax,data
mov es,ax

mov ax,table
mov ds,ax

mov bx,0
mov di,0
mov cx,21
s: mov dx,cx
   mov si,0
   
   mov cx,4
s0: mov al,es:[di]
    mov [si+bx],al
    inc si
    inc di
loop s0
    add bx,16
    mov cx,dx
loop s

mov bx,0
mov si,5
mov cx,21
s1:mov ax,es:[di]
   add di,2
   mov dx,es:[di]
   add di,2
   mov [bx+si],ax
   mov [bx+si+2],dx
   add bx,16
loop s1

mov bx,0
mov si,10
mov cx,21
s2:mov ax,es:[di]
   mov [si+bx],ax
   add di,2
   add bx,16
loop s2

mov bx,0
mov cx,21
s3:mov ax,[bx+5]
   mov dx,[bx+7]
div word ptr [bx+10]
   mov [bx+13],ax
   add bx,16
loop s3               ;table结束啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦拉拉啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦啦
                                                                       ;把年份送入chart
mov ax,chart    
mov es,ax
mov cx,21       ;定义循环次数
mov di,0        ;chat里面的
mov bx,0        ;table里面的
s5: mov ax,[bx]
    mov es:[di],ax
    mov ax,[bx+2]
    mov es:[di+2],ax
    add bx,10h
    add di,50h
loop   s5

                                                                       ;把收入写入chart      

   mov ax,chart    
   mov es,ax    
   mov ax,0   
   mov ds,ax               
   mov bx,0
mov cx,21
s4:mov byte ptr ds:[200h],21
   sub ds:[200h],cl
   mov ax,table   
   mov ds,ax   
   mov ax,[bx+5]
   mov dx,[bx+7]
   mov di,0
   call dtoc
dtoc: push ax
      push bx
      push cx
      push dx
      push si
      push di
change_1:mov cx,10     ;设置除数
       call divdw      ;调用防止除法溢出函数
       push cx         ;保存一下余数
       inc di
       mov  cx,ax      ;把商赋给cx
       jcxz ok_1       ;商为0时,结束循环    
       
       jmp short change_1
  ok_1:
       mov cx,di
       mov ax,0   
       mov ds,ax
       mov si,ds:[200h]
       mov ax,50h
       mul si
       mov si,ax       ;si标志chart里的位置
  ok_2:
       pop es:[si+10h]   ;出栈
       add byte ptr es:[si+10h],30h
       inc si
       loop ok_2
       pop di
       pop si
       pop dx
       pop cx
       pop bx
       pop ax
       jmp short s_3
   s_3:
       add bx,16
       loop s4
       jmp short s_5                                                    
divdw:          ;防止除法溢出的函数
mov bx,ax
mov ax,dx
mov dx,0
div cx

push ax
mov ax,bx
div cx
mov cx,dx
pop dx
ret

s_5:                                                       
                                             ;把雇员数送入chart
   mov ax,chart    
   mov es,ax  
   mov ax,0   
   mov ds,ax               
   mov bx,0
   mov cx,21
s2_4:mov byte ptr ds:[200h],21
   sub ds:[200h],cl
   mov ax,table   
   mov ds,ax   
   mov ax,[bx+0ah]
   mov dx,0
   mov di,0
   call dtoc_1      
 dtoc_1:push dx 
        push ax 
        push bx 
        push cx 
        push si 
        push di
   s2_1: 
      mov cx,0ah 
      div cx     
      inc di
      push dx 
      mov dx,0
      mov cx,ax
      jcxz ok1  
      jmp s2_1 
       
      ok1:mov cx,di ;记录循环次数
          mov ax,0
          mov ds,ax
          mov si,ds:[200h]
          mov ax,50h
          mul si
       mov si,ax       ;si标志chart里的位置
      OK2:
         pop es:[si+20h]
         add byte ptr es:[si+20h],30h 
         inc si 
         loop ok2 
         pop di
         pop si 
         pop cx 
         pop bx 
         pop ax 
         pop dx 
         jmp short s2_6
   s2_6:
       add bx,16
       loop s2_4
       jmp short s2_7 
s2_7:                                                             ;把人均收入数送入chart
   mov ax,chart    
   mov es,ax  
   mov ax,0   
   mov ds,ax               
   mov bx,0
   mov cx,21
s3_4:mov byte ptr ds:[200h],21
   sub ds:[200h],cl
   mov ax,table   
   mov ds,ax   
   mov ax,[bx+0dh]
   mov dx,0
   mov di,0
   call dtoc_2      
 dtoc_2:push dx 
        push ax 
        push bx 
        push cx 
        push si 
        push di
   s3_1: 
      mov cx,0ah 
      div cx     
      inc di
      push dx 
      mov dx,0
      mov cx,ax
      jcxz ok31  
      jmp s3_1 
       
      ok31:mov cx,di ;记录循环次数
          mov ax,0
          mov ds,ax
          mov si,ds:[200h]
          mov ax,50h
          mul si
       mov si,ax       ;si标志chart里的位置
      OK32:
         pop es:[si+30h]
         add byte ptr es:[si+30h],30h 
         inc si 
         loop ok32 
         pop di
         pop si 
         pop cx 
         pop bx 
         pop ax 
         pop dx 
         jmp short s3_6
   s3_6:
       add bx,16
       loop s3_4
       jmp short s3_7  
s3_7:                   ;开始显示字符           
mov ax,0b800h
mov ds,ax
mov si,0
mov di,0
mov cx,4000
s4_1:mov al,es:[di]
     mov [si],al
     mov byte ptr [si+1],7
     add si,2
     inc di
     loop s4_1
mov ax,4c00h
int 21h      

codesg ends 
end start
评论次数(0)  |  浏览次数(810)  |  类型(汇编作业) |  收藏此文  | 
 
 请输入验证码  (提示:点击验证码输入框,以获取验证码