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

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
  •  如果不曾相逢,心绪也许不会如此沉重; 如果真的失之交臂,恐怕一生不得轻松.
  • 『姓名』:张垚                
  • 『性别』:保密  『发送消息
  • 个人说明:成功的路上--挺住
  • 详细信息『加为好友』
学习动态
好友圈
文章收藏
友情链接

[2008-11-26 11:26] 课程设计一

这个程序先后进行了几次修改,感觉现在还是比较简单的

;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;++                                                                                      ++
;++                       课程设计一(完成于08/11/23,修改于08/11/25)                     ++
;++                                                                                      ++
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


assume cs:code

  data segment

    db '1975','1976','1977','1978','1979','1980','1981','1982','1983'
    db '1984','1985','1986','1987','1988','1989','1990','1997','1992'
    db '1993','1994','1995'
    ;以上数据为年份记录(21年)

    dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
    dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000
    ;以上数据为年收入记录(对应上面21年)

    dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258
    dw 2793,4037,5635,8226,11542,14430,15257,17800
    ;以上数据为雇员人数(对应上面21年)

    db 10 dup (0)
    ;定义10字节的内存空间用来存放除法所得余数

  data ends

  code segment

    start:
      mov ax,0b800h
      mov ds,ax
      mov ax,data
      mov es,ax

      mov bx,01E8H                       ;设定显示的起始位置为4行4列
      mov si,0
      mov di,0
      mov cx,21
    
    lop:
      ;将年份写入显示缓冲区指定位置
      push si
      push di
      push cx
      mov cx,4
      mov si,0
      mov ah,71h                         ;设定年份显示为白底蓝字
    wry:
      mov al,es:[di]
      mov byte ptr [bx+si],al
      mov byte ptr [bx+si+1],ah
      inc di
      add si,2
      loop wry
      pop cx
      pop di
      pop si

      ;将年收入写入显示缓冲区指定位置
      mov dx,es:[di+86]                  ;取得年收入,存入DX和AX中
      mov ax,es:[di+84]
      call dtoc
      push si                 
      mov si,40                          ;取si存储显示间隔
      call show
      pop si

      ;将雇员人数写入显示缓冲区指定位置
      mov dx,0      
      mov ax,es:[si+168]                 ;取得雇员人数,存入AX中
      call dtoc
      push si
      mov si,80
      call show
      pop si

      ;将人均收入写入显示缓冲区指定位置
      mov dx,es:[di+86]                  ;取得年收入,存入DX和AX中
      mov ax,es:[di+84]
      div word ptr es:[si+168]
      mov dx,0
      call dtoc
      push si
      mov si,120
      call show
      pop si

      add bx,00a0h
      add si,0002h
      add di,0004h
      loop lop

      mov ax,4c00h
      int 21h

    dtoc:
      push cx
      push bx
      push si
      push di
      mov si,0
      mov di,0
      mov word ptr es:[di+218],0        ;将最后一个内存字空间用来存储被除数的长度
    dwi:
      push ax
      mov ax,dx
      mov dx,0
      mov cx,10
      div cx
      mov bx,ax
      pop ax
      div cx
      add dx,30h
      push dx
      inc si
      mov dx,bx
      mov cx,ax
      jcxz ow
      jmp short dwi
    ow:
      mov cx,si
      mov word ptr es:[di+218],cx
    wri:
      pop dx
      mov byte ptr es:[di+210],dl
      inc di
      loop wri
      pop di
      pop si
      pop bx
      pop cx
      ret      

    show:
      push cx
      push bx
      push di
      mov di,0
      mov ah,04h                         ;将年收入设置为红字
      mov cx,es:[di+218]
    s1:
      mov al,es:[di+210]
      mov [bx+si],al
      mov [bx+si+1],ah
      add bx,2
      inc di
      loop s1
      pop di
      pop bx
      pop cx
      ret   
      

  code ends

end start
评论次数(1)  |  浏览次数(444)  |  类型(汇编作业) |  收藏此文  | 

[  wsrf   发表于  2008-11-26 17:00  ]

博主继续努力。

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