鱼C论坛

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

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

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

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

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

x
运行截图


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

  22. color segment
  23.         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
  24. color ends

  25. head segment
  26.         db "||YEAR |VALUEK$| STAFF |SALARY||"
  27. head ends

  28. line segment
  29.         db'|+-----+-------+-------+------+|'
  30. line ends

  31. table segment
  32.         db 21 dup ('year summ ne ?? ')
  33. table ends

  34. cache segment
  35.         db 10 dup (0)
  36. cache ends

  37. CODES SEGMENT
  38.    
  39. START:
  40.     MOV AX,DATA
  41.     MOV DS,AX
  42.     mov ax,table
  43.     mov es,ax
  44.     mov si,0
  45.     mov di,0   
  46.    
  47.     mov cx,15H
  48.   s:mov bx,0
  49.           mov ax,[bx+si]
  50.           mov dx,[bx+si+2]
  51.           mov es:[0],ax
  52.           mov es:[2],dx
  53.          
  54.           mov bx,0a8H
  55.           mov ax,[bx+di]
  56.           mov es:[10],ax
  57.          
  58.           mov bx,54H
  59.           mov ax,[bx+si]
  60.           mov dx,[bx+si+2]
  61.           mov es:[5],ax
  62.           mov es:[7],dx
  63.          
  64.           div word ptr es:[10]
  65.           mov es:[13],ax

  66.     add di,2
  67.     add si,4
  68.     mov bx,es
  69.     inc bx
  70.     mov es,bx
  71.     loop s
  72.    
  73.     mov ax,0b800h
  74.     mov es,ax
  75.    
  76.    
  77.     call title1
  78.     call frame
  79.     call main
  80.    
  81.     MOV AH,4CH
  82.     INT 21H
  83.    
  84.    
  85. title1:mov bx,color
  86.            mov ds,bx
  87.            mov ax,head
  88.            sub ax,bx
  89.            mov bx,10h
  90.            mul byte ptr bl
  91.            mov si,ax
  92.            mov bx,0
  93.            mov cx,32
  94.            mov di,bx
  95.         t1:mov ah,ds:[bx]
  96.            mov al,ds:[bx+si]
  97.            inc bx
  98.            mov es:[di],ax
  99.            add di,2
  100.            loop t1
  101.            ret
  102.           
  103. frame:mov ax,0b800h
  104.           mov es,ax
  105.           mov ax,0a0h
  106.           mov di,ax
  107.           call across
  108.           call vertical
  109.           call across
  110.           ret
  111.           
  112. across:mov ax,line
  113.            mov ds,ax
  114.            xor bx,bx
  115.            mov si,bx
  116.            mov ah,9
  117.            mov cx,32
  118.         l1:mov al,ds:[si]
  119.            mov es:[bx+di],ax
  120.            add bx,2
  121.            inc si
  122.            loop l1
  123.         ret
  124.        
  125. vertical:mov ax,097ch
  126.                  mov dx,0
  127.                  call v1
  128.                  mov dx,2
  129.                  call v1
  130.                  mov dx,0eh
  131.                  call v1
  132.                  mov dx,1eh
  133.                  call v1
  134.                  mov dx,2eh
  135.                  call v1
  136.                  mov dx,3ch
  137.                  call v1
  138.                  mov dx,3eh
  139.                  call v1
  140.                  mov di,si
  141.                  ret
  142.                  
  143. v1:mov bx,140h
  144.    mov di,dx
  145.    mov cx,21
  146. v2:mov es:[bx+di],ax
  147.    add bx,0a0h
  148.    loop v2
  149.    mov si,bx
  150.    ret
  151.    
  152. main:mov ax,table
  153.          mov ds,ax
  154.          call year
  155.          call value
  156.          call staff
  157.          call income
  158.          ret
  159.          
  160. year:mov cx,21
  161.          mov bx,140h
  162.         y1:push cx
  163.            mov cx,4
  164.            mov si,0
  165.            mov ax,4
  166.            mov di,ax
  167.            mov ah,7
  168.         y2:mov al,ds:[si]
  169.            mov es:[bx+di],ax
  170.            inc si
  171.            add di,2
  172.            loop y2
  173.            pop cx
  174.            mov ax,ds
  175.            inc ax
  176.            mov ds,ax
  177.            add bx,0a0h
  178.            loop y1
  179.         ret

  180. value:mov ax,table
  181.           mov ds,ax
  182.           mov si,0
  183.           add si,5
  184.           mov cx,21
  185.           mov bx,10h
  186.           add bx,140h
  187.         v:push cx
  188.           push ds
  189.           push si
  190.           push bx
  191.           mov ax,ds:[si]
  192.           mov dx,ds:[si+2]
  193.           call divdw
  194.           
  195.           mov ax,cache
  196.           mov ds,ax
  197.           mov ah,7
  198.           pop bx
  199.           push bx
  200.           mov cx,di
  201.           mov di,0
  202.           mov si,0
  203.         v4:mov al,ds:[si]
  204.            inc si
  205.            mov es:[bx+di],ax
  206.            add di,2
  207.            loop v4
  208.           
  209.            pop bx
  210.            add bx,0a0h
  211.            pop si
  212.            add si,10h
  213.            pop ds
  214.            pop cx
  215.            loop v
  216.         ret

  217. staff:mov ax,table
  218.           mov ds,ax
  219.           mov si,0
  220.           add si,10
  221.           mov cx,21
  222.           mov bx,22h
  223.           add bx,140h
  224.         s1:push cx
  225.            push ds
  226.            push si
  227.            push bx
  228.            mov ax,ds:[si]
  229.            mov dx,0
  230.            call divdw
  231.           
  232.           mov ax,cache
  233.           mov ds,ax
  234.           mov ah,7
  235.           pop bx
  236.           push bx
  237.           mov cx,di
  238.           mov di,0
  239.           mov si,0
  240.         s2:mov al,ds:[si]
  241.            inc si
  242.            mov es:[bx+di],ax
  243.            add di,2
  244.            loop s2
  245.           
  246.            pop bx
  247.            add bx,0a0h
  248.            pop si
  249.            add si,10h
  250.            pop ds
  251.            pop cx
  252.            loop s1
  253.         ret

  254. income:mov ax,table
  255.           mov ds,ax
  256.           mov si,0
  257.           add si,0dh
  258.           mov cx,21
  259.           mov bx,32h
  260.           add bx,140h
  261.         i1:push cx
  262.            push ds
  263.            push si
  264.            push bx
  265.            mov ax,ds:[si]
  266.            mov dx,0
  267.            call divdw
  268.           
  269.           mov ax,cache
  270.           mov ds,ax
  271.           mov ah,7
  272.           pop bx
  273.           push bx
  274.           mov cx,di
  275.           mov di,0
  276.           mov si,0
  277.         i2:mov al,ds:[si]
  278.            inc si
  279.            mov es:[bx+di],ax
  280.            add di,2
  281.            loop i2
  282.           
  283.            pop bx
  284.            add bx,0a0h
  285.            pop si
  286.            add si,10h
  287.            pop ds
  288.            pop cx
  289.            loop i1
  290.         ret

  291. divdw:
  292.           mov bx,10
  293.           mov di,bx
  294.           xor bx,bx
  295.           xor cx,cx
  296.         d:push ax
  297.           mov ax,dx
  298.           mov dx,0
  299.           div word ptr di
  300.           mov cx,ax
  301.           pop ax
  302.           div word ptr di
  303.           inc bx
  304.           add dx,30h
  305.           push dx
  306.           mov dx,cx
  307.           jcxz d1
  308.           jmp short d
  309.         d1:mov cx,ax
  310.            jcxz d2
  311.            jmp short d
  312.         d2:mov cx,bx
  313.            mov di,bx
  314.            mov bx,cache
  315.            mov ds,bx
  316.            xor bx,bx
  317.         d3:pop ax
  318.            mov ds:[bx],al
  319.            inc bx
  320.            loop d3
  321.         ret

  322. CODES ENDS
  323.     END START
复制代码

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

不知道怎样才能不显示press any key to continu...
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-6 09:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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