. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->CALL和RET指令
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  我的课程设计1代码  [待解决] 回复[ 0次 ]   点击[ 123次 ]  
codinv
[帖 主]   [ 发表时间:2022-07-19 13:36 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2018-10-13 21:08
assume cs:code
data segment
        db '1975',0,'1976',0,'1977',0,'1978',0,'1979',0,'1980',0,'1981',0,'1982',0,'1983',0
        db '1984',0,'1985',0,'1986',0,'1987',0,'1988',0,'1989',0,'1990',0,'1991',0,'1992',0
        db '1993',0,'1994',0,'1995',0
        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 11452,14430,15257,17800
        db 9 dup (0)
        db 144 dup (0)
        db 96 dup (0)
        db 64 dup(0)
data ends
code segment
start:
                mov bx,data
                mov ds,bx

                call clear_screen

                mov dh,2
                mov dl,2
                mov si,0
                call show

salary:
                mov di,69h
                mov cx,21
                mov si,0f0h
salary_s:
                push cx
                mov ax,[di]
                mov dx,[di+2]

                call dtoc
                inc si

                add di,4
                pop cx
                loop salary_s
show_salary:
                mov dh,2
                mov dl,12
                mov si,0f0h
                call show

staff:
                mov di,0bdh
                mov cx,21
                mov si,180h
staff_s:
                push cx
                mov ax,[di]
                mov dx,0

                call dtoc
                inc si

                add di,2
                pop cx
                loop staff_s
show_staff:
                mov dh,2
                mov dl,22
                mov si,0180h
                call show

avg:
                mov cx,21
                mov si,01e0h
                mov bx,69h
                mov di,0bdh
avg_s:
                push cx
                mov ax,[bx]
                mov dx,[bx+2]
                mov cx,[di]
                div cx
                mov dx,0

                call dtoc
                inc si

                add bx,4
                add di,2
                pop cx
                loop avg_s
show_avg:
                mov dh,2
                mov dl,30
                mov si,01e0h
                call show
                

program_end:
                mov ax,4c00h
                int 21h




dtoc:
                push ax
                push bx
                push cx
                push dx
                push di

                mov cx,0ah
                mov bx,cx
                mov di,0
dtoc_s0:
                call divdw
                push cx
                inc di
                mov cx,ax
                add cx,dx
                jcxz dtoc_ok
                mov cx,bx
                jmp dtoc_s0
dtoc_ok:
                mov cx,di
dtoc_s1:
                pop dx
                add dx,30h
                mov [si],dl
                inc si
                loop dtoc_s1
                mov byte ptr [si],0

                pop di
                pop dx
                pop cx
                pop bx
                pop ax
                ret

divdw:
                push bx
                push ax

                mov ax,dx
                mov dx,0
                div cx

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

                mov dx,bx
                pop bx
divdw_ok:
                pop bx
                ret

clear_screen:
                push ax
                push cx
                push di

                mov ax,0b800h
                mov es,ax

                mov cx,0fa0h
                mov di,0
clear_screen1:
                mov byte ptr es:[di],20h
                mov byte ptr es:[di+1],0
                add di,2
                loop clear_screen1
clear_screen_ok:
                pop di
                pop cx
                pop ax
                ret


show_str:
                push ax
                push bx
                push dx
                push di
                push cx

                mov ax,0b800h
                mov es,ax

                mov cl,dh
                mov ch,0
                jcxz set_cols
                mov bx,0
set_rows:
                add bx,0a0h
                loop set_rows
set_cols:
                mov cl,dl
                mov ch,0
                jcxz set_str
        s:        add bx,2
                loop s

                mov di,0
set_str:
                mov cl,[si]
                mov ch,0
                jcxz show_str_ok
                mov es:[bx][di],cl
set_color:
                pop cx
                mov es:[bx][di+1],cl
                push cx
                inc si
                add di,2
                jmp set_str
show_str_ok:
                pop cx
                pop di
                pop dx
                pop bx
                pop ax
                ret

show:
                push bx
                push cx
                push dx
                push si
                mov bl,0fh
                mov cx,21
show_s:
                push cx
                mov cl,bl
                call show_str
                inc dh
                inc si
                pop cx
                loop show_s
show_ok:
                pop si
                pop dx
                pop cx
                pop bx
                ret

code ends
end start
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved