. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->CALL和RET指令
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  最笨的办法实现课程设计1,请各位大指点一下如何精简,谢谢了  [待解决] 回复[ 0次 ]   点击[ 275次 ]  
yang8930688
[帖 主]   [ 发表时间:2010-12-21 02:20 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:2
注册日期:2010-12-03 15:01
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,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 summ ne ?? ') 
table ends 
table2 segment 
db 21 dup ('year            ') 
table2 ends
table3 segment 
db 21 dup ('                ') 
table3 ends
table4 segment 
db 21 dup ('                ') 
table4 ends
table5 segment 
db 21 dup ('                ') 
table5 ends
codesg segment 
start: 
mov ax,data 
mov ds,ax
mov ax,table2
mov es,ax 
mov bx,0 
mov cx,21 
mov si,0 
mov di,0 
s: 
mov ax,[si+0a8h]
mov [0eah+di],ax 
mov ax,[bx]
mov [0e0h+di],ax
mov es:[di],ax
mov ax,[bx+2]
mov es:[di+2],ax

mov [0e2h+di],ax 
mov al,0
mov es:[di+4],al
mov ax,[bx+84] 
mov [0e5h+di],ax 
mov dx,[bx+86] 
mov [0e7h+di],dx 
div word ptr ds:[0eah+di]
mov ds:[0edh+di],ax 
add bx,4 
add di,16 
add si,2
loop s

mov ax,table
mov ds,ax 
mov ax,table3
mov es,ax
mov bx,0 
mov cx,21
mov si,0
s2:
mov di,0
mov ax,[si+5]
mov dx,[si+7]
push cx
call dtoc
pop cx
add si,16
loop s2
mov ax,table
mov ds,ax 
mov ax,table4
mov es,ax
mov bx,0 
mov cx,21
mov si,0
s3:
mov di,0
mov ax,[si+0ah]
mov dx,0
push cx
call dtoc
pop cx
add si,16
loop s3
mov ax,table
mov ds,ax 
mov ax,table5
mov es,ax
mov bx,0 
mov cx,21
mov si,0
s4:
mov di,0
mov ax,[si+0dh]
mov dx,0
push cx
call dtoc
pop cx
add si,16
loop s4
mov cx,21
mov si,0
mov dh,2
s5:
push cx
mov dl,3
mov cl,7
mov ax,table2
mov ds,ax
call show_str
mov dl,12
mov ax,table3
mov ds,ax
call show_str
mov dl,22
mov ax,table4
mov ds,ax
call show_str
mov dl,32
mov ax,table5
mov ds,ax
call show_str
add si,16
inc dh
pop cx
loop s5
     mov ax,4c00h
     int 21h


dtoc: mov cx,0ah
      call divdw
      add cx,30h
      push cx
      mov cx,ax
      inc di
      jcxz ok
      jmp short dtoc
   ok:
      mov cx,di
      mov bx,0
      s1:
        pop dx
        mov es:[bx+si],dx
        inc bx
      loop s1
ret
   divdw:
     push si
     mov bx,ax
     mov ax,dx
     mov dx,0
     div cx
     mov si,ax 
     mov ax,bx 
     div cx
     mov cx,dx 
     mov dx,si 
     pop si
     ret




show_str:
      push si
      push ax
      push bx
      push es
      push cx
      push bp
      mov ax,0b800h
      mov es,ax
      mov bx,0H
      mov bl,cl
      mov al,0a0H
      mul dh
      mov bp,ax
      mov al,2H
      mul dl
      add bp,ax
    ss1:
      mov cl,ds:[si]
      mov ch,0
      jcxz okk
      mov es:[bp],cl
      mov es:[bp+1],bl
      add bp,2
      inc si
      jmp short ss1
    okk:
      pop bp
      pop cx
      pop es
      pop bx
      pop ax
      pop si
      ret


codesg ends
end start

以上代码在WIN7下的CMD中的DEBUG中通过,能正常显示
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved