. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->CALL和RET指令
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  课程设计1,思路  [待解决] 回复[ 5次 ]   点击[ 46次 ]  
geguoqing
[帖 主]   [ 发表时间:2024-01-29 14:53 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2024-01-16 11:54
ASSUME CS:CODE,DS:DATA

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  
 
stack segment  
   db 100 dup (0)  
stack ends
                                                                                                                                                

CODE SEGMENT    
START:
   MOV AX,DATA
   MOV DS,AX        
   mov ax,0b800h   
   mov es,ax          
   mov ax,stack
   mov ss,ax   
   mov sp,100          
   mov bx,0     
   mov di,160     
   mov si,0     
   mov bp,0         
   mov cx,21    

main:            
   push cx      
   call year    
   call income 
   call people  
   call average 
   add di,160   
   add si,4     
   add bp,2
   pop cx       
   loop main            

   mov ax,4c00h     
   int 21h    

year:            ;年份显示子程序-------------------------------------------------------
   mov cx,4      
   push ax       
   push si      
   push di       
   push bp
yearshow:   
   mov al,ds:[si]   
   mov ah,1      
   mov es:[di+4]
   inc si     
   add di,2     
   loop yearshow
   pop bp
   pop di     
   pop si     
   pop ax     
   ret

income:            ;收入显示子程序-----------------------------------------------------          
   push bx
   push bp
   push si
   push di
   push ax
   mov ax,ds:[si+84]
   mov dx,ds:[si+86]  
   mov bx,0
   mov bp,0
divdx:
   push ax
   mov ax,dx     ;
   mov dx,0     ;
   mov cx,ax
   jcxz divax
   mov cx,10
   div cx       ;
   mov bx,ax       
divax: pop ax
   mov cx,10
   div cx
   push dx       
   inc bp         
   mov cx,ax
   jcxz ok2       
   mov dx,bx    
   jmp divdx                   
ok2: 
   mov cx,bp    
incomeshow:
   pop ax
   mov ah,2
   add al,30h             
   mov es:[di+46],ax             
   add di,2
   loop incomeshow       
   pop ax 
   pop di
   pop si 
   pop bp
   pop bx      
   ret 
people:       ; 雇员子显示子程序-------------------------------------------------------     
   push bx    
   push di     
   push si    
   push bp 
   mov ax,ds:[bp+168]
peoplediv:       
   mov dx,0
   mov cx,10
   div cx
   push dx         
   inc bx         
   mov cx,ax     
   jcxz ok3     
   mov cx,10        
   jmp peoplediv  
ok3:
    mov cx,bx    
peopleshow:
   pop ax
   mov ah,3
   add al,30h    
   mov es:[di+90],ax             
   add di,2
   loop peopleshow    
   pop bp
   pop si
   pop di
   pop bx
   ret    
average:            ;人均收入显示子程序------------------------------------------------          
   push bx
   push bp
   push si
   push di
   push ax
   mov ax,ds:[si+84]
   mov dx,ds:[si+86]  
   mov bx,0      
divgw:
   push ax
   mov ax,dx     
   mov dx,0      
   mov cx,ax
   jcxz divdw
   mov cx,ds:[bp+168]
   div cx        
   mov bx,ax 
divdw: 
   pop ax
   mov cx,ds:[bp+168] 
   div cx     
   mov dx,bx           
   mov bx,0
   mov bp,0
div10H:
   push ax
   mov ax,dx     
   mov dx,0     
   mov cx,ax
   jcxz div10L
   mov cx,10
   div cx      
   mov bx,ax 
div10L: 
   pop ax
   mov cx,10
   div cx
   push dx        
   inc bp         
   mov cx,ax
   jcxz ok4       
   mov dx,bx    
   jmp div10H                               
ok4:  
   mov cx,bp     
averageshow:
   pop ax
   mov ah,4
   add al,30h             
   mov es:[di+140],ax            
   add di,2
   loop averageshow        
   pop ax 
   pop di
   pop si 
   pop bp
   pop bx      
   ret

CODE ENDS
    END START
geguoqing
[第1楼]   [ 回复时间:2024-01-29 14:56 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2024-01-16 11:54
1个主程序和4个子程序,循环21次。
geguoqing
[第2楼]   [ 回复时间:2024-01-29 14:58 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2024-01-16 11:54
设置1个栈段来保存寄存器状态和存放数值余数。
geguoqing
[第3楼]   [ 回复时间:2024-01-29 15:05 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2024-01-16 11:54
explanation 不写,才能上传
geguoqing
[第4楼]   [ 回复时间:2024-01-29 15:05 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2024-01-16 11:54
发贴真困难,总有不适合发表的信息
geguoqing
[第5楼]   [ 回复时间:2024-01-29 15:13 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2024-01-16 11:54
yearshow:   
   mov al,ds:[si]   
   mov ah,1      
   mov es:[di+4],ax ;原贴中少了ax
;第1列第3行没显示,是'press any ...'遮挡了,是调试软件的原因。
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved