首页
社区
课程
招聘
[旧帖] [原创]把之前的作业贴上来,不知道可以转正不! 0.00雪花
发表于: 2012-12-28 23:08 1540

[旧帖] [原创]把之前的作业贴上来,不知道可以转正不! 0.00雪花

2012-12-28 23:08
1540
assume cs:code ,ds:data ,ss:stack

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'
;============================================================================
d2 dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
   dd 456980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000
;============================================================================
d3 dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226
   dw 11542,14430,15257,17800
;============================================================================
d4 dw 20 dup (0)
data ends
;============================================================================
stack segment
dw 20 dup (0)
stack ends
;============================================================================
;============================================================================
code segment
;============================================================================

strat:      mov ax,data
            mov ds,ax
            mov ax,0b800h
            mov es,ax
            mov ax,stack
            mov ss,ax
            mov sp,20
            ;-----------------初始化寄存器
            mov bx,160
            mov si,0
            mov di,0
            ;-----------------DI指向显存
            mov bp,offset d2
            ;-----------------BP指向D2
            mov cx,21
;=============================================================================            
                        ;显示日期
zhuxh:      call riqi
            
            
;=============================================================================
                        ;显示收入
                        
            push di
            xor di,di
            add di,30
            call shouru
            pop di
            ;----------------------写人数间距加20
;=============================================================================
                        ;显示人数
            push di
            xor di,di
            add di,60
            call renshu
            pop di
            ;----------------------与平均娄间距加20

;=============================================================================
                        ;显示平均
            push di
            xor di,di
            add di,90            
            call pingjun                                                      
            call dtoc
            ;----------------------结果转ASCII码
            call show_str
            pop di
            ;----------------------显示
;=============================================================================
            add bx,160
            mov di,0
            add si,2
            add bp,4
            loop zhuxh
                     
            mov ah,01
            int 21h
            
            
            
;=========                ====================================================
;==============================================================================
;==========================显示show_str========================================
show_str:   
            push bp
            push cx
            mov bp,offset d4
xssj:       mov cl,ds:[bp]
            mov ch,0
            inc bp
            jcxz xswk
            mov es:[bx+di],cl
            inc di
            mov word ptr es:[bx+di],2
            inc di
            jmp xssj
xswk:       pop cx
            pop bp
            
            ret
;==============================================================================
;==========================转换DTOC============================================
dtoc:       push si
            push di
            push bp
            push cx
            push bx
            mov bx,10
            mov si,0
            ;-----------保存数据
d_hys:      mov bp,ax
            ;-----------转移L位
            mov ax,dx
            xor dx,dx
            ;-----------H转AX D清零
            div bx
            ;-----------H/10
            mov di,ax
            ;-----------H结果=DI
            mov ax,bp
            ;-----------L重赋给AX
            div bx
            ;-----------REG+L/10  DX=余娄  H结果=DI
            ;===========          L结果AX
            
            mov cx,bp
            jcxz d_wk            
            ;-----------余数为空jmp 到出栈
            add dx,30h
            push dx
            inc si
            xor dx,dx
            ;------------余数+30H=ASCII
            mov dx,di
            ;------------H重赋给DX
            jmp d_hys
            ;------------判断H为0,不为0循环
            ;============          为0做L位除法
d_wk:       mov cx,si
            ;------------设定循环数
            jcxz d_ecs
            ;------------CX为0 jmpECS
            mov si,offset d4
            ;------------d4数据给SI        
d_cz:       pop ds:[si]
            inc si
            loop d_cz              
            ;-------------循环出栈

d_ecs:      pop bx
            pop cx
d_2:        pop bp
            pop di        
            pop si
            ret
;===============================================================================
;==========================除法divdd==========================================
divdd:      push si
            push bp
            push bx
            push cx
            ;-------------保存数据
            mov bp,ax
            ;-------------L转BP
            mov ax,dx
            mov dx,0
            ;-------------H给AX
            div bx
            ;-------------H/10
            mov si,ax
            ;-------------H结果给SI
            mov ax,bp
            ;-------------L重赋给AX
            div bx
            mov dx,si
            ;-------------H赋值给DX                        
            pop cx
            pop bx
            pop bp
            pop si  
            ret         
;==============================================================================
;==========================日期riqi============================================
riqi:       push si
            ;------------------保存数据
            ;push
            add si,si
            mov ax,ds:[si]
            mov ds:0d2h,ax
            mov ax,ds:2[si]
            mov ds:0d4h,ax
            mov word ptr ds:0d6h,0
            call show_str                                                               
            pop si
            ret  
;==============================================================================
;==========================收入shouru==========================================
shouru:     push si
            push bp
            ;------------------保存数据
            mov si,offset d4
            ;------------------d4=si
            mov ax,ds:[bp]
            mov dx,ds:2[bp]
            ;-------------------AX&DX赋值
            call dtoc
            call show_str
            ;-------------------转换ASCII&显示
            
            pop bp
            pop si
            ret  
;==============================================================================
;==========================人数renshu==========================================
renshu:     push si
            ;------------------保存数据
            ;mov dx,offset d3
            mov ax,ds:0a8h[si]   
            mov dx,0
            call dtoc
            call show_str
            pop si                     
;===============================================================================
;==========================平均pingjun==========================================
pingjun:    push si
            push bx
            push di
            push bp
            ;-------------------;保存数据
            mov ax,ds:[bp]
            mov dx,ds:2[bp]
            ;-------------------DX&AX赋值 被除数
            mov bx,ds:0A8H[si]
            ;-------------------BX赋值    除数
            call divdd
            
            
            pop bp
            pop di
            pop bx
            pop si
            ret
                                                           
code ends
end strat

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 56
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
没看懂
2012-12-29 17:53
0
雪    币: 7
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
用汇编 算一个平均数也能 转正吗。。。
2012-12-30 11:00
0
雪    币: 32
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
转正,其实去求问解答区最快。因为我自己就是如此,希望对你有帮助
2012-12-30 14:59
0
游客
登录 | 注册 方可回帖
返回
//