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

我的博客

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

[2011-12-03 17:08] 课程设计1

花了两天十几个小时终于完成了,太苦了,坐在电脑前脚冰凉的,看了屏幕显示出最后的结果,心里有所安慰了。
assume cs:code
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,3735000,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
  
zhongj  segment
db 10 dup (0)
zhongj ends

stack segment
 dw 0,0,0,0,0,0,0,0
stack ends

code segment
start:
   mov ax,data
   mov ds,ax
   mov cx,21
   mov ax,stack
   mov ss,ax
   mov sp,10h
   mov bx,0
   mov ax,table
   mov es,ax
   mov di,0
   mov bp,0
s0:
   push cx
   mov cx,4
   mov si,0 
  s1:
    mov al,ds:[bp+si]
    mov es:[bx+si],al
    inc si
    loop s1           ;年份    
    
    mov cx,2
    mov si,0
  s2:
    mov ax,ds:[bp+84+si]
    mov es:[bx+5+si],ax
    add si,2
    loop s2           ;雇员
          
    mov ax,ds:[di+168]
    mov es:[bx+10],ax   ;收入
        
    mov dx,es:[bx+7]
    mov ax,es:[bx+5]
    div word ptr es:[bx+10]
    mov word ptr es:[bx+13],ax  ;人均

    add bp,4
    add di,2
    add bx,10h
    pop cx
    loop s0
    

  ;_________以上实验7______________________


 mov  bp,0
 mov di,0
 mov cx,21  



zs: push cx
    push di
   
    mov si,0
    mov ax,table
    mov ds,ax
    mov ax,0b800h
    mov es,ax
    mov bx,0
     mov cx,4
shu1:mov al,ds:[bx+di]
     mov es:[4+si+bp],al
     inc bx
     add si,2
     loop shu1      ;输出年份

  ;-------------------------------------------------
 mov ax,table
 mov es,ax
 mov ax,zhongj
 mov ds,ax
 
mov bx,0
mov cx,10
pop di

mov al,es:[bx+di+5]
inc bx
mov ah,es:[bx+di+5]
inc bx
mov dl,es:[bx+di+5]
inc bx
mov dh,es:[bx+di+5]
push di
mov di,0
call dtoc      ;收入转换


mov ax,0b800h
mov es,ax

      mov si,0
      mov bx,0
      mov cx,di
shu2: mov al,ds:[bx]
      mov es:[48+si+bp],al
      inc bx
      add si,2
     loop shu2    ;收入输出
;------------------------------------------------
 
mov ax,table
mov es,ax
mov ax,zhongj
mov ds,ax

pop di
mov bx,0
mov cx,10
mov al,es:[bx+di+10]
inc bx
mov ah,es:[bx+di+10]
mov dx,0
push di
mov di,0
call dtoc      ; 雇员转换


mov ax,0b800h
mov es,ax

 mov si,0
      mov bx,0
      mov cx,di
    shu3:  mov al,ds:[bx]
      mov es:[94+si+bp],al
      inc bx
      add si,2
      loop shu3    ;雇员输出
;---------------------------------------------------
mov ax,table
 mov es,ax
 mov ax,zhongj
 mov ds,ax

pop di
mov bx,0
mov cx,10
mov al,es:[bx+di+13]
inc bx
mov ah,es:[bx+di+13]
mov dx,0
push di
mov di,20
call dtoc   ;人均转换



mov ax,0b800h
mov es,ax 
 mov si,0
     mov bx,0
     mov cx,di
    shu4: mov al,ds:[bx]
     mov es:[136+si+bp],al
     inc bx
     add si,2
    loop shu4        ;人均输出

;--------------------------------------------
pop di
add bp,160
add di,16
pop cx
sub cx,1
jcxz jieshu
jmp zs

 jieshu:   mov ax,4c00h
           int 21h
;------------------------------------


   dtoc:
        mov si,0
      s:call divdw
                        
        push dx   ;将余数入栈保存
        push cx   ;将cx(除数)保存         
        inc si    ; 累加除法次数
        mov dx,bx  ;高16位送入
        mov cx,bx  ;高16位送入进行判断
        jcxz bk    ;如为0再判断低16位
        pop cx
        jmp s

        bk:
        mov cx,ax
        jcxz ok    ;低16位如为0则跳出
        pop cx
        jmp s
          
     ok:
        mov bx,0        
        pop cx
        mov cx,si
        mov di,si
       baocun:
             pop  ax
             add al,30h
             mov ds:[bx],al
            
             inc bx
            loop baocun    ;将转换后的十进制字符保存
         
        ret
     ;--------------------------------              


divdw:
        mov bx,ax
        mov ax,dx
        mov dx,0
        div cx    ; 完成公式前部分
        push ax   ;将商高16位入栈,余数在dx中
        mov ax,bx ;将原始数的低16位送入
        div cx     ; 完成公式后部分
        pop bx   ;将商高16位出栈到bx
        ret
code ends

end start





后记:
     爱因斯坦将牛顿作为偶像,结果他推翻了牛顿;我将爱因斯坦作为偶像,我却什么也推翻不了,人生不要好高骛远,只有试着战胜自己了,今天最后终于成功了,几次思路堵塞想参考别人的,最后想着还是挑战一下自己吧,还好,有了结果。哈哈,调侃一下,枯燥的学习之后,放松下自己,也正好留个纪念。
昨天看了纪实片《爱因斯坦》,在这里向伟大的科学家们致敬!没有他们,我们估计还生活在石器时代,更不要说上汇编网学习了,见笑了。
评论次数(1)  |  浏览次数(825)  |  类型(汇编作业) |  收藏此文  | 

[  tomato   发表于  2011-12-03 20:46  ]

博主的学习状态和完成后的心情很能理解,都是这么过来的。辛苦了!不过收获很大啊!这印证了一句话,风雨后见彩虹。学习计算机就是这样克服一个又一个的困难,过关斩将这样一路过来的。迎接风雨,迎接挑战!博主加油!只有靠博主自己,别人最多给你些鼓励!坚持下去,不要轻易放弃!

 
 请输入验证码  (提示:点击验证码输入框,以获取验证码