鱼C论坛

 找回密码
 立即注册
查看: 2320|回复: 0

[汇编作业] 王爽老师 汇编语言 第二版 第一个课程设计MASM16位汇编源码分享

[复制链接]
发表于 2016-4-16 21:19:53 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
运行截图

ASSUME CS:CODES,DS:DATA,es:table
DATA SEGMENT
    db '1975','1976','1977','1978'
    db '1979','1980','1981','1982'
    db '1983','1984','1985','1986'
    db '1987','1988','1989','1990'
    db '1991','1992','1993','1994'
    db '1995' 
    
    dd 16,22,382,1356
    dd 2390,8000,16000,24486
    dd 50065,97479,140417,197514
    dd 345980,590827,803530,1183000
    dd 1843000,2759000,3753000,4649000
    dd 5937000
    
    dw 3,7,9,13,28,38,130,220
    dw 476,778,1001,1442,2258,2793,4037,5635
    dw 8226,11542,14430,15275,17800
     
DATA ENDS

color segment
        db 9,9,12,12,12,12,12,9,12,12,12,12,12,10,10,9,12,12,12,12,12,12,12,9,12,12,12,12,12,12,9,9
color ends

head segment
        db "||YEAR |VALUEK$| STAFF |SALARY||"
head ends

line segment
        db'|+-----+-------+-------+------+|'
line ends

table segment
        db 21 dup ('year summ ne ?? ')
table ends

cache segment
        db 10 dup (0)
cache ends

CODES SEGMENT
    
START:
    MOV AX,DATA
    MOV DS,AX
    mov ax,table
    mov es,ax
    mov si,0
    mov di,0    
    
    mov cx,15H
  s:mov bx,0
          mov ax,[bx+si]
          mov dx,[bx+si+2]
          mov es:[0],ax
          mov es:[2],dx
          
          mov bx,0a8H
          mov ax,[bx+di]
          mov es:[10],ax
          
          mov bx,54H
          mov ax,[bx+si]
          mov dx,[bx+si+2]
          mov es:[5],ax
          mov es:[7],dx
          
          div word ptr es:[10]
          mov es:[13],ax

    add di,2
    add si,4
    mov bx,es
    inc bx
    mov es,bx
    loop s
    
    mov ax,0b800h
    mov es,ax
    
    
    call title1
    call frame
    call main
    
    MOV AH,4CH
    INT 21H
    
    
title1:mov bx,color
           mov ds,bx
           mov ax,head
           sub ax,bx
           mov bx,10h
           mul byte ptr bl
           mov si,ax
           mov bx,0
           mov cx,32
           mov di,bx
        t1:mov ah,ds:[bx]
           mov al,ds:[bx+si]
           inc bx
           mov es:[di],ax
           add di,2
           loop t1
           ret
           
frame:mov ax,0b800h
          mov es,ax
          mov ax,0a0h
          mov di,ax
          call across
          call vertical
          call across
          ret
          
across:mov ax,line
           mov ds,ax
           xor bx,bx
           mov si,bx
           mov ah,9
           mov cx,32
        l1:mov al,ds:[si]
           mov es:[bx+di],ax
           add bx,2
           inc si
           loop l1
        ret
        
vertical:mov ax,097ch
                 mov dx,0
                 call v1
                 mov dx,2
                 call v1
                 mov dx,0eh
                 call v1
                 mov dx,1eh
                 call v1
                 mov dx,2eh
                 call v1
                 mov dx,3ch
                 call v1
                 mov dx,3eh
                 call v1
                 mov di,si
                 ret
                 
v1:mov bx,140h
   mov di,dx
   mov cx,21
v2:mov es:[bx+di],ax
   add bx,0a0h
   loop v2
   mov si,bx
   ret
   
main:mov ax,table
         mov ds,ax
         call year
         call value
         call staff
         call income
         ret
         
year:mov cx,21
         mov bx,140h
        y1:push cx
           mov cx,4
           mov si,0 
           mov ax,4
           mov di,ax
           mov ah,7
        y2:mov al,ds:[si]
           mov es:[bx+di],ax
           inc si
           add di,2
           loop y2
           pop cx
           mov ax,ds
           inc ax
           mov ds,ax
           add bx,0a0h
           loop y1
        ret

value:mov ax,table
          mov ds,ax
          mov si,0
          add si,5
          mov cx,21
          mov bx,10h
          add bx,140h
        v:push cx
          push ds
          push si
          push bx
          mov ax,ds:[si]
          mov dx,ds:[si+2]
          call divdw
          
          mov ax,cache
          mov ds,ax
          mov ah,7
          pop bx
          push bx
          mov cx,di
          mov di,0
          mov si,0
        v4:mov al,ds:[si]
           inc si
           mov es:[bx+di],ax
           add di,2
           loop v4
           
           pop bx
           add bx,0a0h
           pop si
           add si,10h
           pop ds
           pop cx
           loop v
        ret

staff:mov ax,table
          mov ds,ax
          mov si,0
          add si,10
          mov cx,21
          mov bx,22h
          add bx,140h
        s1:push cx
           push ds
           push si
           push bx
           mov ax,ds:[si]
           mov dx,0
           call divdw
          
          mov ax,cache
          mov ds,ax
          mov ah,7
          pop bx
          push bx
          mov cx,di
          mov di,0
          mov si,0
        s2:mov al,ds:[si]
           inc si
           mov es:[bx+di],ax
           add di,2
           loop s2
           
           pop bx
           add bx,0a0h
           pop si
           add si,10h
           pop ds
           pop cx
           loop s1
        ret

income:mov ax,table
          mov ds,ax
          mov si,0
          add si,0dh
          mov cx,21
          mov bx,32h
          add bx,140h
        i1:push cx
           push ds
           push si
           push bx
           mov ax,ds:[si]
           mov dx,0
           call divdw
          
          mov ax,cache
          mov ds,ax
          mov ah,7
          pop bx
          push bx
          mov cx,di
          mov di,0
          mov si,0
        i2:mov al,ds:[si]
           inc si
           mov es:[bx+di],ax
           add di,2
           loop i2
           
           pop bx
           add bx,0a0h
           pop si
           add si,10h
           pop ds
           pop cx
           loop i1
        ret

divdw:
          mov bx,10
          mov di,bx
          xor bx,bx
          xor cx,cx
        d:push ax
          mov ax,dx
          mov dx,0
          div word ptr di
          mov cx,ax
          pop ax
          div word ptr di
          inc bx
          add dx,30h
          push dx
          mov dx,cx
          jcxz d1
          jmp short d
        d1:mov cx,ax
           jcxz d2
           jmp short d
        d2:mov cx,bx
           mov di,bx
           mov bx,cache
           mov ds,bx
           xor bx,bx
        d3:pop ax
           mov ds:[bx],al
           inc bx
           loop d3
        ret

CODES ENDS
    END START

不知道怎样才能不显示press any key to continu...

不知道怎样才能不显示press any key to continu...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-19 10:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表